From: Boyuan Yang Date: Sat, 30 Jul 2022 19:39:05 +0000 (+0100) Subject: Import easyeffects_6.2.8.orig.tar.gz X-Git-Tag: archive/raspbian/6.3.0-1+rpi1~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b3677eb8ff96a5ede059ceb19150143c9790e009;p=easyeffects.git Import easyeffects_6.2.8.orig.tar.gz [dgit import orig easyeffects_6.2.8.orig.tar.gz] --- b3677eb8ff96a5ede059ceb19150143c9790e009 diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..1a15b8d --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,138 @@ +version: 2.0 + +jobs: + archlinux: + docker: + - image: archlinux:latest + auth: + username: wellingtonwallace + password: $DOCKERHUB_PASSWORD + environment: + LANG: C + DISPLAY: :10 + G_MESSAGES_DEBUG: easyeffects + steps: + - run: date +%F > /tmp/date + - run: | + mkdir -p pacman_cache /root/.ccache + pacman -Sy --noconfirm + # circleci cache needs tar + pacman -S tar --noconfirm + - restore_cache: + keys: + - pacman-cache-{{ checksum "/tmp/date" }} + - run: | + pacman -Su --cachedir pacman_cache --noconfirm + pacman -S --cachedir pacman_cache --noconfirm pkg-config git gcc meson itstool boost appstream-glib gettext gtk4 glib2 pipewire pipewire-pulse libsigc++-3.0 libsndfile libsamplerate zita-convolver libebur128 lilv lv2 calf zam-plugins rubberband mda.lv2 lsp-plugins rnnoise fftw libbs2b speexdsp nlohmann-json xorg-server-xvfb gawk ccache libadwaita tbb fmt + pacman -Sc --cachedir pacman_cache --noconfirm + - save_cache: + key: pacman-cache-{{ checksum "/tmp/date" }} + paths: + - pacman_cache + - run: rm -rf pacman_cache + # - run: + # name: Starting Xvfb + # command: Xvfb $DISPLAY -screen 0 1280x1024x24 + # background: true + # - run: + # name: Starting dbus + # command: | + # dbus-uuidgen > /var/lib/dbus/machine-id + # mkdir -p /var/run/dbus + # DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address) && echo $DBUS_SESSION_BUS_ADDRESS + # echo "export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS" >> $BASH_ENV + # - run: + # name: Starting PipeWire in background + # command: | + # sleep 5 + # DISABLE_RTKIT=1 PIPEWIRE_DEBUG=4 pipewire + # background: true + # - run: + # name: Starting pipewire-pulse in background + # command: | + # sleep 5 + # DISABLE_RTKIT=1 pipewire-pulse + # background: true + # - run: + # name: Starting pipewire-media-session in background + # command: | + # sleep 5 + # DISABLE_RTKIT=1 pipewire-media-session + # background: true + # - run: + # name: loading devices + # command: | + # sleep 5 + # pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=my-sink audio.position=FL,FR + # pactl load-module module-null-sink object.linger=1 media.class=Audio/Source sink_name=my-source audio.position=FL,FR + # pw-cli list-objects Node + # background: true + - restore_cache: + keys: + - ccache-{{ checksum "/tmp/date" }} + - checkout + - run: + name: Compile and install EasyEffects + command: | + meson build && cd build && ninja -j 8 && ninja -j 8 install + - save_cache: + key: ccache-{{ checksum "/tmp/date" }} + paths: + - /root/.ccache + # - run: + # name: Starting PE in background + # command: | + # easyeffects + # background: true + # - run: + # name: Testing play/pause + # command: | + # .circleci/enable_all_plugins.sh + # # stream outputs + # #gst-launch-1.0 audiotestsrc num-buffers=100 ! queue ! pipewiresink + # #gst-launch-1.0 audiotestsrc num-buffers=100 ! queue ! pipewiresink + # # strem inputs + # #gst-launch-1.0 pipewiresrc num-buffers=100 ! queue ! audio/x-raw,format=F32LE ! pipewiresink + # #gst-launch-1.0 pipewiresrc num-buffers=100 ! queue ! audio/x-raw,format=F32LE ! pipewiresink + # - run: + # name: Simulating audio applications + # command: | + # gst-launch-1.0 audiotestsrc ! queue ! pipewiresink & + # gst-launch-1.0 pipewiresrc ! queue ! audio/x-raw,format=F32LE ! pipewiresink + # background: true + # - run: + # name: Testing plugin enable/disable on the fly + # command: | + # sleep 5 + # .circleci/enable_all_plugins.sh + # sleep 1 + # .circleci/disable_all_plugins.sh + # sleep 1 + # .circleci/enable_all_plugins.sh + # - run: + # name: Testing presets + # command: | + # sleep 5 + # cp -v .circleci/presets/soe_preset_disable_all.json /root/.config/easyeffects/input + # cp -v .circleci/presets/soe_preset_enable_all.json /root/.config/easyeffects/input + # cp -v .circleci/presets/sie_preset_disable_all.json /root/.config/easyeffects/output + # cp -v .circleci/presets/sie_preset_enable_all.json /root/.config/easyeffects/output + # easyeffects -l soe_preset_disable_all || true + # sleep 1 + # easyeffects -l soe_preset_enable_all || true + # sleep 1 + # easyeffects -l sie_preset_disable_all || true + # sleep 1 + # easyeffects -l sie_preset_enalbe_all || true + # - run: + # name: Reset Configuration and finish + # command: | + # sleep 5 + # easyeffects -r || true + # easyeffects -q || true + +workflows: + version: 2 + build: + jobs: + - archlinux diff --git a/.circleci/disable_all_plugins.sh b/.circleci/disable_all_plugins.sh new file mode 100755 index 0000000..42872e3 --- /dev/null +++ b/.circleci/disable_all_plugins.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +# general settings + +gsettings set com.github.wwmm.easyeffects enable-all-streaminputs false + +# effects for sink inputs + +gsettings set com.github.wwmm.easyeffects.autogain:/com/github/wwmm/easyeffects/streamoutputs/autogain/ state false +gsettings set com.github.wwmm.easyeffects.bassenhancer:/com/github/wwmm/easyeffects/streamoutputs/bassenhancer/ state false +gsettings set com.github.wwmm.easyeffects.compressor:/com/github/wwmm/easyeffects/streamoutputs/compressor/ state false +gsettings set com.github.wwmm.easyeffects.convolver:/com/github/wwmm/easyeffects/streamoutputs/convolver/ state false +gsettings set com.github.wwmm.easyeffects.crossfeed:/com/github/wwmm/easyeffects/streamoutputs/crossfeed/ state false +gsettings set com.github.wwmm.easyeffects.crystalizer:/com/github/wwmm/easyeffects/streamoutputs/crystalizer/ state false +gsettings set com.github.wwmm.easyeffects.deesser:/com/github/wwmm/easyeffects/streamoutputs/deesser/ state false +gsettings set com.github.wwmm.easyeffects.delay:/com/github/wwmm/easyeffects/streamoutputs/delay/ state false +gsettings set com.github.wwmm.easyeffects.equalizer:/com/github/wwmm/easyeffects/streamoutputs/equalizer/ state false +gsettings set com.github.wwmm.easyeffects.exciter:/com/github/wwmm/easyeffects/streamoutputs/exciter/ state false +gsettings set com.github.wwmm.easyeffects.filter:/com/github/wwmm/easyeffects/streamoutputs/filter/ state false +gsettings set com.github.wwmm.easyeffects.gate:/com/github/wwmm/easyeffects/streamoutputs/gate/ state false +gsettings set com.github.wwmm.easyeffects.limiter:/com/github/wwmm/easyeffects/streamoutputs/limiter/ state false +gsettings set com.github.wwmm.easyeffects.loudness:/com/github/wwmm/easyeffects/streamoutputs/loudness/ state false +gsettings set com.github.wwmm.easyeffects.maximizer:/com/github/wwmm/easyeffects/streamoutputs/maximizer/ state false +gsettings set com.github.wwmm.easyeffects.multibandcompressor:/com/github/wwmm/easyeffects/streamoutputs/multibandcompressor/ state false +gsettings set com.github.wwmm.easyeffects.multibandgate:/com/github/wwmm/easyeffects/streamoutputs/multibandgate/ state false +gsettings set com.github.wwmm.easyeffects.pitch:/com/github/wwmm/easyeffects/streamoutputs/pitch/ state false +gsettings set com.github.wwmm.easyeffects.reverb:/com/github/wwmm/easyeffects/streamoutputs/reverb/ state false +gsettings set com.github.wwmm.easyeffects.stereotools:/com/github/wwmm/easyeffects/streamoutputs/stereotools/ state false + +# effects for source outputs + +gsettings set com.github.wwmm.easyeffects.compressor:/com/github/wwmm/easyeffects/streaminputs/compressor/ state false +gsettings set com.github.wwmm.easyeffects.deesser:/com/github/wwmm/easyeffects/streaminputs/deesser/ state false +gsettings set com.github.wwmm.easyeffects.equalizer:/com/github/wwmm/easyeffects/streaminputs/equalizer/ state false +gsettings set com.github.wwmm.easyeffects.filter:/com/github/wwmm/easyeffects/streaminputs/filter/ state false +gsettings set com.github.wwmm.easyeffects.gate:/com/github/wwmm/easyeffects/streaminputs/gate/ state false +gsettings set com.github.wwmm.easyeffects.limiter:/com/github/wwmm/easyeffects/streaminputs/limiter/ state false +gsettings set com.github.wwmm.easyeffects.multibandcompressor:/com/github/wwmm/easyeffects/streaminputs/multibandcompressor/ state false +gsettings set com.github.wwmm.easyeffects.multibandgate:/com/github/wwmm/easyeffects/streaminputs/multibandgate/ state false +gsettings set com.github.wwmm.easyeffects.pitch:/com/github/wwmm/easyeffects/streaminputs/pitch/ state false +gsettings set com.github.wwmm.easyeffects.reverb:/com/github/wwmm/easyeffects/streaminputs/reverb/ state false +gsettings set com.github.wwmm.easyeffects.echocanceller:/com/github/wwmm/easyeffects/streaminputs/echocanceller/ state false diff --git a/.circleci/enable_all_plugins.sh b/.circleci/enable_all_plugins.sh new file mode 100755 index 0000000..6e34ad8 --- /dev/null +++ b/.circleci/enable_all_plugins.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +# general settings + +gsettings set com.github.wwmm.easyeffects enable-all-streaminputs true + +# effects for sink inputs + +gsettings set com.github.wwmm.easyeffects.autogain:/com/github/wwmm/easyeffects/streamoutputs/autogain/ state true +gsettings set com.github.wwmm.easyeffects.bassenhancer:/com/github/wwmm/easyeffects/streamoutputs/bassenhancer/ state true +gsettings set com.github.wwmm.easyeffects.compressor:/com/github/wwmm/easyeffects/streamoutputs/compressor/ state true +gsettings set com.github.wwmm.easyeffects.convolver:/com/github/wwmm/easyeffects/streamoutputs/convolver/ state true +gsettings set com.github.wwmm.easyeffects.crossfeed:/com/github/wwmm/easyeffects/streamoutputs/crossfeed/ state true +gsettings set com.github.wwmm.easyeffects.crystalizer:/com/github/wwmm/easyeffects/streamoutputs/crystalizer/ state true +gsettings set com.github.wwmm.easyeffects.deesser:/com/github/wwmm/easyeffects/streamoutputs/deesser/ state true +gsettings set com.github.wwmm.easyeffects.delay:/com/github/wwmm/easyeffects/streamoutputs/delay/ state true +gsettings set com.github.wwmm.easyeffects.equalizer:/com/github/wwmm/easyeffects/streamoutputs/equalizer/ state true +gsettings set com.github.wwmm.easyeffects.exciter:/com/github/wwmm/easyeffects/streamoutputs/exciter/ state true +gsettings set com.github.wwmm.easyeffects.filter:/com/github/wwmm/easyeffects/streamoutputs/filter/ state true +gsettings set com.github.wwmm.easyeffects.gate:/com/github/wwmm/easyeffects/streamoutputs/gate/ state true +gsettings set com.github.wwmm.easyeffects.limiter:/com/github/wwmm/easyeffects/streamoutputs/limiter/ state true +gsettings set com.github.wwmm.easyeffects.loudness:/com/github/wwmm/easyeffects/streamoutputs/loudness/ state true +gsettings set com.github.wwmm.easyeffects.maximizer:/com/github/wwmm/easyeffects/streamoutputs/maximizer/ state true +gsettings set com.github.wwmm.easyeffects.multibandcompressor:/com/github/wwmm/easyeffects/streamoutputs/multibandcompressor/ state true +gsettings set com.github.wwmm.easyeffects.multibandgate:/com/github/wwmm/easyeffects/streamoutputs/multibandgate/ state true +gsettings set com.github.wwmm.easyeffects.pitch:/com/github/wwmm/easyeffects/streamoutputs/pitch/ state true +gsettings set com.github.wwmm.easyeffects.reverb:/com/github/wwmm/easyeffects/streamoutputs/reverb/ state true +gsettings set com.github.wwmm.easyeffects.stereotools:/com/github/wwmm/easyeffects/streamoutputs/stereotools/ state true + +# effects for source outputs + +gsettings set com.github.wwmm.easyeffects.compressor:/com/github/wwmm/easyeffects/streaminputs/compressor/ state true +gsettings set com.github.wwmm.easyeffects.deesser:/com/github/wwmm/easyeffects/streaminputs/deesser/ state true +gsettings set com.github.wwmm.easyeffects.equalizer:/com/github/wwmm/easyeffects/streaminputs/equalizer/ state true +gsettings set com.github.wwmm.easyeffects.filter:/com/github/wwmm/easyeffects/streaminputs/filter/ state true +gsettings set com.github.wwmm.easyeffects.gate:/com/github/wwmm/easyeffects/streaminputs/gate/ state true +gsettings set com.github.wwmm.easyeffects.limiter:/com/github/wwmm/easyeffects/streaminputs/limiter/ state true +gsettings set com.github.wwmm.easyeffects.multibandcompressor:/com/github/wwmm/easyeffects/streaminputs/multibandcompressor/ state true +gsettings set com.github.wwmm.easyeffects.multibandgate:/com/github/wwmm/easyeffects/streaminputs/multibandgate/ state true +gsettings set com.github.wwmm.easyeffects.pitch:/com/github/wwmm/easyeffects/streaminputs/pitch/ state true +gsettings set com.github.wwmm.easyeffects.reverb:/com/github/wwmm/easyeffects/streaminputs/reverb/ state true +gsettings set com.github.wwmm.easyeffects.echocanceller:/com/github/wwmm/easyeffects/streaminputs/echocanceller/ state true diff --git a/.circleci/presets/sie_preset_disable_all.json b/.circleci/presets/sie_preset_disable_all.json new file mode 100644 index 0000000..d650397 --- /dev/null +++ b/.circleci/presets/sie_preset_disable_all.json @@ -0,0 +1,424 @@ +{ + "spectrum": { + "show": "true", + "n-points": "100", + "height": "100", + "use-custom-color": "true", + "fill": "true", + "show-bar-border": "true", + "scale": "1", + "exponent": "1", + "sampling-freq": "10", + "line-width": "2", + "type": "Bars", + "color": ["0", "1", "1", "1"], + "gradient-color": ["0", "1", "1", "0.52364864864864868"] + }, + "output": { + "blacklist": "", + "plugins_order": [ + "limiter", + "autogain", + "exciter", + "crystalizer", + "loudness", + "bass_enhancer", + "convolver", + "equalizer", + "filter", + "compressor", + "reverb", + "crossfeed", + "maximizer", + "multiband_compressor", + "gate", + "multiband_gate", + "stereo_tools", + "deesser", + "pitch", + "delay" + ], + "bass_enhancer": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "amount": "-4", + "harmonics": "8.5", + "scope": "250", + "floor": "40", + "blend": "0", + "floor-active": "true", + "listen": "false" + }, + "compressor": { + "state": "false", + "detection": "RMS", + "stereo-link": "Average", + "mix": "0", + "attack": "20", + "release": "250", + "threshold": "-30", + "ratio": "4", + "knee": "-15", + "makeup": "0" + }, + "crossfeed": { + "state": "false", + "fcut": "700", + "feed": "4.5" + }, + "deesser": { + "state": "false", + "detection": "RMS", + "mode": "Split", + "threshold": "-20", + "ratio": "3", + "laxity": "15", + "makeup": "0", + "f1-freq": "10000", + "f2-freq": "11000", + "f1-level": "0", + "f2-level": "12", + "f2-q": "2", + "sc-listen": "false" + }, + "equalizer": { + "state": "false", + "mode": "IIR", + "num-bands": "4", + "input-gain": "0", + "output-gain": "0", + "split-channels": "false", + "left": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-3.5", + "frequency": "500", + "q": "0.49999999999999867" + }, + "band1": { + "type": "Resonance", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-4", + "frequency": "4500", + "q": "9" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "1.5", + "frequency": "1600", + "q": "2" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "-2", + "frequency": "5500", + "q": "2" + } + }, + "right": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-3.5", + "frequency": "500", + "q": "0.49999999999999867" + }, + "band1": { + "type": "Resonance", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-4", + "frequency": "4500", + "q": "9" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "1.5", + "frequency": "1600", + "q": "2" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "-2", + "frequency": "5500", + "q": "2" + } + } + }, + "exciter": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "amount": "-15", + "harmonics": "8.5", + "scope": "2000", + "ceil": "16000", + "blend": "0", + "ceil-active": "false", + "listen": "false" + }, + "filter": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "frequency": "2000", + "resonance": "-3", + "mode": "12dB/oct Lowpass", + "inertia": "20" + }, + "gate": { + "state": "false", + "detection": "RMS", + "stereo-link": "Average", + "range": "-24", + "attack": "20", + "release": "250", + "threshold": "-18", + "ratio": "2", + "knee": "9", + "makeup": "0" + }, + "limiter": { + "state": "false", + "input-gain": "0", + "limit": "-1", + "lookahead": "5", + "release": "1000", + "asc": "true", + "asc-level": "1", + "oversampling": "1" + }, + "maximizer": { + "state": "false", + "release": "3.1600000000000001", + "ceiling": "0", + "threshold": "0" + }, + "pitch": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "cents": "0", + "semitones": "0", + "octaves": "0", + "crispness": "3", + "formant-preserving": "false", + "faster": "false" + }, + "reverb": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "room-size": "Large", + "decay-time": "1.5", + "hf-damp": "5000", + "diffusion": "0.5", + "amount": "-12", + "dry": "0", + "predelay": "0", + "bass-cut": "300", + "treble-cut": "5000" + }, + "multiband_compressor": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "freq0": "120", + "freq1": "1000", + "freq2": "6000", + "mode": "LR8", + "subband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "midband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "highband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + } + }, + "loudness": { + "state": "false", + "loudness": "-2.9999999999999893", + "output": "-7", + "link": "-9.0000000000000018" + }, + "multiband_gate": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "freq0": "120", + "freq1": "1000", + "freq2": "6000", + "mode": "LR8", + "subband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "midband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "highband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + } + }, + "stereo_tools": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "balance-in": "0", + "balance-out": "0", + "softclip": "false", + "mutel": "false", + "muter": "false", + "phasel": "false", + "phaser": "false", + "mode": "LR > LR (Stereo Default)", + "side-level": "0", + "side-balance": "0", + "middle-level": "0", + "middle-panorama": "0", + "stereo-base": "0", + "delay": "0", + "sc-level": "1", + "stereo-phase": "0" + }, + "convolver": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "kernel-path": "/home/wallace/.config/easyeffects/irs/Samsung SoundAlive ((48k Z-Edition)) 10.3D+Clarity.irs", + "ir-width": "100", + "blocksize": "512" + }, + "crystalizer": { + "state": "false", + "input-gain": "0", + "output-gain": "-6", + "intensity-low": "3", + "intensity-mid": "1.5", + "intensity-high": "0.75000000000000022", + "mute-low": "false", + "mute-mid": "false", + "mute-high": "false" + }, + "autogain": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "target": "-23", + "weight-m": "1", + "weight-s": "2", + "weight-i": "3" + }, + "delay": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "time-l": "0", + "time-r": "0" + } + } +} diff --git a/.circleci/presets/sie_preset_enable_all.json b/.circleci/presets/sie_preset_enable_all.json new file mode 100644 index 0000000..c151cce --- /dev/null +++ b/.circleci/presets/sie_preset_enable_all.json @@ -0,0 +1,502 @@ +{ + "spectrum": { + "show": "true", + "n-points": "100", + "height": "100", + "use-custom-color": "true", + "fill": "true", + "show-bar-border": "true", + "scale": "1", + "exponent": "1", + "sampling-freq": "10", + "line-width": "2", + "type": "Bars", + "color": [ + "0", + "1", + "1", + "1" + ], + "gradient-color": [ + "0", + "1", + "1", + "0.52364864864864868" + ] + }, + "output": { + "blacklist": "", + "plugins_order": [ + "limiter", + "autogain", + "multiband_compressor", + "convolver", + "bass_enhancer", + "exciter", + "equalizer", + "delay", + "maximizer", + "stereo_tools", + "compressor", + "reverb", + "filter", + "crossfeed", + "loudness", + "gate", + "multiband_gate", + "deesser", + "crystalizer", + "pitch" + ], + "bass_enhancer": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "amount": "0.40000000000000013", + "harmonics": "8.5", + "scope": "250", + "floor": "20", + "blend": "0", + "floor-active": "true", + "listen": "false" + }, + "compressor": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "mode": "Downward", + "attack": "25", + "release": "100", + "threshold": "-21.072093963623047", + "ratio": "4.2500799999999996", + "knee": "-20", + "makeup": "0", + "sidechain": { + "listen": "false", + "type": "Feed-forward", + "mode": "RMS", + "source": "Middle", + "preamp": "0", + "reactivity": "10", + "lookahead": "0" + } + }, + "crossfeed": { + "state": "true", + "fcut": "700", + "feed": "4.5" + }, + "deesser": { + "state": "true", + "detection": "RMS", + "mode": "Wide", + "threshold": "-18", + "ratio": "3", + "laxity": "15", + "makeup": "0", + "f1-freq": "6000", + "f2-freq": "4500", + "f1-level": "0", + "f2-level": "12", + "f2-q": "1", + "sc-listen": "false" + }, + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "4", + "input-gain": "0", + "output-gain": "0", + "split-channels": "false", + "left": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-3", + "frequency": "500", + "q": "0.49999999999999867" + }, + "band1": { + "type": "Resonance", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-3.5", + "frequency": "4500", + "q": "9" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "1", + "frequency": "1600", + "q": "2" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "-1.5", + "frequency": "5500", + "q": "2" + } + }, + "right": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-3", + "frequency": "500", + "q": "0.49999999999999867" + }, + "band1": { + "type": "Resonance", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "-3.5", + "frequency": "4500", + "q": "9" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "1", + "frequency": "1600", + "q": "2" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x4", + "solo": "false", + "mute": "false", + "gain": "-1.5", + "frequency": "5500", + "q": "2" + } + } + }, + "exciter": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "amount": "-8", + "harmonics": "8.5", + "scope": "2000", + "ceil": "16000", + "blend": "0", + "ceil-active": "false", + "listen": "false" + }, + "filter": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "frequency": "2000", + "resonance": "-3", + "mode": "12dB\/oct Lowpass", + "inertia": "20" + }, + "gate": { + "state": "true", + "detection": "RMS", + "stereo-link": "Average", + "range": "-24", + "attack": "20", + "release": "250", + "threshold": "-18", + "ratio": "2", + "knee": "9", + "makeup": "0" + }, + "limiter": { + "state": "true", + "input-gain": "0", + "limit": "0", + "lookahead": "10", + "release": "100", + "asc": "true", + "asc-level": "1", + "oversampling": "1" + }, + "maximizer": { + "state": "true", + "release": "3.1600000000000001", + "ceiling": "0", + "threshold": "-16" + }, + "pitch": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "cents": "0", + "semitones": "0", + "octaves": "0", + "crispness": "3", + "formant-preserving": "false", + "faster": "false" + }, + "reverb": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "room-size": "Large\/smooth", + "decay-time": "0.44594499999999998", + "hf-damp": "5508.46", + "diffusion": "0.54000000000000004", + "amount": "-9", + "dry": "0", + "predelay": "25", + "bass-cut": "257.64999999999998", + "treble-cut": "20000" + }, + "multiband_compressor": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "freq0": "300", + "freq1": "1000", + "freq2": "4000", + "mode": "LR8", + "subband": { + "threshold": "-30", + "ratio": "4", + "attack": "100", + "release": "500", + "makeup": "0", + "knee": "18", + "detection": "Peak", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "threshold": "-40", + "ratio": "2", + "attack": "100", + "release": "500", + "makeup": "0", + "knee": "9", + "detection": "Peak", + "bypass": "false", + "solo": "false" + }, + "midband": { + "threshold": "-50", + "ratio": "2", + "attack": "50", + "release": "500", + "makeup": "0", + "knee": "9", + "detection": "Peak", + "bypass": "false", + "solo": "false" + }, + "highband": { + "threshold": "-40", + "ratio": "4", + "attack": "100", + "release": "500", + "makeup": "0", + "knee": "18", + "detection": "Peak", + "bypass": "false", + "solo": "false" + } + }, + "loudness": { + "state": "true", + "loudness": "-3.1000000000000001", + "output": "-6", + "link": "-9.0999999999999996" + }, + "multiband_gate": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "freq0": "120", + "freq1": "1000", + "freq2": "6000", + "mode": "LR8", + "subband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "midband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "highband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + } + }, + "stereo_tools": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "balance-in": "0", + "balance-out": "0", + "softclip": "false", + "mutel": "false", + "muter": "false", + "phasel": "false", + "phaser": "false", + "mode": "LR > LR (Stereo Default)", + "side-level": "0", + "side-balance": "0", + "middle-level": "0", + "middle-panorama": "0", + "stereo-base": "0", + "delay": "1.5000000000000011", + "sc-level": "1", + "stereo-phase": "0" + }, + "convolver": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "kernel-path": "\/home\/wallace\/.config\/easyeffects/\/irs\/Samsung SoundAlive Small Room.irs", + "ir-width": "150" + }, + "crystalizer": { + "state": "true", + "aggressive": "false", + "input-gain": "0", + "output-gain": "0", + "band0": { + "intensity": "12", + "mute": "false", + "bypass": "false" + }, + "band1": { + "intensity": "10", + "mute": "false", + "bypass": "false" + }, + "band2": { + "intensity": "8", + "mute": "false", + "bypass": "false" + }, + "band3": { + "intensity": "6", + "mute": "false", + "bypass": "false" + }, + "band4": { + "intensity": "4", + "mute": "false", + "bypass": "false" + }, + "band5": { + "intensity": "2", + "mute": "false", + "bypass": "false" + }, + "band6": { + "intensity": "0", + "mute": "false", + "bypass": "false" + }, + "band7": { + "intensity": "-2", + "mute": "false", + "bypass": "false" + }, + "band8": { + "intensity": "-4", + "mute": "false", + "bypass": "false" + }, + "band9": { + "intensity": "-6", + "mute": "false", + "bypass": "false" + }, + "band10": { + "intensity": "-8", + "mute": "false", + "bypass": "false" + }, + "band11": { + "intensity": "-10", + "mute": "false", + "bypass": "false" + }, + "band12": { + "intensity": "-12", + "mute": "false", + "bypass": "false" + } + }, + "autogain": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "target": "-23", + "weight-m": "3", + "weight-s": "2", + "weight-i": "1" + }, + "delay": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "time-l": "0", + "time-r": "1.5000000000000011" + } + } +} diff --git a/.circleci/presets/soe_preset_disable_all.json b/.circleci/presets/soe_preset_disable_all.json new file mode 100644 index 0000000..0f05af9 --- /dev/null +++ b/.circleci/presets/soe_preset_disable_all.json @@ -0,0 +1,875 @@ +{ + "spectrum": { + "show": "true", + "n-points": "100", + "height": "100", + "use-custom-color": "true", + "fill": "true", + "show-bar-border": "true", + "scale": "1", + "exponent": "1", + "sampling-freq": "10", + "line-width": "2", + "type": "Bars", + "color": [ + "0", + "1", + "1", + "1" + ], + "gradient-color": [ + "0", + "1", + "1", + "0.52364864864864868" + ] + }, + "input": { + "blacklist": "", + "plugins_order": [ + "limiter", + "gate", + "webrtc", + "multiband_gate", + "compressor", + "multiband_compressor", + "filter", + "equalizer", + "deesser", + "reverb", + "pitch" + ], + "compressor": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "mode": "Downward", + "attack": "20", + "release": "250", + "threshold": "-18", + "ratio": "2", + "knee": "-6", + "makeup": "0", + "sidechain": { + "listen": "false", + "type": "Feed-forward", + "mode": "RMS", + "source": "Middle", + "preamp": "0", + "reactivity": "10", + "lookahead": "0" + } + }, + "deesser": { + "state": "false", + "detection": "RMS", + "mode": "Wide", + "threshold": "-18", + "ratio": "3", + "laxity": "15", + "makeup": "0", + "f1-freq": "6000", + "f2-freq": "4500", + "f1-level": "0", + "f2-level": "12", + "f2-q": "1", + "sc-listen": "false" + }, + "equalizer": { + "state": "false", + "mode": "IIR", + "num-bands": "30", + "input-gain": "0", + "output-gain": "0", + "split-channels": "false", + "left": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "22.589254117941671", + "q": "4.3600000000000003" + }, + "band1": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "28.438186042552807", + "q": "4.3600000000000003" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "35.801555074299934", + "q": "4.3600000000000003" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "45.071487464784603", + "q": "4.3600000000000003" + }, + "band4": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "56.741640916779602", + "q": "4.3600000000000003" + }, + "band5": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "71.433493657033537", + "q": "4.3600000000000003" + }, + "band6": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "89.929440418076979", + "q": "4.3600000000000003" + }, + "band7": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "113.21445781074659", + "q": "4.3600000000000003" + }, + "band8": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "142.52855792044753", + "q": "4.3600000000000003" + }, + "band9": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "179.43282347242823", + "q": "4.3600000000000003" + }, + "band10": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "225.89254117941681", + "q": "4.3600000000000003" + }, + "band11": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "284.3818604255282", + "q": "4.3600000000000003" + }, + "band12": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "358.01555074299949", + "q": "4.3600000000000003" + }, + "band13": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "450.71487464784627", + "q": "4.3600000000000003" + }, + "band14": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "567.41640916779625", + "q": "4.3600000000000003" + }, + "band15": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "714.33493657033569", + "q": "4.3600000000000003" + }, + "band16": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "899.29440418077013", + "q": "4.3600000000000003" + }, + "band17": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1132.1445781074663", + "q": "4.3600000000000003" + }, + "band18": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1425.2855792044757", + "q": "4.3600000000000003" + }, + "band19": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1794.328234724283", + "q": "4.3600000000000003" + }, + "band20": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2258.9254117941691", + "q": "4.3600000000000003" + }, + "band21": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2843.8186042552834", + "q": "4.3600000000000003" + }, + "band22": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "3580.1555074299968", + "q": "4.3600000000000003" + }, + "band23": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "4507.1487464784641", + "q": "4.3600000000000003" + }, + "band24": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "5674.1640916779661", + "q": "4.3600000000000003" + }, + "band25": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "7143.3493657033605", + "q": "4.3600000000000003" + }, + "band26": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "8992.9440418077065", + "q": "4.3600000000000003" + }, + "band27": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "11321.445781074672", + "q": "4.3600000000000003" + }, + "band28": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "14252.855792044767", + "q": "4.3600000000000003" + }, + "band29": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "17943.282347242843", + "q": "4.3600000000000003" + } + }, + "right": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "22.589254117941671", + "q": "4.3600000000000003" + }, + "band1": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "28.438186042552807", + "q": "4.3600000000000003" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "35.801555074299934", + "q": "4.3600000000000003" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "45.071487464784603", + "q": "4.3600000000000003" + }, + "band4": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "56.741640916779602", + "q": "4.3600000000000003" + }, + "band5": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "71.433493657033537", + "q": "4.3600000000000003" + }, + "band6": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "89.929440418076979", + "q": "4.3600000000000003" + }, + "band7": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "113.21445781074659", + "q": "4.3600000000000003" + }, + "band8": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "142.52855792044753", + "q": "4.3600000000000003" + }, + "band9": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "179.43282347242823", + "q": "4.3600000000000003" + }, + "band10": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "225.89254117941681", + "q": "4.3600000000000003" + }, + "band11": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "284.3818604255282", + "q": "4.3600000000000003" + }, + "band12": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "358.01555074299949", + "q": "4.3600000000000003" + }, + "band13": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "450.71487464784627", + "q": "4.3600000000000003" + }, + "band14": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "567.41640916779625", + "q": "4.3600000000000003" + }, + "band15": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "714.33493657033569", + "q": "4.3600000000000003" + }, + "band16": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "899.29440418077013", + "q": "4.3600000000000003" + }, + "band17": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1132.1445781074663", + "q": "4.3600000000000003" + }, + "band18": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1425.2855792044757", + "q": "4.3600000000000003" + }, + "band19": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1794.328234724283", + "q": "4.3600000000000003" + }, + "band20": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2258.9254117941691", + "q": "4.3600000000000003" + }, + "band21": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2843.8186042552834", + "q": "4.3600000000000003" + }, + "band22": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "3580.1555074299968", + "q": "4.3600000000000003" + }, + "band23": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "4507.1487464784641", + "q": "4.3600000000000003" + }, + "band24": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "5674.1640916779661", + "q": "4.3600000000000003" + }, + "band25": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "7143.3493657033605", + "q": "4.3600000000000003" + }, + "band26": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "8992.9440418077065", + "q": "4.3600000000000003" + }, + "band27": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "11321.445781074672", + "q": "4.3600000000000003" + }, + "band28": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "14252.855792044767", + "q": "4.3600000000000003" + }, + "band29": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "17943.282347242843", + "q": "4.3600000000000003" + } + } + }, + "filter": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "frequency": "2000", + "resonance": "-3", + "mode": "12dB\/oct Lowpass", + "inertia": "20" + }, + "gate": { + "state": "false", + "detection": "RMS", + "stereo-link": "Average", + "range": "-24", + "attack": "20", + "release": "250", + "threshold": "-18", + "ratio": "2", + "knee": "9", + "makeup": "0" + }, + "limiter": { + "state": "false", + "input-gain": "0", + "limit": "0", + "lookahead": "5", + "release": "1000", + "asc": "true", + "asc-level": "1", + "oversampling": "1" + }, + "pitch": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "cents": "0", + "semitones": "0", + "octaves": "0", + "crispness": "3", + "formant-preserving": "false", + "faster": "false" + }, + "reverb": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "room-size": "Large", + "decay-time": "1.5", + "hf-damp": "5000", + "diffusion": "0.5", + "amount": "-12", + "dry": "0", + "predelay": "0", + "bass-cut": "300", + "treble-cut": "5000" + }, + "webrtc": { + "state": "false", + "high-pass-filter": "true", + "echo-cancel": "true", + "echo-suppression-level": "moderate", + "noise-suppression": "true", + "noise-suppression-level": "moderate", + "gain-control": "true", + "extended-filter": "true", + "delay-agnostic": "false", + "target-level-dbfs": "3", + "compression-gain-db": "9", + "limiter": "true", + "gain-control-mode": "adaptive-digital", + "voice-detection": "false", + "voice-detection-frame-size-ms": "10", + "voice-detection-likelihood": "low" + }, + "multiband_compressor": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "freq0": "120", + "freq1": "1000", + "freq2": "6000", + "mode": "LR8", + "subband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "midband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "highband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + } + }, + "multiband_gate": { + "state": "false", + "input-gain": "0", + "output-gain": "0", + "freq0": "120", + "freq1": "1000", + "freq2": "6000", + "mode": "LR8", + "subband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "midband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "highband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + } + } + } +} diff --git a/.circleci/presets/soe_preset_enable_all.json b/.circleci/presets/soe_preset_enable_all.json new file mode 100644 index 0000000..0312421 --- /dev/null +++ b/.circleci/presets/soe_preset_enable_all.json @@ -0,0 +1,875 @@ +{ + "spectrum": { + "show": "true", + "n-points": "100", + "height": "100", + "use-custom-color": "true", + "fill": "true", + "show-bar-border": "true", + "scale": "1", + "exponent": "1", + "sampling-freq": "10", + "line-width": "2", + "type": "Bars", + "color": [ + "0", + "1", + "1", + "1" + ], + "gradient-color": [ + "0", + "1", + "1", + "0.52364864864864868" + ] + }, + "input": { + "blacklist": "", + "plugins_order": [ + "limiter", + "gate", + "webrtc", + "multiband_gate", + "compressor", + "multiband_compressor", + "filter", + "equalizer", + "deesser", + "reverb", + "pitch" + ], + "compressor": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "mode": "Downward", + "attack": "20", + "release": "250", + "threshold": "-18", + "ratio": "2", + "knee": "-6", + "makeup": "0", + "sidechain": { + "listen": "false", + "type": "Feed-forward", + "mode": "RMS", + "source": "Middle", + "preamp": "0", + "reactivity": "10", + "lookahead": "0" + } + }, + "deesser": { + "state": "true", + "detection": "RMS", + "mode": "Wide", + "threshold": "-18", + "ratio": "3", + "laxity": "15", + "makeup": "0", + "f1-freq": "6000", + "f2-freq": "4500", + "f1-level": "0", + "f2-level": "12", + "f2-q": "1", + "sc-listen": "false" + }, + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "30", + "input-gain": "0", + "output-gain": "0", + "split-channels": "false", + "left": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "22.589254117941671", + "q": "4.3600000000000003" + }, + "band1": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "28.438186042552807", + "q": "4.3600000000000003" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "35.801555074299934", + "q": "4.3600000000000003" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "45.071487464784603", + "q": "4.3600000000000003" + }, + "band4": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "56.741640916779602", + "q": "4.3600000000000003" + }, + "band5": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "71.433493657033537", + "q": "4.3600000000000003" + }, + "band6": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "89.929440418076979", + "q": "4.3600000000000003" + }, + "band7": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "113.21445781074659", + "q": "4.3600000000000003" + }, + "band8": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "142.52855792044753", + "q": "4.3600000000000003" + }, + "band9": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "179.43282347242823", + "q": "4.3600000000000003" + }, + "band10": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "225.89254117941681", + "q": "4.3600000000000003" + }, + "band11": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "284.3818604255282", + "q": "4.3600000000000003" + }, + "band12": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "358.01555074299949", + "q": "4.3600000000000003" + }, + "band13": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "450.71487464784627", + "q": "4.3600000000000003" + }, + "band14": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "567.41640916779625", + "q": "4.3600000000000003" + }, + "band15": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "714.33493657033569", + "q": "4.3600000000000003" + }, + "band16": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "899.29440418077013", + "q": "4.3600000000000003" + }, + "band17": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1132.1445781074663", + "q": "4.3600000000000003" + }, + "band18": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1425.2855792044757", + "q": "4.3600000000000003" + }, + "band19": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1794.328234724283", + "q": "4.3600000000000003" + }, + "band20": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2258.9254117941691", + "q": "4.3600000000000003" + }, + "band21": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2843.8186042552834", + "q": "4.3600000000000003" + }, + "band22": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "3580.1555074299968", + "q": "4.3600000000000003" + }, + "band23": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "4507.1487464784641", + "q": "4.3600000000000003" + }, + "band24": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "5674.1640916779661", + "q": "4.3600000000000003" + }, + "band25": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "7143.3493657033605", + "q": "4.3600000000000003" + }, + "band26": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "8992.9440418077065", + "q": "4.3600000000000003" + }, + "band27": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "11321.445781074672", + "q": "4.3600000000000003" + }, + "band28": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "14252.855792044767", + "q": "4.3600000000000003" + }, + "band29": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "17943.282347242843", + "q": "4.3600000000000003" + } + }, + "right": { + "band0": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "22.589254117941671", + "q": "4.3600000000000003" + }, + "band1": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "28.438186042552807", + "q": "4.3600000000000003" + }, + "band2": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "35.801555074299934", + "q": "4.3600000000000003" + }, + "band3": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "45.071487464784603", + "q": "4.3600000000000003" + }, + "band4": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "56.741640916779602", + "q": "4.3600000000000003" + }, + "band5": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "71.433493657033537", + "q": "4.3600000000000003" + }, + "band6": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "89.929440418076979", + "q": "4.3600000000000003" + }, + "band7": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "113.21445781074659", + "q": "4.3600000000000003" + }, + "band8": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "142.52855792044753", + "q": "4.3600000000000003" + }, + "band9": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "179.43282347242823", + "q": "4.3600000000000003" + }, + "band10": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "225.89254117941681", + "q": "4.3600000000000003" + }, + "band11": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "284.3818604255282", + "q": "4.3600000000000003" + }, + "band12": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "358.01555074299949", + "q": "4.3600000000000003" + }, + "band13": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "450.71487464784627", + "q": "4.3600000000000003" + }, + "band14": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "567.41640916779625", + "q": "4.3600000000000003" + }, + "band15": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "714.33493657033569", + "q": "4.3600000000000003" + }, + "band16": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "899.29440418077013", + "q": "4.3600000000000003" + }, + "band17": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1132.1445781074663", + "q": "4.3600000000000003" + }, + "band18": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1425.2855792044757", + "q": "4.3600000000000003" + }, + "band19": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "1794.328234724283", + "q": "4.3600000000000003" + }, + "band20": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2258.9254117941691", + "q": "4.3600000000000003" + }, + "band21": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "2843.8186042552834", + "q": "4.3600000000000003" + }, + "band22": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "3580.1555074299968", + "q": "4.3600000000000003" + }, + "band23": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "4507.1487464784641", + "q": "4.3600000000000003" + }, + "band24": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "5674.1640916779661", + "q": "4.3600000000000003" + }, + "band25": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "7143.3493657033605", + "q": "4.3600000000000003" + }, + "band26": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "8992.9440418077065", + "q": "4.3600000000000003" + }, + "band27": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "11321.445781074672", + "q": "4.3600000000000003" + }, + "band28": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "14252.855792044767", + "q": "4.3600000000000003" + }, + "band29": { + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false", + "gain": "0", + "frequency": "17943.282347242843", + "q": "4.3600000000000003" + } + } + }, + "filter": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "frequency": "2000", + "resonance": "-3", + "mode": "12dB\/oct Lowpass", + "inertia": "20" + }, + "gate": { + "state": "true", + "detection": "RMS", + "stereo-link": "Average", + "range": "-24", + "attack": "20", + "release": "250", + "threshold": "-18", + "ratio": "2", + "knee": "9", + "makeup": "0" + }, + "limiter": { + "state": "true", + "input-gain": "0", + "limit": "0", + "lookahead": "5", + "release": "1000", + "asc": "true", + "asc-level": "1", + "oversampling": "1" + }, + "pitch": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "cents": "0", + "semitones": "0", + "octaves": "0", + "crispness": "3", + "formant-preserving": "false", + "faster": "false" + }, + "reverb": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "room-size": "Large", + "decay-time": "1.5", + "hf-damp": "5000", + "diffusion": "0.5", + "amount": "-12", + "dry": "0", + "predelay": "0", + "bass-cut": "300", + "treble-cut": "5000" + }, + "webrtc": { + "state": "true", + "high-pass-filter": "true", + "echo-cancel": "true", + "echo-suppression-level": "moderate", + "noise-suppression": "true", + "noise-suppression-level": "moderate", + "gain-control": "true", + "extended-filter": "true", + "delay-agnostic": "false", + "target-level-dbfs": "3", + "compression-gain-db": "9", + "limiter": "true", + "gain-control-mode": "adaptive-digital", + "voice-detection": "false", + "voice-detection-frame-size-ms": "10", + "voice-detection-likelihood": "low" + }, + "multiband_compressor": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "freq0": "120", + "freq1": "1000", + "freq2": "6000", + "mode": "LR8", + "subband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "midband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "highband": { + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + } + }, + "multiband_gate": { + "state": "true", + "input-gain": "0", + "output-gain": "0", + "freq0": "120", + "freq1": "1000", + "freq2": "6000", + "mode": "LR8", + "subband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "lowband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "midband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + }, + "highband": { + "reduction": "-24", + "threshold": "-12", + "ratio": "2", + "attack": "150", + "release": "300", + "makeup": "0", + "knee": "9", + "detection": "RMS", + "bypass": "false", + "solo": "false" + } + } + } +} diff --git a/.circleci/test.sh b/.circleci/test.sh new file mode 100755 index 0000000..f0939ae --- /dev/null +++ b/.circleci/test.sh @@ -0,0 +1,124 @@ +#!/usr/bin/env bash +# Use shellcheck to check this script after making changes +# Try too keep it compatible with both GNU and BSD coreutils + +# This script is for testing EasyEffects. +# Can be ran locally after making changes in code +# or in continious integration systems. +# Requirements for CI containers: bash ImageMagic scrot Xvfb +# Authors: +# - Mikhail Novosyolov + +set -e # fail on any error +#set -f # disable globbing +#export DISPLAY=:0 +# Gurantee consistency of language strings in GUIs and CLI outputs +export LANG=c + +if [ "$(pwd | awk -F '/' '{print $NF}')" = "util" ]; then cd .. ; fi +dir0="$PWD" + +# EasyEffects binary +# In PATH, relative or absolute +PE_BIN="${PE_BIN:-easyeffects}" + +cleanup(){ + ( set +e +f + while read -r line + do + kill "$line" + # TODO: check if has been actually killed + done < <(cat ${tmp_dir}/*.pid) + ) + if [ -z "$NO_CLEANUP" ]; then rm -fr ${tmp_dir:?}/* ; fi +} +export -f cleanup +trap cleanup EXIT + +# This test runs a graphical app and checks that it ran OK +# The idea is described here (in Russian): +# https://lists.altlinux.org/pipermail/sisyphus/2018-April/366621.html +graphical_run_test(){ + # Xephyr is an X server in a seperate graphical window - for local tests on developer PCs + # Xvfb is a headless X server - for automated tests + # Let's automatically use Xephyr on developers PCs + if [ -n "$DISPLAY" ] && [ -z "$X_SERVER" ]; then + X_SERVER=Xephyr + fi + X_SERVER="${X_SERVER:-Xvfb}" + + # Keep GUI consistent to compare screenshots + export GTK_THEME=Adwaita:light + + tmp_dir="$(mktemp -d)" + mkdir -p "${tmp_dir}" + echo "Temp dir: ${tmp_dir}" + rm -fvr ${tmp_dir:?}/* + + virt_display="$(( ( RANDOM % 100 ) + 1 ))" + echo "Random DISPLAY = $virt_display" + + case "$X_SERVER" in + Xephyr|xephyr ) + echo "Using Xephyr X server" + Xephyr -br -ac -noreset -screen 1024x720 ":${virt_display}" & + ;; + Xvfb|xvfb ) + echo "Using Xvfb X server" + Xvfb ":${virt_display}" -screen 0 1024x720x24 & + ;; + esac + echo $! > "${tmp_dir}/X-server.pid" + + # export DISPLAY only after running Xephyr, otherwise Xephyr itself tries to use this $DISPLAY + export DISPLAY=":${virt_display}" + + # now run EasyEffects + "$PE_BIN" & + echo $! > "${tmp_dir}/easyeffects.pid" + + # Check that EasyEffects started + # TODO: improve this check + # EasyEffects start up time is different on different systems, you make set yours + # TODO: writee better code and avois using sleep + SLEEP_TIME="${SLEEP_TIME:-10}" + sleep "$SLEEP_TIME" + if ! ps aux | awk '{print $NF}' | grep -v 'grep ' | grep -q "${PE_BIN}\$"; then + echo "$PE_BIN" did not start in "$SLEEP_TIME" seconds, exiting with error! + return 1 + fi + + # take screenshot of our seperate X server + scrot --quality 100 "${tmp_dir}/current_screenshot_full.png" + + # master screenshot of test result + MASTER_SCREENSHOT="${MASTER_SCREENSHOT:-${dir0}/images/master_screenshot_test.png}" + if [ ! -f "$MASTER_SCREENSHOT" ]; then + echo "Master screenshot ${MASTER_SCREENSHOT} not found!" + return 1 + fi + + # reduce nu,ber of colors in screenshot to remove unneeded artefacts and differences + convert +dither -colors 2 "$MASTER_SCREENSHOT" "${tmp_dir}/master_screenshot_reduced.png" + convert +dither -colors 2 "${tmp_dir}/current_screenshot_full.png" "${tmp_dir}/current_screenshot_cropped.png" + # TODO: what will we do with different default fonts? + + # https://stackoverflow.com/questions/29229535/measure-similarity-of-two-images-in-java-or-imagemagick + screenshots_diff_value="$(compare -metric ae "${tmp_dir}/master_screenshot_reduced.png" "${tmp_dir}/current_screenshot_cropped.png" null: 2>&1)" + echo screenshots_diff_value = "$screenshots_diff_value" + + # 8000 is an experimanental value, probably we can somehow find a more exact value + if [ "$screenshots_diff_value" -le 8000 ] + then + echo "Graphical test: OK" + return 0 + else + echo "Graphical test: FAILED !!!" + return 1 + fi + + # trap cleanup will run if nothing else is planned to be after this function +} + +# TODO: parse command line arguements etc. +graphical_run_test diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..bcb9346 --- /dev/null +++ b/.clang-format @@ -0,0 +1,148 @@ +--- +Language: Cpp +# BasedOnStyle: Chromium +AccessModifierOffset: -1 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Left +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Inline +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: true +BinPackParameters: false +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^' + Priority: 2 + - Regex: '^<.*\.h>' + Priority: 1 + - Regex: '^<.*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IncludeIsMainRegex: '([-_](test|unittest))?$' +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 2 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Never +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +RawStringFormats: + - Language: Cpp + Delimiters: + - cc + - CC + - cpp + - Cpp + - CPP + - 'c++' + - 'C++' + CanonicalDelimiter: '' + BasedOnStyle: google + - Language: TextProto + Delimiters: + - pb + - PB + - proto + - PROTO + EnclosingFunctions: + - EqualsProto + - EquivToProto + - PARSE_PARTIAL_TEXT_PROTO + - PARSE_TEST_PROTO + - PARSE_TEXT_PROTO + - ParseTextOrDie + - ParseTextProtoOrDie + CanonicalDelimiter: '' + BasedOnStyle: google +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Auto +TabWidth: 8 +UseTab: Never +... + diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..f6a562d --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,5 @@ +Checks: 'boost-*,bugprone-*,cert-*,cppcoreguidelines-*,modernize-*,performance-*,readability-*, +-clang-analyzer-osx*,-cppcoreguidelines-pro-type-cstyle-cast,-cppcoreguidelines-pro-type-vararg, +-cppcoreguidelines-non-private-member-variables-in-classes,-cppcoreguidelines-avoid-magic-numbers, +-readability-magic-numbers,-cppcoreguidelines-owning-memory, +-readability-function-cognitive-complexity',-bugprone-easily-swappable-parameters diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..eb11def --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,4 @@ +github: wwmm +liberapay: wwmm +patreon: wellingtonwallace +custom: https://www.paypal.com/donate?hosted_button_id=RK723F4EKH2UE diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..e3e6f78 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,58 @@ +name: Bug Report +description: Report an EasyEffects bug +body: +- type: input + attributes: + label: EasyEffects Version + placeholder: EasyEffects Settings > About EasyEffects + validations: + required: true +- type: dropdown + attributes: + label: What package are you using? + options: + - Arch (easyeffects) + - AUR (easyeffects-git) + - Fedora + - Flatpak (Flathub) + - Flatpak Nightly (Flathub-beta) + - Gentoo + - NixOS + - openSUSE + - Other (specify below) + validations: + required: true +- type: input + attributes: + label: Distribution + placeholder: "e.g. Arch Linux, Fedora 35 or Ubuntu 20.04" + validations: + required: true +- type: textarea + attributes: + label: Describe the bug + description: A clear description of the bug you've experienced. + validations: + required: true +- type: textarea + attributes: + label: Expected Behavior + description: A clear and concise description of what you expected to happen. +- type: textarea + attributes: + label: Debug Log + description: If relevant, please add a log by launching with `G_MESSAGES_DEBUG=easyeffects` + value: "
Debug Log
+ + + ``` + + Paste your log here + + ``` + +
" +- type: textarea + attributes: + label: Additional Information + description: If your problem needs further explanation please add more information here. See https://github.com/wwmm/easyeffects/wiki/Reporting-Bugs for suggestions on what you might want to include. diff --git a/.github/workflows/flatpak-build.yaml b/.github/workflows/flatpak-build.yaml new file mode 100644 index 0000000..de91830 --- /dev/null +++ b/.github/workflows/flatpak-build.yaml @@ -0,0 +1,19 @@ +on: + push: + branches: [ master ] + pull_request: +name: CI +jobs: + flatpak: + name: "Flatpak" + runs-on: ubuntu-latest + container: + image: bilelmoussaoui/flatpak-github-actions:gnome-42 + options: --privileged + steps: + - uses: actions/checkout@v2 + - uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4 + with: + bundle: easyeffects.flatpak + manifest-path: util/flatpak/com.github.wwmm.easyeffects.json + cache-key: flatpak-builder-${{ github.sha }} \ No newline at end of file diff --git a/.github/workflows/flatpak-update.yaml b/.github/workflows/flatpak-update.yaml new file mode 100644 index 0000000..762241d --- /dev/null +++ b/.github/workflows/flatpak-update.yaml @@ -0,0 +1,30 @@ +name: Check for flatpak module updates +on: + schedule: # for scheduling to work this file must be in the default branch + - cron: "0 0 * * *" # run every day + workflow_dispatch: # can be manually dispatched under GitHub's "Actions" tab + +jobs: + flatpak-external-data-checker: + runs-on: ubuntu-latest + + strategy: + matrix: + branch: [ master ] # list all branches to check + + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ matrix.branch }} + + - uses: docker://ghcr.io/flathub/flatpak-external-data-checker:latest + env: + GIT_AUTHOR_NAME: Flatpak External Data Checker + GIT_COMMITTER_NAME: Flatpak External Data Checker + # email sets "github-actions[bot]" as commit author, see https://github.community/t/github-actions-bot-email-address/17204/6 + GIT_AUTHOR_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com + GIT_COMMITTER_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com + EMAIL: 41898282+github-actions[bot]@users.noreply.github.com + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + args: --update --always-fork util/flatpak/com.github.wwmm.easyeffects.json \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76c48ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,65 @@ +__pycache__ +_build +build +build-dir +locale +gschemas.compiled +obj-*-linux-gnu +.vscode +node_modules +package-lock.json +compile_commands.json +.clangd +.cache + +# Compiled python modules. +*.pyc + +# binary language files +*.mo + +# patches +*.patch + +\.python-version + +# exclude debian building logs and other junk +debian/* +!debian/changelog +!debian/changelog.tpl +!debian/compat +!debian/control +!debian/copyright +!debian/docs +!debian/pycompat +!debian/rules +!debian/source/format +!debian/build-ppa.sh +!debian/*.install +!debian/*lintian-overrides +!debian/watch +!debian/patches +!debian/patches/*.patch +!debian/source + +/build-ppa.sh + +# Dolphin file manager creates the file .directory to save some folder-specific settings +*.directory + +*-build-deps*.deb + +.build-tools.cson + +ppastats +.autobuild + +# exclude flatpak build directories +util/flatpak/build-dir +util/flatpak/repo +util/flatpak/.flatpak-builder +.flatpak +.flatpak-builder + +# explictly include flatpak patch directory which includes usually ignored patch files +!util/flatpak/patch/**/*.patch diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4513b93 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,299 @@ +# Changelog + +## 6.2.8 +### 2022-07-25 + + +### Features: +- Improved translations + +### Bug fixes: +- Fixed a bug where EasyEffects could crash when closing its window while effects were being applied. + +### Other notes: + + +## 6.2.7 +### 2022-07-18 + + +### Features: +- The bypass state can be saved to the preset file. The reasons why this was done can be seen at https://github.com/wwmm/easyeffects/issues/1039 +- The preset autoloading code compatibility with usb devices has been improved. +- A dialog is shown to the user when a preset fails to load or a preset/impulse file fails to be imported. +- The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of the one from Calf Studio. + +### Bug fixes: +- EasyEffects should not crash anymore when the user locale is not properly configured. +- A workaround was implemented in our icon to deal with the lack of proper SVG support in QT. + +### Other notes: + + +## 6.2.6 +### 2022-06-22 + + +### Features: +- When effects are disable to an application we now set its target metadata to null. This will allow the media session + manager (wireplumber) to properly move the stream to a new device. +- A new configuration option was added. It allows EasyEffects to ignore streams whose purpose is to monitor sink + devices. This will help to fix some of problems our users were having when using OBS. +- The code that shows the stream sample format has been improved +- The rnnoise library is now optional. This should help package maintainers to build + a Debian package. See https://github.com/wwmm/easyeffects/issues/1000 for more information. +- Our logs now show the source code line where the messages are being printed +### Bug fixes: +- The "enable effects" checkbox in our window was not being updated when third party programs like pavucontrol + moved the stream away from our virtual devices. This should be fixed now. +- Fixed a crash that could happen when the maximum autogain history was changed. +- Avoid crashes when pw-mididump is running + + +## 6.2.5 +### 2022-04-30 + + +### Features: +- The interface of the pitch plugin was improved +- Our application icon is now compatible with desktops that uses QT +- Our blocklist code will use the `application.id` tag if the stream sets it +- In order to avoid problems with the mouse scroll the entries in the applications list shown in our `Players/Recorders` tab do not show a volume scale anymore. More details about the problem and the solution for it can be found on https://github.com/wwmm/easyeffects/issues/1211 and https://github.com/wwmm/easyeffects/issues/1427 +- When no application is available for display in the `Players/Recorders` a message will be shown to the user +- Many translation updates +### Bug fixes: +- Fixed a bug where EasyEffeects crashed when the number of points displayed in the spectrum was changed while our pipeline was active and the spectrum widget was visible +- The pipeline latency value displayed in our window could be wrong in some situations. This was fixed. + + +## 6.2.4 +### 2022-03-07 + + +### Features: +- There is a new setting allowing the user to select an inactivity timeout for the pipeline. When no client is playing to or recording from our devices the filters will be unlinked after the timeout is reached. This is done to make sure we do not waste CPU power processing silence. +- The autogain plugin now allows the user to select which of the three loudness are used to calculate the geometric mean. +- The autogain plugin now allows the maximum history to be set and does not use `libebur128` histogram mode anymore. This should avoid the cases where the `Integrated` loudness gets stuck forever in the same value. +- EasyEffects icon has been updated in a way that should make it visible in QT desktops. +### Bug fixes: +- The command line option that returns the global bypass state is working again. + + +## 6.2.3 +### 2022-01-29 + + +### Features: +- The crossfeed filter should deal better with PipeWire's dynamic latency switches. Jumps in volume level should not happen anymore in these situations. + +### Bug fixes: + +- Fixed a bug that prevented mono microphones from properly working with EasyEffects + + +## 6.2.2 +### 2022-01-27 + + +### Features: +- Support for the next PipeWire release `0.3.44` +- The autogain filter should deal better with PipeWire's dynamic latency switches. Jumps in volume level should not happen anymore in these situations. +- We added an option that allows the volume and mute state of our virtual devices to be reset when EasyEffects starts. It should help with the cases were our devices are muted by the audio server for unknown reasons. +- Better support for computer suspending. +- Updated translations + +### Bug fixes: + +- Fixed a bug where trying to create an autoloading profile without having presets caused the application to crash. + + +## 6.2.1 +### 2022-01-05 + + +### Bug fixes: +- Fixed a bug where setting a equalizer band `quality` to `zero` would lead to an application crash. + + +## 6.2.0 +### 2022-01-04 + + +### Features: +- LibAdwaita is used to create some parts of our window and for handling the switching between dark and light themes. +- The settings menu has been redesigned using LibAdwaita widgets. +- Equalizer APO preset import feature has been improved to apply not only the Bell filter, but also other supported ones (at the moment only the Bandpass filter is not available in LSP plugin). +- The `Reset All Settings` function in our menu should work in Flatpak now. +- We have a new option that allows the user to disable our menus `autohide`. This may help to workaround some bugs Popover menus currently have on gtk4. + +### Bug fixes: + +- More robust parsing to import APO presets saved with comma as thousands separator in central frequency band. + +### Other notes: + +- The fmt library is a new dependency https://github.com/fmtlib/fmt. At least while the c++ compilers do not implement its features. This is expected to happen in the next years. +- GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly. + + +## 6.1.5 +### 2021-11-17 + + +### Features: +- It is now possible to combine impulse responses in the Convolver interface. A new impulse file is generated and it should be visible in the impulse list. +- Improved `x axis` drawings in our plots. Now the number of labels is adjusted dynamically depending on our window width. +- The documentation has been updated reflecting the new EasyEffects features. Old references about PulseEffects have been removed. The documentation button has been added in the menu section. + +### Bug fixes: + +- When a spinbutton is filled with an out of range value, now it is updated with the lowest/highest value rather than resetting to the previous one. +- The application window now remembers the maximized state and restores it on the next opening event. + +### Other notes: + +- The `tbb` library is a new dependency https://www.threadingbuildingblocks.org + + +## 6.1.4 +### 2021-10-16 + + +### Features: +- The Limiter and the Multiband Compressor plugins can now use an optional external sidechain. +- The Autogain plugin now allows the user to select which Loudness is used as reference for the volume correction. +- The APO Profile Import feature of Equalizer plugin now parses the "Pre Amplification" parameter. +- Optional Cubic Volume can be enabled in General Settings. + +### Bug fixes: + +- The Spectrum plugin was supposed to enter passthrough whenever it was not visible, but this was happening only when our window was closed. +- Improved support for Assistive Technology. +- The probes used in some filters like the Compressor and the Limiter were not being relinked after changing the order of the plugins in the pipeline. It should be working now. + + +## 6.1.3 +### 2021-10-03 + + +### Features: +- PipeWire monitor streams are now excluded and removed from the applications list. + +### Bug fixes: + +- Hopefully crashes like the one reported at https://github.com/wwmm/easyeffects/issues/1172 are fixed. +- Prevented a case in which Spectrum was crashing. +- Pavucontrol is not added anymore to input applications list on systems with localization different than English. + + +## 6.1.2 +### 2021-09-20 + + +### Features: +- Improved compatibility with WirePlumber. This is needed to run on systems that decided to use it instead of the built-in PipeWire session manager. More information at https://github.com/wwmm/easyeffects/issues/1144. + + +## 6.1.1 +### 2021-09-17 + + +### Features: +- When trying to add an autoloading profile for a device already in the list its target preset will be updated. This way we can change the profile preset without having to remove and recreating it. +- The preset autoloading support implementation was redesigned again. It should work on more hardware now. For more information see https://github.com/wwmm/easyeffects/issues/1051. +- If the Limiter or the Maximizer are set in the last position of the plugin stack, new plugins are added at the second to last position in order to prevent hardware damage on eventually high output level. +- Removing an application from the blocklist, its previous enabled state is restored. + +### Bug fixes: + +- Sometimes when removing imported models from the noise reduction plugin the current used model was not properly updated. This should be fixed now. +- When editing presets files in an external editor, duplicated entries won't be shown in our presets menu. +- Now the blocklist is correctly set when switching presets. +- Now the status of the global bypass button is correctly updated when changing plugin stack. +- Missing icons on the system should not be shown inside the application info UI (if an application icon could not be shown even if you're sure it's correctly installed, please open an issue). +- Some icons not showing in Plasma DE with Breeze icon theme should appear now. + + +## 6.1.0 +### 2021-08-17 + + +### Features: +- Updated Chinese translation. +- Updated Italian translation. +- Added support for the compressor parameter `Boost Amount` +- The multiband compressor plugin now uses the stereo multiband compressor plugin from Linux Studio Plugins instead of the one from Calf Studio. +- The limiter plugin now uses the stereo limiter plugin from Linux Studio Plugins instead of the one from Calf Studio. +- LV2 filters now are spawned in PipeWire graph only when loaded the first time. Once loaded, they remain connected until EasyEffects shutdown. + +### Bug fixes: + +- The echo canceller sampling rate is now properly set. +- The threshold parameter from the deesser plugin is now saved to the preset file. +- Improved band splitting for crystalizer with new default intensity values. +- Depending on the input gain or output gain values the corresponding level bars could not be aligned. +- When adding more equalizer bands they are set to `Bell` instead of `Off`. +- Equalizer APO presets loading is now working properly on locales different than C. +- Improved linking management between port filter nodes in PipeWire. +- The crystalizer plugin signal amplification was too high before. It should be within more reasonable levels now. + + +## 6.0.3 +### 2021-07-16 + + +### Features: +- Improved the resampler used in the plugins that require one(like the rnnoise plugin) +- Updated translations + +### Bug fixes: + +- Setting multiple autoloading presets should be fine now +- Transient windows are now properly set for some plugins dialogs +- The convolver impulse response menu was improved to workaround an issue where the impulse files was not loaded when only one was available in the menu, see https://github.com/wwmm/easyeffects/issues/1011 +- Fixed a bug that could make the pitch plugin to not be properly initialized +- The saturation warning should not displace its neighbor widgets anymore +- Fixed the locale in a few widgets +- Fixed wrong alignment in a few widgets + + +## 6.0.2 +### 2021-07-11 + + +### Features: +- The Loudness plugin is being used again for the reasons described at https://github.com/wwmm/easyeffects/issues/820. This means that http://drobilla.net/plugins/mda/Loudness is an optional dependency again. + +### Bug fixes: + +- Fixed a segmentation fault that happened when optional dependencies were not installed + + +## 6.0.1 +### 2021-07-09 + + +### Features: +- Improved equalizer interface. +- Now we use a sidechain LSP compressor that allows the user to select and external source as the sidechain input. +- We now support the LSP compressor `Boosting` mode. +- When `split-channels` is enabled in the equalizer the imported APO preset will be applied only to the channel being visualized in the window. This will allow to import different presets for each channel instead of just settings the same values to both. + +### Bug fixes: + +- Fixed some segmentation faults that could happen when creating a preset autoloading profile or removing presets + + +## 6.0.0 +### 2021-07-07 + + +### Features: +- This is one of the biggest releases that I have ever made. The amount of changes is so big that it is hard to talk about everything here. +- The following are just the most import ones. People interested on the journey that got us here can take a look at https://github.com/wwmm/easyeffects/issues/904 and https://github.com/wwmm/easyeffects/issues/874. +- The application and its repository have been renamed from PulseEffects to `EasyEffects` +- gtkmm3 was replaced by gtkmm4 +- Gstreamer was replaced by native PipeWire filters. +- Many features were reimplemented from scratch. The preset autoloading is one example. Another remarkable change will be seen in the plugins selection menu. Now the user can show in the window only the plugins that he/she wants to use. +- Boost is no longer a dependency. The price paid for that was a little change in our presets structures. With some patience it is possible to edit PulseEffects presets in a text editor and make them work in EasyEffects. Hopefully someone will come up with a script for this in the feature. +- New libraries are being used and some of the librarires that were optional before are now required diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..41516c1 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,38 @@ +# Contributor: Wellington + +pkgname=easyeffects-git +pkgver=6.1.4.r19.gc63c5dd3 +pkgrel=1 +pkgdesc='Audio Effects for PipeWire Applications' +arch=(x86_64) +url='https://github.com/wwmm/easyeffects' +license=('GPL3') +depends=('gtk4' 'libadwaita' 'glib2' 'pipewire-pulse' 'lilv' 'lv2' 'libsigc++-3.0' 'libsndfile' 'libsamplerate' 'zita-convolver' + 'libebur128' 'rnnoise' 'rubberband' 'fftw' 'libbs2b' 'speexdsp' 'nlohmann-json' 'tbb' 'fmt') +makedepends=('meson' 'itstool' 'appstream-glib') +optdepends=('calf: limiter, exciter, bass enhancer and others' + 'lsp-plugins: equalizer, compressor, delay, loudness' + 'zam-plugins: maximizer' + 'mda.lv2: bass loudness' + 'yelp: in-app help') +source=("easyeffects::git+https://github.com/wwmm/easyeffects.git") +conflicts=(easyeffects) +provides=(easyeffects) +replaces=('pulseeffects') +sha512sums=('SKIP') + +pkgver() { + cd easyeffects + + git describe --long | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' +} + +build() { + arch-meson easyeffects build + + ninja -C build +} + +package() { + DESTDIR="${pkgdir}" ninja install -C build +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..05c6546 --- /dev/null +++ b/README.md @@ -0,0 +1,171 @@ +# EasyEffects + +[![CircleCI](https://circleci.com/gh/wwmm/easyeffects.svg?style=shield)](https://circleci.com/gh/wwmm/easyeffects) +[![Donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/wwmm/donate) +[![Translation Status](https://hosted.weblate.org/widgets/easyeffects/-/287x66-grey.png)](https://hosted.weblate.org/engage/easyeffects/) + +Audio effects for PipeWire applications. + +This application was formerly known as PulseEffects, but it was renamed to EasyEffects after it started to use GTK4 and +GStreamer usage was replaced by native PipeWire filters. + +![GitHub Light](images/easyeffects-light-screenshot-1.png#gh-light-mode-only) +![GitHub Light](images/easyeffects-light-screenshot-2.png#gh-light-mode-only) +![GitHub Light](images/easyeffects-light-screenshot-3.png#gh-light-mode-only) + +![GitHub Dark](images/easyeffects-dark-screenshot-1.png#gh-dark-mode-only) +![GitHub Dark](images/easyeffects-dark-screenshot-2.png#gh-dark-mode-only) +![GitHub Dark](images/easyeffects-dark-screenshot-3.png#gh-dark-mode-only) + +## Effects available + +- Auto gain +- Bass enhancer +- Bass loudness +- Compressor +- Convolver +- Crossfeed +- Crystalizer +- De-esser +- Echo Canceller +- Equalizer +- Exciter +- Filter (low-pass, high-pass, band-pass and band-reject modes) +- Gate +- Limiter +- Loudness +- Maximizer +- Multiband compressor +- Multiband gate +- Noise reduction +- Pitch +- Reverberation +- Stereo tools + +The user has full control over the effects order. Just use the up/down arrows +next to the effect labels on the left side. + +To be able to use all of the effects, you must have the following installed on your system: + +- [Linux Studio plugins](http://lsp-plug.in/?page=home). Version 1.1.24 or higher. +- [Calf Studio plugins](https://calf-studio-gear.org/). Version 0.90.1 or higher. +- [libebur128](https://github.com/jiixyj/libebur128). For Auto Gain. +- [ZamAudio plugins](http://www.zamaudio.com/). For Maximizer. +- [zita-convolver](https://kokkinizita.linuxaudio.org/linuxaudio/). For Convolver. +- [rubberband](https://www.breakfastquay.com/rubberband/). For Pitch Shift. +- [RNNoise](https://github.com/xiph/rnnoise). For Noise Reduction. +- [libsamplerate](http://www.mega-nerd.com/SRC/index.html) +- [libsndfile](http://www.mega-nerd.com/libsndfile/) +- [libbs2b](https://sourceforge.net/projects/bs2b/files/libbs2b/) +- [fftw](https://fftw.org/) +- [speexdsp](https://www.speex.org/) +- [nlohmann json](https://github.com/nlohmann/json) +- [tbb](https://www.threadingbuildingblocks.org) + +## Donate + +You can help me to keep developing EasyEffects through donations. Any amount will be greatly appreciated :-) + + + + + + + + + + + + + + + + + + +
https://github.com/sponsors/wwmmGithub Sponsors
https://liberapay.com/wwmmDonate using Liberapay
https://www.patreon.com/wellingtonwallace?fan_landing=truePatreon
https://www.paypal.com/donate?hosted_button_id=RK723F4EKH2UEPayPal
+ +## Changelog + +- For information about changes between versions, take a look at our + [changelog](https://github.com/wwmm/easyeffects/blob/master/CHANGELOG.md) + +## Warning +DON'T SET EasyEffects virtual devices as default +EasyEffects is designed assuming that your hardware stays as default + +## Installation + +### Distribution-specific packages + +These Linux distributions have EasyEffects packages: + +- [Arch Linux](https://www.archlinux.org/packages/community/x86_64/easyeffects/) / [AUR Git version](https://aur.archlinux.org/packages/easyeffects-git/) +- [openSUSE](https://software.opensuse.org/package/easyeffects) +- [NixOS](https://search.nixos.org/packages?channel=unstable&show=easyeffects&query=easyeffects) +- [Gentoo](https://packages.gentoo.org/packages/media-sound/easyeffects) +- [Fedora](https://src.fedoraproject.org/rpms/easyeffects) + + + + + +### Flatpak + +Alternatively, click here to install via Flatpak: + +Download EasyEffects on Flathub + +Flatpak packages support most Linux distributions and are sandboxed. The EasyEffects Flatpak package also includes all available plugins. + +If your distribution does not yet include packages required to build EasyEffects, Flatpak is a convenient option. + +#### Nightly Flatpak + +A nightly Flatpak package is also available, to provide the latest changes. See the [installation instructions](https://github.com/wwmm/easyeffects/wiki/Package-Repositories#nightly-flatpak). + +### Installing from source + +To install from source, see the wiki's [Installing from Source](https://github.com/wwmm/easyeffects/wiki/Installation-from-Source) article for detailed instructions. + +## Documentation + +EasyEffects documentation can be read inside the GUI if the +[yelp](https://gitlab.gnome.org/GNOME/yelp) package is installed. + +## Frequently asked questions + +Take a look at our [FAQ](https://github.com/wwmm/easyeffects/wiki/FAQ) to see +if you are facing a known issue. + +## Command-line options + +See the wiki: [Command Line Options](https://github.com/wwmm/easyeffects/wiki/Command-Line-Options) + +## Community presets + +See the wiki: [Community presets](https://github.com/wwmm/easyeffects/wiki/Community-presets) + +This page also has instructions for converting PulseEffects presets to EasyEffects presets. + +## Reporting bugs + +See the wiki: [Reporting Bugs](https://github.com/wwmm/easyeffects/wiki/Reporting-bugs) + +## Translating EasyEffects + +See the wiki's [Translating EasyEffects](https://github.com/wwmm/easyeffects/wiki/Translating-EasyEffects) article for detailed instructions. + +## License + +EasyEffects is licensed under GNU General Public License version 3. See the [LICENSE file](https://github.com/wwmm/easyeffects/blob/master/LICENSE.md). diff --git a/data/com.github.wwmm.easyeffects-symbolic.svg b/data/com.github.wwmm.easyeffects-symbolic.svg new file mode 100644 index 0000000..35973b0 --- /dev/null +++ b/data/com.github.wwmm.easyeffects-symbolic.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/com.github.wwmm.easyeffects.Source.svg b/data/com.github.wwmm.easyeffects.Source.svg new file mode 100644 index 0000000..4bb5b56 --- /dev/null +++ b/data/com.github.wwmm.easyeffects.Source.svg @@ -0,0 +1,906 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + Hicolor + Symbolic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + diff --git a/data/com.github.wwmm.easyeffects.desktop.in b/data/com.github.wwmm.easyeffects.desktop.in new file mode 100644 index 0000000..7f855e5 --- /dev/null +++ b/data/com.github.wwmm.easyeffects.desktop.in @@ -0,0 +1,14 @@ +[Desktop Entry] +Name=EasyEffects +GenericName=Equalizer, Compressor and Other Audio Effects +Comment=Audio Effects for PipeWire Applications +Keywords=limiter;compressor;reverberation;equalizer;autovolume; +Categories=GTK;AudioVideo;Audio; +Exec=easyeffects +# Translators: This is an icon name, don't translate! +Icon=com.github.wwmm.easyeffects +StartupNotify=true +DBusActivatable=true +X-GNOME-UsesNotifications=true +Terminal=false +Type=Application diff --git a/data/com.github.wwmm.easyeffects.metainfo.xml.in b/data/com.github.wwmm.easyeffects.metainfo.xml.in new file mode 100644 index 0000000..77fb368 --- /dev/null +++ b/data/com.github.wwmm.easyeffects.metainfo.xml.in @@ -0,0 +1,324 @@ + + + com.github.wwmm.easyeffects.desktop + EasyEffects + Audio Effects for PipeWire Applications + CC0-1.0 + GPL-3.0 + Wellington Wallace + +

EasyEffects is an advanced audio manipulation tool. It includes an equalizer, limiter, compressor and a reverberation tool, just to mention a few. To complement this there is also a built in spectrum analyzer.

+

EasyEffects is the successor to PulseEffects. EasyEffects only supports PipeWire's audio server. PulseAudio users should instead use PulseEffects.

+

Because EasyEffects uses the default PipeWire sound server it will work with most, if not all, applications you use. All supported applications are presented in the main window, where each can be enabled individually.

+

Besides manipulating sound output, EasyEffects is able to apply effects to an input device, such as a microphone. This is, for example, useful in audio recording, but it also works well during voice conversations.

+

When EasyEffects is launched it will conveniently remember the configuration used in the last session. It is also possible to save all the current settings as profiles.

+
+ com.github.wwmm.easyeffects.desktop + https://github.com/wwmm/easyeffects + https://github.com/wwmm/easyeffects/issues + https://github.com/wwmm/easyeffects/blob/master/README.md + EasyEffects + + + The main page showing two audio output apps + https://raw.githubusercontent.com/wwmm/easyeffects/master/images/easyeffects-light-screenshot-1.png + + + The bass enhancer page showing audio controls + https://raw.githubusercontent.com/wwmm/easyeffects/master/images/easyeffects-light-screenshot-2.png + + + The convolver page showing audio controls + https://raw.githubusercontent.com/wwmm/easyeffects/master/images/easyeffects-light-screenshot-3.png + + + + + +
    +
  • Features:
  • +
  • Improved translations
  • +
  • Bug fixes:
  • +
  • Fixed a bug where EasyEffects could crash when closing its window while effects were being applied.
  • +
  • Other notes:
  • +
+
+
+ + +
    +
  • Features:
  • +
  • The bypass state can be saved to the preset file. The reasons why this was done can be seen at issue 1039
  • +
  • The preset autoloading code compatibility with usb devices has been improved.
  • +
  • A dialog is shown to the user when a preset fails to load or a preset/impulse file fails to be imported.
  • +
  • The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of the one from Calf Studio.
  • +
  • Bug fixes:
  • +
  • EasyEffects should not crash anymore when the user locale is not properly configured.
  • +
  • A workaround was implemented in our icon to deal with the lack of proper SVG support in QT.
  • +
  • Other notes:
  • +
+
+
+ + +
    +
  • Features:
  • +
  • When effects are disable to an application we now set its target metadata to null. This will allow the media session manager (wireplumber) to properly move the stream to a new device.
  • +
  • A new configuration option was added. It allows EasyEffects to ignore streams whose purpose is to monitor sink devices. This will help to fix some of problems our users were having when using OBS.
  • +
  • The code that shows the stream sample format has been improved
  • +
  • The rnnoise library is now optional. This should help package maintainers to build a Debian package. See issue 1000 for more information.
  • +
  • Our logs now show the source code line where the messages are being printed
  • +
  • Bug fixes:
  • +
  • The "enable effects" checkbox in our window was not being updated when third party programs like pavucontrol moved the stream away from our virtual devices. This should be fixed now.
  • +
  • Fixed a crash that could happen when the maximum autogain history was changed.
  • +
  • Avoid crashes when pw-mididump is running
  • +
+
+
+ + +
    +
  • Features:
  • +
  • The interface of the pitch plugin was improved
  • +
  • Our application icon is now compatible with desktops that uses QT
  • +
  • Our blocklist code will use the `application.id` tag if the stream sets it
  • +
  • In order to avoid problems with the mouse scroll the entries in the applications list shown in our `Players/Recorders` tab do not show a volume scale anymore. More details about the problem and the solution for it can be found on issue 1211 and issue 1427
  • +
  • When no application is available for display in the `Players/Recorders` a message will be shown to the user
  • +
  • Many translation updates
  • +
  • Bug fixes:
  • +
  • Fixed a bug where EasyEffeects crashed when the number of points displayed in the spectrum was changed while our pipeline was active and the spectrum widget was visible
  • +
  • The pipeline latency value displayed in our window could be wrong in some situations. This was fixed.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • There is a new setting allowing the user to select an inactivity timeout for the pipeline. When no client is playing to or recording from our devices the filters will be unlinked after the timeout is reached. This is done to make sure we do not waste CPU power processing silence.
  • +
  • The autogain plugin now allows the user to select which of the three loudness are used to calculate the geometric mean.
  • +
  • The autogain plugin now allows the maximum history to be set and does not use `libebur128` histogram mode anymore. This should avoid the cases where the `Integrated` loudness gets stuck forever in the same value.
  • +
  • EasyEffects icon has been updated in a way that should make it visible in QT desktops.
  • +
  • Bug fixes:
  • +
  • The command line option that returns the global bypass state is working again.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • The crossfeed filter should deal better with PipeWire's dynamic latency switches. Jumps in volume level should not happen anymore in these situations.
  • +
  • Bug fixes:
  • +
  • Fixed a bug that prevented mono microphones from properly working with EasyEffects
  • +
+
+
+ + +
    +
  • Features:
  • +
  • Support for the next PipeWire release `0.3.44`
  • +
  • The autogain filter should deal better with PipeWire's dynamic latency switches. Jumps in volume level should not happen anymore in these situations.
  • +
  • We added an option that allows the volume and mute state of our virtual devices to be reset when EasyEffects starts. It should help with the cases were our devices are muted by the audio server for unknown reasons.
  • +
  • Better support for computer suspending.
  • +
  • Updated translations
  • +
  • Bug fixes:
  • +
  • Fixed a bug where trying to create an autoloading profile without having presets caused the application to crash.
  • +
+
+
+ + +
    +
  • Bug fixes:
  • +
  • Fixed a bug where setting a equalizer band `quality` to `zero` would lead to an application crash.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • LibAdwaita is used to create some parts of our window and for handling the switching between dark and light themes.
  • +
  • The settings menu has been redesigned using LibAdwaita widgets.
  • +
  • Equalizer APO preset import feature has been improved to apply not only the Bell filter, but also other supported ones (at the moment only the Bandpass filter is not available in LSP plugin).
  • +
  • The `Reset All Settings` function in our menu should work in Flatpak now.
  • +
  • We have a new option that allows the user to disable our menus `autohide`. This may help to workaround some bugs Popover menus currently have on gtk4.
  • +
  • Bug fixes:
  • +
  • More robust parsing to import APO presets saved with comma as thousands separator in central frequency band.
  • +
  • Other notes:
  • +
  • The fmt library is a new dependency At least while the c++ compilers do not implement its features. This is expected to happen in the next years.
  • +
  • GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • It is now possible to combine impulse responses in the Convolver interface. A new impulse file is generated and it should be visible in the impulse list.
  • +
  • Improved `x axis` drawings in our plots. Now the number of labels is adjusted dynamically depending on our window width.
  • +
  • The documentation has been updated reflecting the new EasyEffects features. Old references about PulseEffects have been removed. The documentation button has been added in the menu section.
  • +
  • Bug fixes:
  • +
  • When a spinbutton is filled with an out of range value, now it is updated with the lowest/highest value rather than resetting to the previous one.
  • +
  • The application window now remembers the maximized state and restores it on the next opening event.
  • +
  • Other notes:
  • +
  • The `tbb` library is a new dependency
  • +
+
+
+ + +
    +
  • Features:
  • +
  • The Limiter and the Multiband Compressor plugins can now use an optional external sidechain.
  • +
  • The Autogain plugin now allows the user to select which Loudness is used as reference for the volume correction.
  • +
  • The APO Profile Import feature of Equalizer plugin now parses the "Pre Amplification" parameter.
  • +
  • Optional Cubic Volume can be enabled in General Settings.
  • +
  • Bug fixes:
  • +
  • The Spectrum plugin was supposed to enter passthrough whenever it was not visible, but this was happening only when our window was closed.
  • +
  • Improved support for Assistive Technology.
  • +
  • The probes used in some filters like the Compressor and the Limiter were not being relinked after changing the order of the plugins in the pipeline. It should be working now.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • PipeWire monitor streams are now excluded and removed from the applications list.
  • +
  • Bug fixes:
  • +
  • Hopefully crashes like the one reported at issue 1172 are fixed.
  • +
  • Prevented a case in which Spectrum was crashing.
  • +
  • Pavucontrol is not added anymore to input applications list on systems with localization different than English.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • Improved compatibility with WirePlumber. This is needed to run on systems that decided to use it instead of the built-in PipeWire session manager. More information at issue 1144.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • When trying to add an autoloading profile for a device already in the list its target preset will be updated. This way we can change the profile preset without having to remove and recreating it.
  • +
  • The preset autoloading support implementation was redesigned again. It should work on more hardware now. For more information see issue 1051.
  • +
  • If the Limiter or the Maximizer are set in the last position of the plugin stack, new plugins are added at the second to last position in order to prevent hardware damage on eventually high output level.
  • +
  • Removing an application from the blocklist, its previous enabled state is restored.
  • +
  • Bug fixes:
  • +
  • Sometimes when removing imported models from the noise reduction plugin the current used model was not properly updated. This should be fixed now.
  • +
  • When editing presets files in an external editor, duplicated entries won't be shown in our presets menu.
  • +
  • Now the blocklist is correctly set when switching presets.
  • +
  • Now the status of the global bypass button is correctly updated when changing plugin stack.
  • +
  • Missing icons on the system should not be shown inside the application info UI (if an application icon could not be shown even if you're sure it's correctly installed, please open an issue).
  • +
  • Some icons not showing in Plasma DE with Breeze icon theme should appear now.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • Updated Chinese translation.
  • +
  • Updated Italian translation.
  • +
  • Added support for the compressor parameter `Boost Amount`
  • +
  • The multiband compressor plugin now uses the stereo multiband compressor plugin from Linux Studio Plugins instead of the one from Calf Studio.
  • +
  • The limiter plugin now uses the stereo limiter plugin from Linux Studio Plugins instead of the one from Calf Studio.
  • +
  • LV2 filters now are spawned in PipeWire graph only when loaded the first time. Once loaded, they remain connected until EasyEffects shutdown.
  • +
  • Bug fixes:
  • +
  • The echo canceller sampling rate is now properly set.
  • +
  • The threshold parameter from the deesser plugin is now saved to the preset file.
  • +
  • Improved band splitting for crystalizer with new default intensity values.
  • +
  • Depending on the input gain or output gain values the corresponding level bars could not be aligned.
  • +
  • When adding more equalizer bands they are set to `Bell` instead of `Off`.
  • +
  • Equalizer APO presets loading is now working properly on locales different than C.
  • +
  • Improved linking management between port filter nodes in PipeWire.
  • +
  • The crystalizer plugin signal amplification was too high before. It should be within more reasonable levels now.
  • +
+
+
+ + +
    +
  • Features:
  • +
  • Improved the resampler used in the plugins that require one(like the rnnoise plugin)
  • +
  • Updated translations
  • +
  • Bug fixes:
  • +
  • Setting multiple autoloading presets should be fine now
  • +
  • Transient windows are now properly set for some plugins dialogs
  • +
  • The convolver impulse response menu was improved to workaround an issue where the impulse files was not loaded when only one was available in the menu, see issue 1011
  • +
  • Fixed a bug that could make the pitch plugin to not be properly initialized
  • +
  • The saturation warning should not displace its neighbor widgets anymore
  • +
  • Fixed the locale in a few widgets
  • +
  • Fixed wrong alignment in a few widgets
  • +
+
+
+ + +
    +
  • Features:
  • +
  • The Loudness plugin is being used again for the reasons described at issue 820. This means that is an optional dependency again.
  • +
  • Bug fixes:
  • +
  • Fixed a segmentation fault that happened when optional dependencies were not installed
  • +
+
+
+ + +
    +
  • Features:
  • +
  • Improved equalizer interface.
  • +
  • Now we use a sidechain LSP compressor that allows the user to select and external source as the sidechain input.
  • +
  • We now support the LSP compressor `Boosting` mode.
  • +
  • When `split-channels` is enabled in the equalizer the imported APO preset will be applied only to the channel being visualized in the window. This will allow to import different presets for each channel instead of just settings the same values to both.
  • +
  • Bug fixes:
  • +
  • Fixed some segmentation faults that could happen when creating a preset autoloading profile or removing presets
  • +
+
+
+ + +
    +
  • Features:
  • +
  • This is one of the biggest releases that I have ever made. The amount of changes is so big that it is hard to talk about everything here.
  • +
  • The following are just the most import ones. People interested on the journey that got us here can take a look at issue 904 and issue 874.
  • +
  • The application and its repository have been renamed from PulseEffects to `EasyEffects`
  • +
  • gtkmm3 was replaced by gtkmm4
  • +
  • Gstreamer was replaced by native PipeWire filters.
  • +
  • Many features were reimplemented from scratch. The preset autoloading is one example. Another remarkable change will be seen in the plugins selection menu. Now the user can show in the window only the plugins that he/she wants to use.
  • +
  • Boost is no longer a dependency. The price paid for that was a little change in our presets structures. With some patience it is possible to edit PulseEffects presets in a text editor and make them work in EasyEffects. Hopefully someone will come up with a script for this in the feature.
  • +
  • New libraries are being used and some of the librarires that were optional before are now required
  • +
+
+
+
+ + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + +
diff --git a/data/com.github.wwmm.easyeffects.service.in b/data/com.github.wwmm.easyeffects.service.in new file mode 100644 index 0000000..0493f58 --- /dev/null +++ b/data/com.github.wwmm.easyeffects.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=com.github.wwmm.easyeffects +Exec=@bindir@/easyeffects --gapplication-service diff --git a/data/com.github.wwmm.easyeffects.svg b/data/com.github.wwmm.easyeffects.svg new file mode 100644 index 0000000..8a52239 --- /dev/null +++ b/data/com.github.wwmm.easyeffects.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/easyeffects.gresource.xml b/data/easyeffects.gresource.xml new file mode 100644 index 0000000..92ceb0f --- /dev/null +++ b/data/easyeffects.gresource.xml @@ -0,0 +1,63 @@ + + + + ui/custom.css + ui/application_window.ui + ui/app_info.ui + ui/apps_box.ui + ui/autogain.ui + ui/autoload_row.ui + ui/bass_enhancer.ui + ui/bass_loudness.ui + ui/blocklist_menu.ui + ui/chart.ui + ui/compressor.ui + ui/convolver.ui + ui/convolver_menu_impulses.ui + ui/convolver_menu_combine.ui + ui/crossfeed.ui + ui/crystalizer.ui + ui/crystalizer_band.ui + ui/deesser.ui + ui/delay.ui + ui/echo_canceller.ui + ui/effects_box.ui + ui/equalizer.ui + ui/equalizer_band.ui + ui/exciter.ui + ui/factory_clients_listview.ui + ui/factory_input_device_dropdown.ui + ui/factory_modules_listview.ui + ui/factory_output_device_dropdown.ui + ui/factory_presets_dropdown.ui + ui/factory_rnnoise_listview.ui + ui/filter.ui + ui/gate.ui + ui/limiter.ui + ui/loudness.ui + ui/maximizer.ui + ui/multiband_compressor.ui + ui/multiband_compressor_band.ui + ui/multiband_gate.ui + ui/pipe_manager_box.ui + ui/pitch.ui + ui/plugin_row.ui + ui/plugins_box.ui + ui/plugins_menu.ui + ui/preferences_general.ui + ui/preferences_spectrum.ui + ui/preferences_window.ui + ui/preset_row.ui + ui/presets_menu.ui + ui/reverb.ui + ui/rnnoise.ui + ui/shortcuts.ui + ui/stereo_tools.ui + icons/scalable/emblems/ee-arrow-down-symbolic.svg + icons/scalable/emblems/ee-spectrum-symbolic.svg + icons/scalable/emblems/ee-drag-handle-symbolic.svg + icons/scalable/emblems/ee-arrows-right-symbolic.svg + icons/scalable/emblems/ee-bypass-symbolic.svg + icons/scalable/emblems/ee-applications-multimedia-symbolic.svg + + \ No newline at end of file diff --git a/data/icons/scalable/emblems/credits.txt b/data/icons/scalable/emblems/credits.txt new file mode 100644 index 0000000..6b8854f --- /dev/null +++ b/data/icons/scalable/emblems/credits.txt @@ -0,0 +1,13 @@ +- Icons I have made: + +ee-spectrum-symbolic + +- Icons I did not make: + +ee-arrow-down-symbolic is the icon "folder-download-symbolic" from the Adwaita package +ee-square-symbolic is the icon "media-playback-stop-symbolic" from the Adwaita package +ee-plugins-symbolic is the icon "application-x-addon-symbolic" from the Adwaita package +ee-drag-handle-symbolic is the icon "list-drag-handle-symbolic" from the Adwaita package +ee-arrows-right-symbolic is the icon "media-playlist-consecutive-symbolic" from the Adwaita package +ee-bypass-symbolic is the icon "system-log-out-symbolic" from the Adwaita package +ee-applications-multimedia-symbolic is the icon "applications-multimedia-symbolic" from the Adwaita package diff --git a/data/icons/scalable/emblems/ee-applications-multimedia-symbolic.svg b/data/icons/scalable/emblems/ee-applications-multimedia-symbolic.svg new file mode 100644 index 0000000..3169f6f --- /dev/null +++ b/data/icons/scalable/emblems/ee-applications-multimedia-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/icons/scalable/emblems/ee-arrow-down-symbolic.svg b/data/icons/scalable/emblems/ee-arrow-down-symbolic.svg new file mode 100644 index 0000000..15dea0d --- /dev/null +++ b/data/icons/scalable/emblems/ee-arrow-down-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/scalable/emblems/ee-arrows-right-symbolic.svg b/data/icons/scalable/emblems/ee-arrows-right-symbolic.svg new file mode 100644 index 0000000..5eebc2c --- /dev/null +++ b/data/icons/scalable/emblems/ee-arrows-right-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/icons/scalable/emblems/ee-bypass-symbolic.svg b/data/icons/scalable/emblems/ee-bypass-symbolic.svg new file mode 100644 index 0000000..0323d19 --- /dev/null +++ b/data/icons/scalable/emblems/ee-bypass-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/icons/scalable/emblems/ee-drag-handle-symbolic.svg b/data/icons/scalable/emblems/ee-drag-handle-symbolic.svg new file mode 100644 index 0000000..0f59408 --- /dev/null +++ b/data/icons/scalable/emblems/ee-drag-handle-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/scalable/emblems/ee-spectrum-symbolic.svg b/data/icons/scalable/emblems/ee-spectrum-symbolic.svg new file mode 100644 index 0000000..5385dde --- /dev/null +++ b/data/icons/scalable/emblems/ee-spectrum-symbolic.svg @@ -0,0 +1,54 @@ + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..c46b272 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,94 @@ +schemadir = join_paths(datadir, 'glib-2.0', 'schemas') + +install_data([ + 'schemas/com.github.wwmm.easyeffects.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.autogain.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.bassenhancer.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.bassloudness.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.compressor.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.convolver.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.crossfeed.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.crystalizer.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.deesser.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.delay.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.echo_canceller.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.equalizer.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.equalizer.channel.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.exciter.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.filter.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.gate.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.limiter.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.loudness.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.maximizer.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.multibandcompressor.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.multibandgate.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.outputlevel.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.pitch.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.reverb.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.rnnoise.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.spectrum.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.streamoutputs.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.stereotools.gschema.xml', + 'schemas/com.github.wwmm.easyeffects.streaminputs.gschema.xml' +], install_dir: schemadir) + +metainfo_file = i18n_mod.merge_file( + input: 'com.github.wwmm.easyeffects.metainfo.xml.in', + output: 'com.github.wwmm.easyeffects.metainfo.xml', + po_dir: '../po', + install: true, + install_dir: join_paths(datadir, 'metainfo') +) + +# Validate merged AppStream metainfo file +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test('Validate appstream file', appstream_util, + args: ['validate-relax', '--nonet', metainfo_file] + ) +endif + +desktop_file = i18n_mod.merge_file( + input: 'com.github.wwmm.easyeffects.desktop.in', + output: 'com.github.wwmm.easyeffects.desktop', + type: 'desktop', + po_dir: '../po', + install: true, + install_dir: join_paths(datadir, 'applications') +) + +# Validate merged desktop entry file +desktop_utils = find_program('desktop-file-validate', required: false) +if desktop_utils.found() + test('Validate desktop file', desktop_utils, + args: [desktop_file] + ) +endif + +icondir = join_paths(datadir, 'icons', 'hicolor') +install_data('com.github.wwmm.easyeffects.svg', + install_dir: join_paths(icondir, 'scalable', 'apps') +) + +install_data('com.github.wwmm.easyeffects-symbolic.svg', + install_dir: join_paths(icondir, 'symbolic', 'apps') +) + +conf_glade = configuration_data() +conf_glade.set('PROJECT_VERSION', meson.project_version()) + +gresources = gnome_mod.compile_resources( + 'easyeffects-resources', + 'easyeffects.gresource.xml', + c_name: meson.project_name() +) + +dbusconf = configuration_data() +dbusconf.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) + +configure_file( + input: 'com.github.wwmm.easyeffects.service.in', + output: 'com.github.wwmm.easyeffects.service', + configuration: dbusconf, + install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services'), +) diff --git a/data/presets/gstreamer_ballad.json b/data/presets/gstreamer_ballad.json new file mode 100644 index 0000000..236fd04 --- /dev/null +++ b/data/presets/gstreamer_ballad.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "4", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "3.75", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "2.5", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "0", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "-4", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "-6", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "-3", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "0", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "2.5", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "9", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_classic.json b/data/presets/gstreamer_classic.json new file mode 100644 index 0000000..ec91872 --- /dev/null +++ b/data/presets/gstreamer_classic.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "0", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "0", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "0", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "0", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "0", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "0", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "-6", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "-7", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "-7", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "-9.5", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_club.json b/data/presets/gstreamer_club.json new file mode 100644 index 0000000..532cbdd --- /dev/null +++ b/data/presets/gstreamer_club.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "0", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "0", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "8", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "6", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "5.5", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "5", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "3", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "0", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "0", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "0", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_dance.json b/data/presets/gstreamer_dance.json new file mode 100644 index 0000000..4f260f5 --- /dev/null +++ b/data/presets/gstreamer_dance.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "9.6", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "7", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "2.5", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "0", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "0", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "-5.6", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "-7", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "-7", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "0", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "0", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_more_bass.json b/data/presets/gstreamer_more_bass.json new file mode 100644 index 0000000..e191966 --- /dev/null +++ b/data/presets/gstreamer_more_bass.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "-8", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "10", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "10", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "5.5", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "1.5", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "-4", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "-8", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "-10", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "-11", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "-11", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_more_bass_and_treble.json b/data/presets/gstreamer_more_bass_and_treble.json new file mode 100644 index 0000000..7e82eb8 --- /dev/null +++ b/data/presets/gstreamer_more_bass_and_treble.json @@ -0,0 +1,109 @@ + { + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "8", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "5.5", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "0", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "-7", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "-5", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "1.5", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "8", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "11.2", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "12", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "12", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } + } \ No newline at end of file diff --git a/data/presets/gstreamer_party.json b/data/presets/gstreamer_party.json new file mode 100644 index 0000000..c6d2c0f --- /dev/null +++ b/data/presets/gstreamer_party.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "7", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "7", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "0", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "0", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "0", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "0", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "0", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "0", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "7", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "7", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_pop.json b/data/presets/gstreamer_pop.json new file mode 100644 index 0000000..145affb --- /dev/null +++ b/data/presets/gstreamer_pop.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "-1.6", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "4.5", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "7", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "8", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "5.6", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "0", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "-2.5", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "-2", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "-1.6", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "-1.5", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_reggae.json b/data/presets/gstreamer_reggae.json new file mode 100644 index 0000000..f2e655c --- /dev/null +++ b/data/presets/gstreamer_reggae.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "0", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "0", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "0", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "-5.5", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "0", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "6.5", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "6.5", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "0", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "0", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "0", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_rock.json b/data/presets/gstreamer_rock.json new file mode 100644 index 0000000..ec99337 --- /dev/null +++ b/data/presets/gstreamer_rock.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "8", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "5", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "-5.5", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "-8", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "-3", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "4", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "8", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "11", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "11", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "11.5", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_ska.json b/data/presets/gstreamer_ska.json new file mode 100644 index 0000000..1de0f5f --- /dev/null +++ b/data/presets/gstreamer_ska.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "-2.5", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "-5", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "-4", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "0", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "4", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "5.5", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "8", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "9", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "11", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "9", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_soft.json b/data/presets/gstreamer_soft.json new file mode 100644 index 0000000..5830e22 --- /dev/null +++ b/data/presets/gstreamer_soft.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "5", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "1.5", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "0", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "-2.5", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "0", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "4", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "8", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "9", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "11", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "12", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/gstreamer_techno.json b/data/presets/gstreamer_techno.json new file mode 100644 index 0000000..ca3efb6 --- /dev/null +++ b/data/presets/gstreamer_techno.json @@ -0,0 +1,109 @@ +{ + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "8", + "frequency": "29.952623149688797", + "width": "19.905246299377595", + "type": "Lo-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "5.5", + "frequency": "59.763340205038524", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "0", + "frequency": "119.24354052777788", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "-5.5", + "frequency": "237.92214271853953", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "-5", + "frequency": "474.71708526294935", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "0", + "frequency": "947.18511049703125", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "8", + "frequency": "1889.8827562743609", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "10", + "frequency": "3770.8118433037489", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "10", + "frequency": "7523.7587677823067", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "9", + "frequency": "15011.872336272731", + "width": "9976.2553274545608", + "type": "Hi-shelf", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } +} \ No newline at end of file diff --git a/data/presets/ziyad_perfecteq.json b/data/presets/ziyad_perfecteq.json new file mode 100644 index 0000000..cb489b7 --- /dev/null +++ b/data/presets/ziyad_perfecteq.json @@ -0,0 +1,109 @@ + { + "equalizer": { + "state": "true", + "mode": "IIR", + "num-bands": "10", + "input-gain": "0", + "output-gain": "0", + "band0": { + "gain": "4", + "frequency": "32", + "width": "19.905246299377595", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band1": { + "gain": "2", + "frequency": "64", + "width": "39.716187811321859", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band2": { + "gain": "1", + "frequency": "125", + "width": "79.244212834156855", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band3": { + "gain": "0", + "frequency": "250", + "width": "158.11299154736642", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band4": { + "gain": "-1", + "frequency": "500", + "width": "315.47689354145319", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band5": { + "gain": "-2", + "frequency": "1000", + "width": "629.45915692671076", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band6": { + "gain": "0", + "frequency": "2000", + "width": "1255.9361346279484", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band7": { + "gain": "2", + "frequency": "4000", + "width": "2505.9220394308272", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band8": { + "gain": "3", + "frequency": "8000", + "width": "4999.9718095262879", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + }, + "band9": { + "gain": "3", + "frequency": "16000", + "width": "9976.2553274545608", + "type": "Bell", + "mode": "RLC (BT)", + "slope": "x1", + "solo": "false", + "mute": "false" + } + } + } \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.autogain.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.autogain.gschema.xml new file mode 100644 index 0000000..df9f67b --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.autogain.gschema.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + + -23 + + + false + + + "Geometric Mean (MSI)" + + + + 15 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.bassenhancer.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.bassenhancer.gschema.xml new file mode 100644 index 0000000..061595f --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.bassenhancer.gschema.xml @@ -0,0 +1,42 @@ + + + + + false + + + + 0 + + + + 0 + + + + 0 + + + + 8.5 + + + + 100 + + + + 20 + + + + 0 + + + false + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.bassloudness.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.bassloudness.gschema.xml new file mode 100644 index 0000000..57d4073 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.bassloudness.gschema.xml @@ -0,0 +1,31 @@ + + + + + false + + + + 0 + + + + 0 + + + + -3.1 + + + + -6 + + + + -9.1 + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.compressor.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.compressor.gschema.xml new file mode 100644 index 0000000..65a3f3f --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.compressor.gschema.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + "Downward" + + + + 20 + + + + 100 + + + + -120 + + + + -12 + + + + 4 + + + + -6 + + + + 0 + + + + 6 + + + + -72 + + + false + + + "Feed-forward" + + + "RMS" + + + "Middle" + + + + 0 + + + + 10 + + + + 0 + + + "off" + + + + 10 + + + "off" + + + + 20000 + + + "" + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.convolver.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.convolver.gschema.xml new file mode 100644 index 0000000..0dfbd84 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.convolver.gschema.xml @@ -0,0 +1,26 @@ + + + + + false + + + + 0 + + + + 0 + + + "" + + + + 100 + + + true + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.crossfeed.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.crossfeed.gschema.xml new file mode 100644 index 0000000..8d8078e --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.crossfeed.gschema.xml @@ -0,0 +1,24 @@ + + + + + false + + + + 0 + + + + 0 + + + + 700 + + + + 4.5 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.crystalizer.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.crystalizer.gschema.xml new file mode 100644 index 0000000..fb6ae48 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.crystalizer.gschema.xml @@ -0,0 +1,149 @@ + + + + + false + + + + 0 + + + + 0 + + + + + 0 + + + + -1 + + + + -2 + + + + -3 + + + + -4 + + + + -5 + + + + -6 + + + + -7 + + + + -8 + + + + -9 + + + + -10 + + + + -11 + + + + -12 + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.deesser.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.deesser.gschema.xml new file mode 100644 index 0000000..dd568a1 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.deesser.gschema.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + "RMS" + + + "Wide" + + + + -18 + + + + 3 + + + + 15 + + + + 0 + + + + 6000 + + + + 4500 + + + + 0 + + + + 12 + + + + 1 + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.delay.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.delay.gschema.xml new file mode 100644 index 0000000..a8288ec --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.delay.gschema.xml @@ -0,0 +1,24 @@ + + + + + false + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.echo_canceller.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.echo_canceller.gschema.xml new file mode 100644 index 0000000..c530445 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.echo_canceller.gschema.xml @@ -0,0 +1,24 @@ + + + + + false + + + + 0 + + + + 0 + + + + 10 + + + + 100 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.equalizer.channel.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.equalizer.channel.gschema.xml new file mode 100644 index 0000000..1fbff8d --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.equalizer.channel.gschema.xml @@ -0,0 +1,902 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + 22.40 + + + + 27.80 + + + + 34.51 + + + + 42.82 + + + + 53.14 + + + + 65.95 + + + + 81.83 + + + + 101.55 + + + + 126 + + + + 156.38 + + + + 194.06 + + + + 240.81 + + + + 298.834 + + + + 370.834 + + + + 460.182 + + + + 571.057 + + + + 708.647 + + + + 879.387 + + + + 1091.26 + + + + 1354.19 + + + + 1680.47 + + + + 2085.35 + + + + 2587.79 + + + + 3211.29 + + + + 3985.01 + + + + 4945.15 + + + + 6136.63 + + + + 7615.17 + + + + 9449.96 + + + + 11726.8 + + + + 14552.2 + + + + 18058.4 + + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + 4.36 + + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + "Bell" + + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + "RLC (BT)" + + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + "x1" + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.equalizer.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.equalizer.gschema.xml new file mode 100644 index 0000000..de55d9e --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.equalizer.gschema.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + false + + + + 32 + + + + 0 + + + + 0 + + + false + + + "IIR" + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.exciter.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.exciter.gschema.xml new file mode 100644 index 0000000..bc82d35 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.exciter.gschema.xml @@ -0,0 +1,42 @@ + + + + + false + + + + 0 + + + + 0 + + + + 0 + + + + 8.5 + + + + 7500 + + + + 16000 + + + + 0 + + + false + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.filter.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.filter.gschema.xml new file mode 100644 index 0000000..4c8072b --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.filter.gschema.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + + 2000 + + + + -3 + + + "12dB/oct Lowpass" + + + + 20 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.gate.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.gate.gschema.xml new file mode 100644 index 0000000..d4ec4d5 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.gate.gschema.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + + 20 + + + + 100 + + + + -24 + + + + -6 + + + false + + + + -12 + + + + -6 + + + + -24 + + + + 0 + + + false + + + "Internal" + + + "RMS" + + + "Middle" + + + + 0 + + + + 10 + + + + 0 + + + "off" + + + + 10 + + + "off" + + + + 20000 + + + "" + + + diff --git a/data/schemas/com.github.wwmm.easyeffects.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.gschema.xml new file mode 100644 index 0000000..6e9483a --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.gschema.xml @@ -0,0 +1,54 @@ + + + + + true + + + false + + + false + + + "Presets" + + + "Presets" + + + false + + + false + + + 0 + + + 0 + + + false + + + false + + + false + + + true + + + false + + + true + + + + 10 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.limiter.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.limiter.gschema.xml new file mode 100644 index 0000000..4741262 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.limiter.gschema.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + "Herm Thin" + + + "None" + + + "None" + + + + 5 + + + + 5 + + + + 5 + + + + 0 + + + true + + + + 0 + + + + 100 + + + false + + + + 5 + + + + 50 + + + + 0 + + + false + + + "" + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.loudness.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.loudness.gschema.xml new file mode 100644 index 0000000..b82cc0d --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.loudness.gschema.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + "4096" + + + "ISO226-2003" + + + + 0 + + + + 0 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.maximizer.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.maximizer.gschema.xml new file mode 100644 index 0000000..9f92fa1 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.maximizer.gschema.xml @@ -0,0 +1,28 @@ + + + + + false + + + + 0 + + + + 0 + + + + 25 + + + + 0 + + + + 0 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.multibandcompressor.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.multibandcompressor.gschema.xml new file mode 100644 index 0000000..7ea7713 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.multibandcompressor.gschema.xml @@ -0,0 +1,795 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + + "Modern" + + + "None" + + + + true + + + true + + + true + + + false + + + false + + + false + + + false + + + + + 500 + + + + 1000 + + + + 2000 + + + + 4000 + + + + 8000 + + + + 12000 + + + + 16000 + + + + "" + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + "RMS" + + + "RMS" + + + "RMS" + + + "RMS" + + + "RMS" + + + "RMS" + + + "RMS" + + + "RMS" + + + + "Middle" + + + "Middle" + + + "Middle" + + + "Middle" + + + "Middle" + + + "Middle" + + + "Middle" + + + "Middle" + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + 10 + + + + 10 + + + + 10 + + + + 10 + + + + 10 + + + + 10 + + + + 10 + + + + 10 + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + + 10 + + + + 500 + + + + 1000 + + + + 2000 + + + + 4000 + + + + 8000 + + + + 12000 + + + + 16000 + + + + + 500 + + + + 1000 + + + + 2000 + + + + 4000 + + + + 8000 + + + + 12000 + + + + 16000 + + + + 20000 + + + + "Downward" + + + "Downward" + + + "Downward" + + + "Downward" + + + "Downward" + + + "Downward" + + + "Downward" + + + "Downward" + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + + -12 + + + + -12 + + + + -12 + + + + -12 + + + + -12 + + + + -12 + + + + -12 + + + + -12 + + + + + 20 + + + + 20 + + + + 20 + + + + 20 + + + + 20 + + + + 20 + + + + 20 + + + + 20 + + + + + -120 + + + + -120 + + + + -120 + + + + -120 + + + + -120 + + + + -120 + + + + -120 + + + + -120 + + + + + 100 + + + + 100 + + + + 100 + + + + 100 + + + + 100 + + + + 100 + + + + 100 + + + + 100 + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + -6 + + + + -6 + + + + -6 + + + + -6 + + + + -6 + + + + -6 + + + + -6 + + + + -6 + + + + + -72 + + + + -72 + + + + -72 + + + + -72 + + + + -72 + + + + -72 + + + + -72 + + + + -72 + + + + + 6 + + + + 6 + + + + 6 + + + + 6 + + + + 6 + + + + 6 + + + + 6 + + + + 6 + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.multibandgate.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.multibandgate.gschema.xml new file mode 100644 index 0000000..947d9ef --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.multibandgate.gschema.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + + 120 + + + + 1000 + + + + 6000 + + + "LR8" + + + + -24 + + + + -12 + + + + 2 + + + + 150 + + + + 300 + + + + 0 + + + + 9 + + + "RMS" + + + false + + + false + + + + -24 + + + + -12 + + + + 2 + + + + 150 + + + + 300 + + + + 0 + + + + 9 + + + "RMS" + + + false + + + false + + + + -24 + + + + -12 + + + + 2 + + + + 150 + + + + 300 + + + + 0 + + + + 9 + + + "RMS" + + + false + + + false + + + + -24 + + + + -12 + + + + 2 + + + + 150 + + + + 300 + + + + 0 + + + + 9 + + + "RMS" + + + false + + + false + + + diff --git a/data/schemas/com.github.wwmm.easyeffects.outputlevel.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.outputlevel.gschema.xml new file mode 100644 index 0000000..adf02ce --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.outputlevel.gschema.xml @@ -0,0 +1,8 @@ + + + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.pitch.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.pitch.gschema.xml new file mode 100644 index 0000000..e1b2944 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.pitch.gschema.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + "HighSpeed" + + + "Shifted" + + + "Crisp" + + + "Compound" + + + "Laminar" + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.reverb.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.reverb.gschema.xml new file mode 100644 index 0000000..f3b1843 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.reverb.gschema.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + "Large" + + + + 1.5 + + + + 5000 + + + + 0.5 + + + + -12 + + + + 0 + + + + 0 + + + + 300 + + + + 5000 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.rnnoise.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.rnnoise.gschema.xml new file mode 100644 index 0000000..8e763bb --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.rnnoise.gschema.xml @@ -0,0 +1,19 @@ + + + + + false + + + + 0 + + + + 0 + + + "" + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.spectrum.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.spectrum.gschema.xml new file mode 100644 index 0000000..f287ad5 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.spectrum.gschema.xml @@ -0,0 +1,50 @@ + + + + + + + + + + true + + + true + + + true + + + false + + + + 100 + + + + 2 + + + (1.0,1.0,1.0,1.0) + + + (1.0,1.0,1.0,1.0) + + + 120 + + + "Bars" + + + + 20 + + + + 20000 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.stereotools.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.stereotools.gschema.xml new file mode 100644 index 0000000..e4cecb6 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.stereotools.gschema.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + false + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + false + + + false + + + false + + + false + + + false + + + "LR > LR (Stereo Default)" + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.streaminputs.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.streaminputs.gschema.xml new file mode 100644 index 0000000..b9d9372 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.streaminputs.gschema.xml @@ -0,0 +1,24 @@ + + + + + [] + + + true + + + "" + + + + 50 + + + [] + + + false + + + \ No newline at end of file diff --git a/data/schemas/com.github.wwmm.easyeffects.streamoutputs.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.streamoutputs.gschema.xml new file mode 100644 index 0000000..397ba43 --- /dev/null +++ b/data/schemas/com.github.wwmm.easyeffects.streamoutputs.gschema.xml @@ -0,0 +1,24 @@ + + + + + [] + + + true + + + "" + + + + 50 + + + [] + + + false + + + \ No newline at end of file diff --git a/data/ui/app_info.ui b/data/ui/app_info.ui new file mode 100644 index 0000000..e4c6556 --- /dev/null +++ b/data/ui/app_info.ui @@ -0,0 +1,293 @@ + + + + + + horizontal + + + + + + diff --git a/data/ui/application_window.ui b/data/ui/application_window.ui new file mode 100644 index 0000000..4d945fd --- /dev/null +++ b/data/ui/application_window.ui @@ -0,0 +1,96 @@ + + + +
+ + _Preferences + app.preferences + + + _Manual + app.help + + + _Shortcuts + app.shortcuts + +
+
+ + _Reset Settings + app.reset + +
+
+ + _About EasyEffects + app.about + +
+
+ + +
\ No newline at end of file diff --git a/data/ui/apps_box.ui b/data/ui/apps_box.ui new file mode 100644 index 0000000..9de1304 --- /dev/null +++ b/data/ui/apps_box.ui @@ -0,0 +1,34 @@ + + + + \ No newline at end of file diff --git a/data/ui/autogain.ui b/data/ui/autogain.ui new file mode 100644 index 0000000..c617e86 --- /dev/null +++ b/data/ui/autogain.ui @@ -0,0 +1,573 @@ + + + + + + horizontal + + + + + + + + + + + + + diff --git a/data/ui/autoload_row.ui b/data/ui/autoload_row.ui new file mode 100644 index 0000000..ac35907 --- /dev/null +++ b/data/ui/autoload_row.ui @@ -0,0 +1,121 @@ + + + + 6 + 6 + 6 + + + center + 1 + 6 + 6 + + + end + Device + + 0 + 0 + + + + + + start + end + + + 1 + 0 + + + + + + + end + Name + + 0 + 1 + + + + + + start + end + + + 1 + 1 + + + + + + + end + Profile + + 0 + 2 + + + + + + start + end + + + 1 + 2 + + + + + + + + end + Preset + + 0 + 3 + + + + + + start + end + + + 1 + 3 + + + + + + + + + Remove this autoload preset + end + center + user-trash-symbolic + + + + diff --git a/data/ui/bass_enhancer.ui b/data/ui/bass_enhancer.ui new file mode 100644 index 0000000..95ed048 --- /dev/null +++ b/data/ui/bass_enhancer.ui @@ -0,0 +1,496 @@ + + + + + + horizontal + + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/bass_loudness.ui b/data/ui/bass_loudness.ui new file mode 100644 index 0000000..075c9e9 --- /dev/null +++ b/data/ui/bass_loudness.ui @@ -0,0 +1,349 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/blocklist_menu.ui b/data/ui/blocklist_menu.ui new file mode 100644 index 0000000..3f8e328 --- /dev/null +++ b/data/ui/blocklist_menu.ui @@ -0,0 +1,105 @@ + + + + diff --git a/data/ui/chart.ui b/data/ui/chart.ui new file mode 100644 index 0000000..decb14c --- /dev/null +++ b/data/ui/chart.ui @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/data/ui/compressor.ui b/data/ui/compressor.ui new file mode 100644 index 0000000..db57ca1 --- /dev/null +++ b/data/ui/compressor.ui @@ -0,0 +1,1204 @@ + + + + + + horizontal + + + + + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/convolver.ui b/data/ui/convolver.ui new file mode 100644 index 0000000..2ffb84a --- /dev/null +++ b/data/ui/convolver.ui @@ -0,0 +1,429 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/data/ui/convolver_menu_combine.ui b/data/ui/convolver_menu_combine.ui new file mode 100644 index 0000000..b1e417e --- /dev/null +++ b/data/ui/convolver_menu_combine.ui @@ -0,0 +1,134 @@ + + + + diff --git a/data/ui/convolver_menu_impulses.ui b/data/ui/convolver_menu_impulses.ui new file mode 100644 index 0000000..7485898 --- /dev/null +++ b/data/ui/convolver_menu_impulses.ui @@ -0,0 +1,58 @@ + + + + diff --git a/data/ui/crossfeed.ui b/data/ui/crossfeed.ui new file mode 100644 index 0000000..a270f0b --- /dev/null +++ b/data/ui/crossfeed.ui @@ -0,0 +1,346 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/data/ui/crystalizer.ui b/data/ui/crystalizer.ui new file mode 100644 index 0000000..34b81ae --- /dev/null +++ b/data/ui/crystalizer.ui @@ -0,0 +1,212 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/crystalizer_band.ui b/data/ui/crystalizer_band.ui new file mode 100644 index 0000000..cf214a9 --- /dev/null +++ b/data/ui/crystalizer_band.ui @@ -0,0 +1,68 @@ + + + + 1 + + + center + 12 + + + Bypass + + + + + + Mute + + + + + + + + 6 + vertical + + + center + popover_menu + emblem-system-symbolic + + + + + + band + + + + + + + 1 + center + vertical + 1 + 1 + 0 + bottom + + + + -40 + 32 + 1 + 1 + + + + band_label + + + + + \ No newline at end of file diff --git a/data/ui/custom.css b/data/ui/custom.css new file mode 100644 index 0000000..159b4ba --- /dev/null +++ b/data/ui/custom.css @@ -0,0 +1,4 @@ +.drag-listboxrow-icon { + background: white; + border: 1px solid black; +} diff --git a/data/ui/deesser.ui b/data/ui/deesser.ui new file mode 100644 index 0000000..8758ef7 --- /dev/null +++ b/data/ui/deesser.ui @@ -0,0 +1,682 @@ + + + + + + horizontal + + + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/delay.ui b/data/ui/delay.ui new file mode 100644 index 0000000..ef82abf --- /dev/null +++ b/data/ui/delay.ui @@ -0,0 +1,314 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/data/ui/echo_canceller.ui b/data/ui/echo_canceller.ui new file mode 100644 index 0000000..dffb63c --- /dev/null +++ b/data/ui/echo_canceller.ui @@ -0,0 +1,318 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/effects_box.ui b/data/ui/effects_box.ui new file mode 100644 index 0000000..fe4470f --- /dev/null +++ b/data/ui/effects_box.ui @@ -0,0 +1,150 @@ + + + + \ No newline at end of file diff --git a/data/ui/equalizer.ui b/data/ui/equalizer.ui new file mode 100644 index 0000000..34bed9d --- /dev/null +++ b/data/ui/equalizer.ui @@ -0,0 +1,417 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/data/ui/equalizer_band.ui b/data/ui/equalizer_band.ui new file mode 100644 index 0000000..3f3f579 --- /dev/null +++ b/data/ui/equalizer_band.ui @@ -0,0 +1,329 @@ + + + + + + + + 6 + 6 + 6 + 6 + 12 + vertical + + + center + 6 + 12 + 1 + + + Type + + 0 + 0 + + + + + + + Off + Bell + High Pass + High Shelf + Low Pass + Low Shelf + Notch + Resonance + All Pass + + + 0 + 1 + + + Band Type + + + + + + + Mode + + 1 + 0 + + + + + + + RLC (BT) + RLC (MT) + BWC (BT) + BWC (MT) + LRX (BT) + LRX (MT) + APO (DR) + + + 1 + 1 + + + Band Mode + + + + + + + Slope + + 2 + 0 + + + + + + + x1 + x2 + x3 + x4 + + + 2 + 1 + + + Band Slope + + + + + + + + + center + 12 + + + 6 + vertical + + + Frequency + + + + + + 0 + if-valid + vertical + 10 + + + 10 + 24000 + 1 + 100 + + + + band_frequency_label + + + + + + + Reset + center + + + band_frequency_label + + + + + + + + + center + center + 6 + vertical + + + Width + + + + + + + + band_quality + band_frequency + + + + + + + + + + + + 6 + vertical + + + Quality + + + + + + 2 + if-valid + vertical + 10 + + + 100 + 4 + 0.01 + 0.1 + + + + band_quality_spinbutton_label + + + + + + + Reset + center + + + band_quality_spinbutton_label + + + + + + + + + + + 6 + center + 24 + + + Solo + + + + + + Mute + + + + + + + + diff --git a/data/ui/exciter.ui b/data/ui/exciter.ui new file mode 100644 index 0000000..4710895 --- /dev/null +++ b/data/ui/exciter.ui @@ -0,0 +1,495 @@ + + + + + + horizontal + + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/factory_clients_listview.ui b/data/ui/factory_clients_listview.ui new file mode 100644 index 0000000..4f6f719 --- /dev/null +++ b/data/ui/factory_clients_listview.ui @@ -0,0 +1,129 @@ + + + + diff --git a/data/ui/factory_input_device_dropdown.ui b/data/ui/factory_input_device_dropdown.ui new file mode 100644 index 0000000..ab179bf --- /dev/null +++ b/data/ui/factory_input_device_dropdown.ui @@ -0,0 +1,28 @@ + + + + diff --git a/data/ui/factory_modules_listview.ui b/data/ui/factory_modules_listview.ui new file mode 100644 index 0000000..dd2b8ed --- /dev/null +++ b/data/ui/factory_modules_listview.ui @@ -0,0 +1,101 @@ + + + + diff --git a/data/ui/factory_output_device_dropdown.ui b/data/ui/factory_output_device_dropdown.ui new file mode 100644 index 0000000..347996b --- /dev/null +++ b/data/ui/factory_output_device_dropdown.ui @@ -0,0 +1,28 @@ + + + + diff --git a/data/ui/factory_presets_dropdown.ui b/data/ui/factory_presets_dropdown.ui new file mode 100644 index 0000000..bf1d50f --- /dev/null +++ b/data/ui/factory_presets_dropdown.ui @@ -0,0 +1,27 @@ + + + + diff --git a/data/ui/factory_rnnoise_listview.ui b/data/ui/factory_rnnoise_listview.ui new file mode 100644 index 0000000..df36c98 --- /dev/null +++ b/data/ui/factory_rnnoise_listview.ui @@ -0,0 +1,42 @@ + + + + diff --git a/data/ui/filter.ui b/data/ui/filter.ui new file mode 100644 index 0000000..1365dd9 --- /dev/null +++ b/data/ui/filter.ui @@ -0,0 +1,376 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/data/ui/gate.ui b/data/ui/gate.ui new file mode 100644 index 0000000..e10f3c8 --- /dev/null +++ b/data/ui/gate.ui @@ -0,0 +1,1340 @@ + + + + + + horizontal + + + + + + + + + + + + + horizontal + + + + + + diff --git a/data/ui/limiter.ui b/data/ui/limiter.ui new file mode 100644 index 0000000..c544cac --- /dev/null +++ b/data/ui/limiter.ui @@ -0,0 +1,931 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/data/ui/loudness.ui b/data/ui/loudness.ui new file mode 100644 index 0000000..7a8bd81 --- /dev/null +++ b/data/ui/loudness.ui @@ -0,0 +1,336 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/data/ui/maximizer.ui b/data/ui/maximizer.ui new file mode 100644 index 0000000..b8d35a8 --- /dev/null +++ b/data/ui/maximizer.ui @@ -0,0 +1,374 @@ + + + + + + horizontal + + + + + + + diff --git a/data/ui/multiband_compressor.ui b/data/ui/multiband_compressor.ui new file mode 100644 index 0000000..48c2d3c --- /dev/null +++ b/data/ui/multiband_compressor.ui @@ -0,0 +1,591 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/multiband_compressor_band.ui b/data/ui/multiband_compressor_band.ui new file mode 100644 index 0000000..3c80116 --- /dev/null +++ b/data/ui/multiband_compressor_band.ui @@ -0,0 +1,905 @@ + + + + + + horizontal + + + + + + + \ No newline at end of file diff --git a/data/ui/multiband_gate.ui b/data/ui/multiband_gate.ui new file mode 100644 index 0000000..dfde024 --- /dev/null +++ b/data/ui/multiband_gate.ui @@ -0,0 +1,1844 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + + + + + + + + + horizontal + + + + + + diff --git a/data/ui/pipe_manager_box.ui b/data/ui/pipe_manager_box.ui new file mode 100644 index 0000000..933e21d --- /dev/null +++ b/data/ui/pipe_manager_box.ui @@ -0,0 +1,600 @@ + + + + + + horizontal + + + + + + diff --git a/data/ui/pitch.ui b/data/ui/pitch.ui new file mode 100644 index 0000000..4c5956a --- /dev/null +++ b/data/ui/pitch.ui @@ -0,0 +1,508 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/plugin_row.ui b/data/ui/plugin_row.ui new file mode 100644 index 0000000..ffd3016 --- /dev/null +++ b/data/ui/plugin_row.ui @@ -0,0 +1,78 @@ + + + + 6 + 6 + + + + pointer + + + + + + start + center + ee-arrow-down-symbolic + + + + + + start + center + 1 + Name + + + + + + + + + + + Remove this effect + center + 0 + user-trash-symbolic + + + + + + + Enable/disable this effect + center + 0 + system-shutdown-symbolic + + + + + + + Change the position of this effect + center + 8 + 0 + ee-drag-handle-symbolic + + + grab + + + + + + + + diff --git a/data/ui/plugins_box.ui b/data/ui/plugins_box.ui new file mode 100644 index 0000000..5f60ee5 --- /dev/null +++ b/data/ui/plugins_box.ui @@ -0,0 +1,136 @@ + + + + diff --git a/data/ui/plugins_menu.ui b/data/ui/plugins_menu.ui new file mode 100644 index 0000000..f407c47 --- /dev/null +++ b/data/ui/plugins_menu.ui @@ -0,0 +1,85 @@ + + + + diff --git a/data/ui/preferences_general.ui b/data/ui/preferences_general.ui new file mode 100644 index 0000000..39f7a9e --- /dev/null +++ b/data/ui/preferences_general.ui @@ -0,0 +1,155 @@ + + + + diff --git a/data/ui/preferences_spectrum.ui b/data/ui/preferences_spectrum.ui new file mode 100644 index 0000000..9596064 --- /dev/null +++ b/data/ui/preferences_spectrum.ui @@ -0,0 +1,245 @@ + + + + + + horizontal + + + + + + + + + diff --git a/data/ui/preferences_window.ui b/data/ui/preferences_window.ui new file mode 100644 index 0000000..4fc57d7 --- /dev/null +++ b/data/ui/preferences_window.ui @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/data/ui/preset_row.ui b/data/ui/preset_row.ui new file mode 100644 index 0000000..168b5ce --- /dev/null +++ b/data/ui/preset_row.ui @@ -0,0 +1,57 @@ + + + + 6 + 6 + 6 + + + start + center + 1 + Name + + + + + + end + + + + + Load + center + + name + + + + + + + Save current settings to this preset file + center + document-save-symbolic + + name + + + + + + + Remove this preset file + center + user-trash-symbolic + + name + + + + + + + \ No newline at end of file diff --git a/data/ui/presets_menu.ui b/data/ui/presets_menu.ui new file mode 100644 index 0000000..444cade --- /dev/null +++ b/data/ui/presets_menu.ui @@ -0,0 +1,326 @@ + + + + diff --git a/data/ui/reverb.ui b/data/ui/reverb.ui new file mode 100644 index 0000000..de1b4e9 --- /dev/null +++ b/data/ui/reverb.ui @@ -0,0 +1,645 @@ + + + + + + 1 + + + 6 + 6 + 6 + 6 + 6 + vertical + + + 1 + 6 + + + Ambience + + + + + + + Empty Walls + + + + + + + + + 6 + 1 + + + Room + + + + + + + Large Empty Hall + + + + + + + + + 6 + 1 + + + Disco + + + + + + + Large Occupied Hall + + + + + + + + + + + horizontal + + + + + + + + horizontal + + + + + + + + horizontal + + + + + + \ No newline at end of file diff --git a/data/ui/rnnoise.ui b/data/ui/rnnoise.ui new file mode 100644 index 0000000..b7956bd --- /dev/null +++ b/data/ui/rnnoise.ui @@ -0,0 +1,364 @@ + + + + + + horizontal + + + + + + diff --git a/data/ui/shortcuts.ui b/data/ui/shortcuts.ui new file mode 100644 index 0000000..2d7d948 --- /dev/null +++ b/data/ui/shortcuts.ui @@ -0,0 +1,45 @@ + + + + 1 + + + shortcuts + 12 + + + Overview + overview + + + F1 + Open the EasyEffects Manual + + + + + + F11 + Fullscreen/Restore from fullscreen + + + + + + <Ctrl>w + Close the Window + + + + + + <Ctrl>q + Quit EasyEffects + + + + + + + + \ No newline at end of file diff --git a/data/ui/stereo_tools.ui b/data/ui/stereo_tools.ui new file mode 100644 index 0000000..6b409c1 --- /dev/null +++ b/data/ui/stereo_tools.ui @@ -0,0 +1,757 @@ + + + + + + horizontal + + + + + + + + horizontal + + + + + + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..54c7957 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +easyeffects (6.2.5-1) unstable; urgency=medium + + * Version 6.2.5 upstream. + + -- Boyuan Yang Sat, 18 Jun 2022 19:16:31 -0400 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..d397ac3 --- /dev/null +++ b/debian/control @@ -0,0 +1,44 @@ +Source: easyeffects +Section: sound +Priority: optional +Maintainer: Boyuan Yang +Build-Depends: + appstream-util, + debhelper-compat (= 13), + gettext, + itstool, + libadwaita-1-dev, + libbs2b-dev, + libebur128-dev, + libfftw3-dev, + libfmt-dev, + libglib2.0-dev, + libgtk-4-dev, + liblilv-dev, + libpipewire-0.3-dev, + librubberband-dev, + libsamplerate0-dev, + libsigc++-3.0-dev, + libsndfile-dev, + libspeexdsp-dev, + libtbb-dev, + libzita-convolver-dev, + lv2-dev, + meson, + nlohmann-json3-dev, + pkg-config, +Standards-Version: 4.6.1 +Homepage: https://github.com/wwmm/easyeffects + +Package: easyeffects +Architecture: any +Depends: + calf-plugins, + lsp-plugins-lv2 | lsp-plugins, + ${misc:Depends}, + ${shlibs:Depends}, +Recommends: + mda-lv2, + zam-plugins, +Description: Audio effects for PipeWire applications + Many sound effects for PipeWire input and output. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..b1090ce --- /dev/null +++ b/debian/copyright @@ -0,0 +1,46 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: easyeffects +Upstream-Contact: Wellington Wallace +Source: https://github.com/wwmm/easyeffects + +Files: * +Copyright: 2017-2022 Wellington Wallace +License: GPL-3.0+ + +Files: debian/* +Copyright: Mikhail Novosyolov + 2019-2022 Boyuan Yang +License: GPL-3.0+ + +Files: util/autobuild.sh +Copyright: Mikhail Novosyolov +License: GPL-3.0+ + +Files: PKGBUILD +Copyright: Wellington +License: GPL-3.0+ + +Files: data/com.github.wwmm.easyeffects.metainfo.xml.in +Copyright: 2017 Patrik Nilsson +License: CC0-1.0 + +License: GPL-3.0+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". + +License: CC0-1.0 + On Debian systems, the complete text of the Creative Commons Zero v1.0 + Universal License can be found in "/usr/share/common-licenses/CC0-1.0". diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..2d33f6a --- /dev/null +++ b/debian/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f + +%: + dh $@ diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..0330f70 --- /dev/null +++ b/debian/watch @@ -0,0 +1,4 @@ +version=4 +opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*@ARCHIVE_EXT@)%@PACKAGE@-$1%" \ + https://github.com/wwmm/easyeffects/tags \ + (?:.*?/)?v?@ANY_VERSION@@ARCHIVE_EXT@ diff --git a/easyeffects.code-workspace b/easyeffects.code-workspace new file mode 100644 index 0000000..3b38286 --- /dev/null +++ b/easyeffects.code-workspace @@ -0,0 +1,92 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "mesonbuild.buildFolder": "_build", + "mesonbuild.configureOnOpen": true, + "mesonbuild.configureOptions": [ + "--buildtype=debugoptimized", + "--cpp_std=c++17" + ], + "editor.formatOnSave": true, + "editor.rulers": [120], + "files.associations": { + "*.page": "xml", + "*.tcc": "cpp", + "iostream": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "csignal": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "array": "cpp", + "atomic": "cpp", + "strstream": "cpp", + "bit": "cpp", + "bitset": "cpp", + "chrono": "cpp", + "codecvt": "cpp", + "complex": "cpp", + "condition_variable": "cpp", + "cstdint": "cpp", + "deque": "cpp", + "list": "cpp", + "map": "cpp", + "set": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "string_view": "cpp", + "fstream": "cpp", + "functional": "cpp", + "future": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "limits": "cpp", + "memory": "cpp", + "mutex": "cpp", + "new": "cpp", + "numeric": "cpp", + "optional": "cpp", + "ostream": "cpp", + "ratio": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "string": "cpp", + "system_error": "cpp", + "thread": "cpp", + "type_traits": "cpp", + "tuple": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "utility": "cpp", + "valarray": "cpp", + "variant": "cpp", + "algorithm": "cpp", + "hash_map": "cpp", + "iterator": "cpp", + "memory_resource": "cpp", + "random": "cpp", + "cfenv": "cpp", + "cinttypes": "cpp" + }, + "xml.format.joinContentLines": true, + "clangd.arguments": [ + "--header-insertion=never" + ], + "prettier.enable": false + } +} diff --git a/help/C/advancedinfo.page b/help/C/advancedinfo.page new file mode 100644 index 0000000..f0e589e --- /dev/null +++ b/help/C/advancedinfo.page @@ -0,0 +1,11 @@ + + + + + + Advanced Information +

EasyEffects audio processing is composed by three main stages. Each of them needs a specific audio format and sampling rate.

+

In the bottom bar is reported the pipeline output sampling rate (in kHz) and the latency (in ms) introduced by the audio processing stage.

+

Every stream in applications list also reports its own latency and sampling rate, along with status and format.

+
diff --git a/help/C/autogain.page b/help/C/autogain.page new file mode 100644 index 0000000..dc2e4e9 --- /dev/null +++ b/help/C/autogain.page @@ -0,0 +1,110 @@ + + + + + + Auto Gain +

EasyEffects Autogain is based on the library libebur128 which implements the EBU R 128 standard for loudness normalization. It changes the audio volume to a perceived loudness target that can be customized by the user.

+ + + + <em style="strong" its:withinText="nested">Target</em> + +

Loudness level.

+
+ + + <em style="strong" its:withinText="nested">Maximum History</em> + +

Range of time taken into account for the calculation of loudness level and output gain.

+
+ + + <em style="strong" its:withinText="nested">Reference</em> + +

The parameter used as reference to evaluate the output gain.

+ + +

+ Momentary + - Measures the loudness of the past 400 milliseconds. +

+
+ +

+ Short-Term + - Measures the loudness of the past 3 seconds. +

+
+ +

+ Integrated + - Ideally it indicates how loud the content is on average. It measures the loudness on a long range of time, depending on the value set as Maximum History. +

+
+ +

+ Geometric Mean + - Uses the geometric mean of all the above mentioned parameters, or two of them at user choosing. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Reset History</em> + +

Resets the Autogain history related to chosen Reference.

+
+ + + <em style="strong" its:withinText="nested">Monitor Parameters</em> + +

Autogain values shown as stats.

+ + +

+ Relative + - Used to detect silence. Whenever the Momentary term is below a predetermined threshold, modifications to the output gain will be disabled. +

+
+ +

+ Loudness + - The difference between its value and the target loudness determines the output gain. +

+
+ +

+ Range + - Indicates how large is the dynamic range of the content played. +

+
+ +

+ Output Gain + - The input signal is adjusted by this correction gain to bring its loudness to the target value. +

+
+
+
+
+
+ References + + +

+ Wikipedia EBU R 128 +

+
+
+ + +

+ EBU - Loudness Normalisation and Permitted Maximum Level of Audio Signals +

+
+
+
+
diff --git a/help/C/bassenhancer.page b/help/C/bassenhancer.page new file mode 100644 index 0000000..1bfdeff --- /dev/null +++ b/help/C/bassenhancer.page @@ -0,0 +1,68 @@ + + + + + + Bass Enhancer +

A Bass Enhancer is used to produce very low sound that is not present in the original signal. This is done by creating harmonic distortions of the signal which are restricted in range and added to the original signal. It raises the lower end of an audio signal without simply raising the lower frequencies like an Equalizer would do to create a more "fat" or "boomy" sound.

+ + + + <em style="strong" its:withinText="nested">Amount</em> + +

Amount of harmonics added to the original signal.

+
+ + + <em style="strong" its:withinText="nested">Harmonics</em> + +

Amount of newly created harmonics.

+
+ + + <em style="strong" its:withinText="nested">Scope</em> + +

The frequency above which harmonics are produced.

+
+ + + <em style="strong" its:withinText="nested">Floor (button)</em> + +

Constrain the enhancement on the lower end.

+
+ + + <em style="strong" its:withinText="nested">Floor (value)</em> + +

The frequency below which no harmonics are produced.

+
+ + + <em style="strong" its:withinText="nested">Blend Harmonics</em> + +

The "colour" (or octave) of the harmonics.

+
+ + + <em style="strong" its:withinText="nested">Listen</em> + +

Mute the original signal and listen to the harmonics exclusively.

+
+
+
+ References + + +

+ Calf Bass Enhancer +

+
+ +

+ Wikipedia Missing Fundamental +

+
+
+
+
diff --git a/help/C/bassloudness.page b/help/C/bassloudness.page new file mode 100644 index 0000000..53a5999 --- /dev/null +++ b/help/C/bassloudness.page @@ -0,0 +1,44 @@ + + + + + + Bass Loudness +

The ear is less sensitive to low frequencies when listening at low volume. This plugin developed by MDA allows the bass level to be adjusted measuring the "equal-loudness contour".

+ + + + <em style="strong" its:withinText="nested">Loudness</em> + +

Source level relative to listening level (based on a 100 dB SPL maximum level).

+
+ + + <em style="strong" its:withinText="nested">Output</em> + +

Change output level.

+
+ + + <em style="strong" its:withinText="nested">Link</em> + +

Automatically adjusts Output to maintain a consistent tonal balance at all levels.

+
+
+
+ References + + +

+ Wikipedia Equal-Loudness Contour +

+
+ +

+ MDA Loudness +

+
+
+
+
diff --git a/help/C/blocklist.page b/help/C/blocklist.page new file mode 100644 index 0000000..a05ec44 --- /dev/null +++ b/help/C/blocklist.page @@ -0,0 +1,11 @@ + + + + + + Applications Excluded +

There are cases in which the user wants a specific application to be excluded from the "Process All Input/Output" functionality. This can be done by using the list of Excluded Applications.

+

Just click the "Excluded Apps" button in the bottom bar and add the application name exactly as it is shown in the Players/Recorders tab list.

+

A specific application in the Players/Recorders list can be quickly added to the Excluded Apps just clicking the "Exclude" checkbutton.

+
diff --git a/help/C/compressor.page b/help/C/compressor.page new file mode 100644 index 0000000..3aca48a --- /dev/null +++ b/help/C/compressor.page @@ -0,0 +1,275 @@ + + + + + + Compressor +

A Compressor is used to reduce the dynamic range or, in other words, the difference in level between the quietest and the loudest parts of an audio signal. It achieves this purpose altering the gain when the signal overtakes a predetermined Threshold. EasyEffects uses the Stereo Sidechain Compressor from Linux Studio Plugins.

+
+ Compressor Options + + + + <em style="strong" its:withinText="nested">Attack Time</em> + +

The length of time it takes to apply roughly two-thirds of the targeted amount of compression ratio to the uncompressed signal.

+
+ + + <em style="strong" its:withinText="nested">Release Time</em> + +

The length of time it takes to restore roughly two-thirds of the reduced gain (in Downward mode) or increased gain (in Upward/Boosting mode) to the compressed signal.

+
+ + + <em style="strong" its:withinText="nested">Attack Threshold</em> + +

The target level around which the compression is applied (the range depends by the Knee).

+
+ + + <em style="strong" its:withinText="nested">Release Threshold</em> + +

Sets up the Threshold of the Release Time, calculated by summing the Release Threshold to the Attack Threshold.

+

If the Sidechain level is above that Threshold, the compressor uses the Release Time for the releasing stage. Otherwise the Attack Time is used in place of Release Time.

+

For example, with -10 dB Attack Threshold and -60 dB Release Threshold, if the Sidechain is above -10 + (-60) = -70 db, the Release Time is used for the gain restoration. If the Sidechain is below -70 db, the Attack Time is used for the gain restoration.

+
+ + + <em style="strong" its:withinText="nested">Ratio</em> + +

The amount of attenuation (in Downward mode) or amplification (in Upward/Boosting mode) that will be applied to the signal.

+

For example, when the Ratio is 2 in Downward mode and the Sidechain rises above the Threshold by 10 dB, the signal would be ideally reduced by 5 dB (10/2 dB). In practice this behavior mostly depends on how the Compressor is designed and configured.

+
+ + + <em style="strong" its:withinText="nested">Knee</em> + +

The range over which the Compressor switches from no compression to almost the full ratio compression (the Threshold usually sits at the center of this transition zone).

+
+ + + <em style="strong" its:withinText="nested">Makeup</em> + +

The gain to apply after the compression stage.

+
+ + + <em style="strong" its:withinText="nested">Mode</em> + + + +

+ Downward + - It's aimed to decrease the gain of the signal above the Threshold. +

+
+ +

+ Upward + - It's aimed to increase the gain of the signal below the Threshold. +

+
+ +

+ Boosting + - It's aimed to increase the gain of the signal below the Threshold by a specific amount. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Boost Threshold</em> + +

The Threshold below which a constant amplification will be applied to the input signal in Upward Mode (it prevents from applying infinite amplification to very quiet signals).

+
+ + + <em style="strong" its:withinText="nested">Boost Amount</em> + +

Maximum gain amplification to apply in Boosting Mode.

+
+
+
+
+ Sidechain + + + + <em style="strong" its:withinText="nested">Listen</em> + +

Allows to listen the processed Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">Input Type</em> + +

Determines which signal is the Sidechain or, in other words, the signal that controls the compression stage.

+ + +

+ Feed-forward + - The Sidechain is the Compressor input signal (taken after applying the plugin input gain). More aggressive compression. +

+
+ +

+ Feed-back + - The Sidechain is the Compressor output signal (taken before applying the Makeup and the plugin output gain). Vintage-style compression. +

+
+ +

+ External + - The Sidechain is an external source took by a specific input device (typically a microphone). +

+
+
+
+ + + <em style="strong" its:withinText="nested">Input Device</em> + +

Select the device for the External Sidechain.

+
+ + + <em style="strong" its:withinText="nested">Mode</em> + +

Determines how the Sidechain is evaluated for the compression stage.

+ + +

+ Peak + - The Compressor reacts according to the peaks. +

+
+ +

+ RMS + - The Compressor reacts according to the average loudness measured by the root mean square. +

+
+ +

+ Low-Pass + - The Compressor reacts according to the signal processed by a Low-Pass filter. +

+
+ +

+ Uniform + - The Compressor reacts according to the loudness measured by the average of the absolute amplitude. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Source</em> + +

Determines which part of the Sidechain is taken into account for the compression stage.

+ + +

+ Middle + - The sum of left and right channels. +

+
+ +

+ Side + - The difference between left and right channels. +

+
+ +

+ Left + - Only left channel is used. +

+
+ +

+ Right + - Only right channel is used. +

+
+
+
+ + + <em style="strong" its:withinText="nested">PreAmplification</em> + +

Gain applied to the Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">Reactivity</em> + +

The time that defines the number of samples used to process the Sidechain in RMS, Uniform and Low-Pass modes. Higher the value, more smooth the compression.

+
+ + + <em style="strong" its:withinText="nested">Lookahead</em> + +

The signal to compress is delayed by this amount of time, so that the compression will be applied earlier than it would be otherwise. The corresponding delay is reproduced on the output signal.

+
+
+
+
+ Sidechain Filters + + + + <em style="strong" its:withinText="nested">High-Pass Filter Mode</em> + +

Sets the type of the High-Pass filter applied to Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">High-Pass Frequency</em> + +

Sets the cut-off frequency of the High-Pass filter.

+
+ + + <em style="strong" its:withinText="nested">Low-Pass Filter Mode</em> + +

Sets the type of the Low-Pass filter applied to Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">Low-Pass Frequency</em> + +

Sets the cut-off frequency of the Low-Pass filter.

+
+
+
+
+ References + + +

+ Wikipedia Dynamic Range Compression +

+
+ +

+ LSP Sidechain Compressor Stereo +

+
+ +

+ Black Ghost Audio - The Ultimate Guide to Compression +

+
+ +

+ Attack Magazine - Demolishing The Myths of Compression +

+
+
+
+
diff --git a/help/C/convolver.page b/help/C/convolver.page new file mode 100644 index 0000000..3135248 --- /dev/null +++ b/help/C/convolver.page @@ -0,0 +1,56 @@ + + + + + + Convolver +

The Convolver creates a simulation of an audio environment using a pre-recorded audio sample of the impulse response of the space being modeled. This feature is based on the "convolution": a process through which the sonic characteristics of one signal are used to alter the character of another.

+

EasyEffects Convolver offers the opportunity to apply multiple impulse responses by combining them in one file.

+ + + + <em style="strong" its:withinText="nested">Impulses</em> + +

Manage impulse response files. This menu allows to load a specific impulse or add/remove files from the EasyEffects configuration directory.

+
+ + + <em style="strong" its:withinText="nested">Combine</em> + +

Select two impulse responses to combine into a single file to be saved under the EasyEffects configuration directory.

+
+ + + <em style="strong" its:withinText="nested">Stereo Width</em> + +

Modify the impulse response stereo image width.

+
+ + + <em style="strong" its:withinText="nested">Spectrum</em> + +

Visualize the frequency spectrum of the selected channel.

+
+
+
+ References + + +

+ Wikipedia Reverb Effect +

+
+ +

+ Indiana University - Convolution: A Form of Cross-Synthesis +

+
+ +

+ Designing Sound - Recording Impulse Responses +

+
+
+
+
diff --git a/help/C/crossfeed.page b/help/C/crossfeed.page new file mode 100644 index 0000000..714627b --- /dev/null +++ b/help/C/crossfeed.page @@ -0,0 +1,63 @@ + + + + + + Crossfeed +

EasyEffects uses the Crossfeed by bs2b. This plugin is used to improve headphone listening of stereo audio records. It does so by mixing the left and right channel in a way that simulates a stereo speaker setup while using headphones.

+ + + + <em style="strong" its:withinText="nested">Cutoff</em> + +

Low-Pass filter cutoff frequency.

+
+ + + <em style="strong" its:withinText="nested">Feed</em> + +

Amount of signal from a channel that is sent to the other.

+
+ + + <em style="strong" its:withinText="nested">Presets</em> + + + +

+ Default + - Closest to virtual speaker placement (30°, 3 meters). +

+
+ +

+ Cmoy + - Close to Chu Moy's Crossfeed (popular). +

+
+ +

+ Jmeier + - Close to Jan Meier's CORDA amplifiers (little change). +

+
+
+
+
+
+ References + + +

+ Wikipedia Crossfeed +

+
+ +

+ Bauer Stereophonic-to-Binaural DSP. +

+
+
+
+
diff --git a/help/C/crystalizer.page b/help/C/crystalizer.page new file mode 100644 index 0000000..30ce47d --- /dev/null +++ b/help/C/crystalizer.page @@ -0,0 +1,39 @@ + + + + + + Crystalizer +

The Crystalizer plugin can be used to add a little of dynamic range to songs that were overly compressed. The signal is split in multiple bands to which different intensities can be applied in order to alter the overall dynamic range.

+ + + + <em style="strong" its:withinText="nested">Intensities</em> + +

The higher the value the higher is the difference in magnitude between the loudest and the quietest sounds of the selected band. Different intensities can be set for each frequency band.

+
+ + + <em style="strong" its:withinText="nested">Bypass</em> + +

When active the audio signal passing through the selected band is not modified.

+
+ + + <em style="strong" its:withinText="nested">Mute</em> + +

Mutes the selected band.

+
+
+
+ References + + +

+ Wikipedia Dynamic Range +

+
+
+
+
diff --git a/help/C/deesser.page b/help/C/deesser.page new file mode 100644 index 0000000..c096380 --- /dev/null +++ b/help/C/deesser.page @@ -0,0 +1,98 @@ + + + + + + Deesser +

A Deesser is used to dynamically reduce high frequencies. The standard field of use of this plugin is the reduction of "sssss" and "shhhh" in vocal tracks. EasyEffects uses the Deesser developed by Calf Studio Gear.

+ + + + <em style="strong" its:withinText="nested">Detection</em> + +

Select the detection of the Sidechain signal between Peak (stronger) and RMS (smoother).

+
+ + + <em style="strong" its:withinText="nested">Mode</em> + +

Select the operation mode between Wideband and Split. In Split mode not the full range signal will be affected by the gain reduction, but only frequencies above the split frequency will be manipulated in gain.

+
+ + + <em style="strong" its:withinText="nested">F1 Split</em> + +

The split frequency. All signals above this frequency will affect the gain reduction (and are affected in Split mode too).

+
+ + + <em style="strong" its:withinText="nested">F1 Gain</em> + +

It shifts the volume of the higher band. In Wideband mode it affects the Sidechain. In Split mode it also affects the processed high frequencies.

+
+ + + <em style="strong" its:withinText="nested">F2 Peak</em> + +

Center frequency of the bell filter. It allows a more precise selection of the Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">F2 Level</em> + +

Increases or decreases the level of the chosen F2 frequency.

+
+ + + <em style="strong" its:withinText="nested">F2 Peak Q</em> + +

Set the quality of the bell filter. Higher values will affect a narrower frequency range. Lower values will affect a wider band.

+
+ + + <em style="strong" its:withinText="nested">Laxity</em> + +

The reaction of the Deesser. Higher values won't affect really short peaks.

+
+ + + <em style="strong" its:withinText="nested">Threshold</em> + +

The level above which the gain reduction is applied.

+
+ + + <em style="strong" its:withinText="nested">Ratio</em> + +

The amount of attenuation applied to the signal.

+

For example, a Ratio of 2 means that if the level rises 4 dB above the Threshold, it will be only 2 dB above after the reduction.

+
+ + + <em style="strong" its:withinText="nested">Makeup</em> + +

The gain to apply after the processing stage. In Split mode only the high band will be made up.

+
+
+
+ References + + +

+ Wikipedia De-essing +

+
+ +

+ Calf Deesser +

+
+ +

+ LedgerNote - De-esser: The Guide for Sibilant-Free Vocal Recordings +

+
+
+
+
diff --git a/help/C/delay.page b/help/C/delay.page new file mode 100644 index 0000000..f11e162 --- /dev/null +++ b/help/C/delay.page @@ -0,0 +1,38 @@ + + + + + + Delay +

This plugin allows the user to add a short Delay of time to each individual channel of the stereo stream. EasyEffects Delay uses the Delay Compensator Stereo by Linux Studio Plugins set in time mode.

+ + + + <em style="strong" its:withinText="nested">Left</em> + +

Left channel delay in milliseconds.

+
+ + + <em style="strong" its:withinText="nested">Right</em> + +

Right channel delay in milliseconds.

+
+
+
+ References + + +

+ Wikipedia Delay (audio effect) +

+
+ +

+ LSP Delay Compensator Stereo +

+
+
+
+
diff --git a/help/C/echocanceller.page b/help/C/echocanceller.page new file mode 100644 index 0000000..716f465 --- /dev/null +++ b/help/C/echocanceller.page @@ -0,0 +1,38 @@ + + + + + + Echo Canceller +

The Echo is a reflected sound wave with sufficient magnitude and delay to be detectable as a signal distinct from the source one. An Echo Canceller is used to improve voice quality by preventing Echo from being created or removing it after it has been added to the source signal. EasyEffects uses the Echo Canceller from SpeexDSP library.

+ + + + <em style="strong" its:withinText="nested">Frame Size</em> + +

The amount of time in milliseconds to process at once. It is recommended to use a frame size in the order of 20 ms.

+
+ + + <em style="strong" its:withinText="nested">Filter Length</em> + +

The amount of time of the Echo cancelling filter to use (also known as tail length). The recommended tail length is approximately the third of the room reverberation time. For example, in a small room, reverberation time is in the order of 300 ms, so a tail length of 100 ms is a good choice.

+
+
+
+ References + + +

+ Wikipedia Echo Suppression and Cancellation +

+
+ +

+ Speex Acoustic Echo Canceller +

+
+
+
+
diff --git a/help/C/effectsorder.page b/help/C/effectsorder.page new file mode 100644 index 0000000..4159e79 --- /dev/null +++ b/help/C/effectsorder.page @@ -0,0 +1,9 @@ + + + + + + Changing Effects Order +

The user can change the effects order in the plugins stack. The effects can be dragged with the cursor and dropped at the new position. The first plugin from top to bottom is the first to receive the audio signal.

+
diff --git a/help/C/enableapp.page b/help/C/enableapp.page new file mode 100644 index 0000000..690c97c --- /dev/null +++ b/help/C/enableapp.page @@ -0,0 +1,10 @@ + + + + + + Enable or Disable an Application +

The user can choose which applications have effects applied through the Enable checkbutton. "Process All Inputs/Outputs" option in General Settings can be activated to always apply effects to whichever application. +

+
diff --git a/help/C/equalizer.page b/help/C/equalizer.page new file mode 100644 index 0000000..b7c57de --- /dev/null +++ b/help/C/equalizer.page @@ -0,0 +1,222 @@ + + + + + + Equalizer +

The Equalization in sound recording and reproduction is the process of adjusting the volume of different frequency bands within an audio signal. EasyEffects uses the Parametric Equalizer from Linux Studio Plugins. The user can choose from 1 to 32 bands. Width and center frequency of each band can be customized as needed.

+
+ Global Options + + + + <em style="strong" its:withinText="nested">Bands</em> + +

The number of bands.

+
+ + + <em style="strong" its:withinText="nested">Mode</em> + + + +

+ IIR + - Infinite Impulse Response filters, nonlinear minimal phase. In most cases does not add noticeable latency to output signal. +

+
+ +

+ FIR + - Finite Impulse Response filters with linear phase, finite approximation of Equalizer's impulse response. Adds noticeable latency to output signal. +

+
+ +

+ FFT + - Fast Fourier Transform approximation of the frequency chart, linear phase. Adds noticeable latency to output signal. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Split Channels</em> + +

When enabled it is possible to apply different configurations to left and right channels.

+
+ + + <em style="strong" its:withinText="nested">Flat Response</em> + +

This function sets each band gain to 0.

+
+ + + <em style="strong" its:withinText="nested">Calculate Frequencies</em> + +

This function calculates the center frequency and the width of each band using the current number of bands. Useful when the user wants fewer than 32 bands but has no idea about which frequencies should be chosen.

+
+
+
+
+ Band Options + + + + <em style="strong" its:withinText="nested">Type</em> + + + +

+ Off + - The filter is not working (turned off). +

+
+ +

+ Bell + - Bell filter with smooth peak/recess. +

+
+ +

+ High Pass + - High Pass filter with rejection of low frequencies. +

+
+ +

+ High Shelf + - Shelving filter with adjustment of high frequency range. +

+
+ +

+ Low Pass + - Low Pass filter with rejection of high frequencies. +

+
+ +

+ Low Shelf + - Shelving filter with adjustment of low frequency range. +

+
+ +

+ Notch + - Notch filter with full rejection of selected frequency. +

+
+ +

+ Resonance + - Resonance filter wih sharp peak/recess. +

+
+ +

+ All Pass + - All Pass filter. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Mode</em> + + + +

+ RLC + - Very smooth filters based on similar cascades of RLC contours. Bilinear Z-transform (BT) or Matched Z-transform (MT) is used for pole/zero mapping. +

+
+ +

+ BWC + - Butterworth-Chebyshev-type-1 based filters. Does not affect Resonance and Notch filters. Bilinear Z-transform (BT) or Matched Z-transform (MT) is used for pole/zero mapping. +

+
+ +

+ LRX + - Linkwitz-Riley based filters. Does not affect Resonance and Notch filters. Bilinear Z-transform (BT) or Matched Z-transform (MT) is used for pole/zero mapping. +

+
+ +

+ APO + - Digital biquad filters derived from canonic analog biquad prototypes digitalized through Bilinear transform. These are textbook filters which are implemented as in the Equalizer APO software. Direct design (DR) is used to serve the digital filter coefficients directly in the digital domain, without performing transforms. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Slope</em> + +

The slope of the filter characteristics.

+
+ + + <em style="strong" its:withinText="nested">Solo</em> + +

Makes the selected band the only one active.

+
+ + + <em style="strong" its:withinText="nested">Mute</em> + +

Mutes the selected band.

+
+ + + <em style="strong" its:withinText="nested">Frequency</em> + +

Center frequency of the selected band.

+
+ + + <em style="strong" its:withinText="nested">Width</em> + +

Bandwidth calculated as width = frequency / quality. +

+
+ + + <em style="strong" its:withinText="nested">Quality</em> + +

The quality factor of the filter used.

+
+
+
+
+ References + + +

+ Wikipedia Equalization (audio) +

+
+ +

+ LSP Parametric Equalizer x32 LeftRight +

+
+ +

+ Wikipedia Q Factor +

+
+ +

+ How to EQ - Q Factor and Bandwidth in EQ: What They Mean +

+
+
+
+
diff --git a/help/C/exciter.page b/help/C/exciter.page new file mode 100644 index 0000000..7d3ded0 --- /dev/null +++ b/help/C/exciter.page @@ -0,0 +1,68 @@ + + + + + + Exciter +

An Exciter is used to produce high sound that is not present in the original signal. This is done by creating harmonic distortions of the signal which are restricted in range and added to the original signal. It raises the upper end of an audio signal without simply raising the higher frequencies like an Equalizer would do to create a more "crisp" or "brilliant" sound.

+ + + + <em style="strong" its:withinText="nested">Amount</em> + +

Amount of harmonics added to the original signal.

+
+ + + <em style="strong" its:withinText="nested">Harmonics</em> + +

Amount of newly created harmonics.

+
+ + + <em style="strong" its:withinText="nested">Scope</em> + +

The frequency above which harmonics are produced.

+
+ + + <em style="strong" its:withinText="nested">Ceiling (button)</em> + +

Constrain the excitement on the upper end.

+
+ + + <em style="strong" its:withinText="nested">Ceiling (value)</em> + +

The frequency above which no harmonics are produced.

+
+ + + <em style="strong" its:withinText="nested">Blend Harmonics</em> + +

The "colour" (or octave) of the harmonics.

+
+ + + <em style="strong" its:withinText="nested">Listen</em> + +

Mute the original signal and listen to the harmonics exclusively.

+
+
+
+ References + + +

+ Calf Exciter +

+
+ +

+ Wikipedia Exciter (effect) +

+
+
+
+
diff --git a/help/C/filter.page b/help/C/filter.page new file mode 100644 index 0000000..4ca5d1d --- /dev/null +++ b/help/C/filter.page @@ -0,0 +1,50 @@ + + + + + + Filter +

A Filter is used to amplify (boost), pass or attenuate (cut) defined parts of a frequency spectrum. EasyEffects uses the Filter from Calf Studio Gear.

+ + + + <em style="strong" its:withinText="nested">Mode</em> + +

The type of the filter.

+
+ + + <em style="strong" its:withinText="nested">Frequency</em> + +

The center or cut-off frequency of the filter.

+
+ + + <em style="strong" its:withinText="nested">Resonance</em> + +

Add an accentuation to the center frequency. When used on a bandpass the surrounding frequencies are decreased in level and the band gets more narrow. A bandreject is narrowed down to a thin needle.

+
+ + + <em style="strong" its:withinText="nested">Inertia</em> + +

Smooths the jumps between frequencies.

+
+
+
+ References + + +

+ Wikipedia Audio Filter +

+
+ +

+ Calf Filter +

+
+
+
+
diff --git a/help/C/gate.page b/help/C/gate.page new file mode 100644 index 0000000..9bce933 --- /dev/null +++ b/help/C/gate.page @@ -0,0 +1,245 @@ + + + + + + Gate +

The Gate attenuates signals that register below a Threshold. This kind of signal processing is used to reduce disturbing noise between useful signals. EasyEffects uses the Stereo Sidechain Gate from Linux Studio Plugins.

+
+ Gate Workflow +

The Gate begins to open when the Sidechain level becomes above the Attack Zone Start level.

+

The Gate fully opens when the Sidechain level becomes above the Attack Threshold level.

+

The Gate begins to close when the Sidechain level becomes below the Release Zone Start level.

+

The Gate fully closes when the Sidechain level becomes below the Release Threshold level.

+
+
+ Gate Options + + + + <em style="strong" its:withinText="nested">Attack Time</em> + +

The length of time it takes to restore roughly two-thirds of the gain reduction.

+
+ + + <em style="strong" its:withinText="nested">Release Time</em> + +

The length of time it takes to apply roughly two-thirds of the gain reduction.

+
+ + + <em style="strong" its:withinText="nested">Curve Threshold</em> + +

The Gate fully opens upon the Sidechain level becoming above Curve Threshold (displayed as Attack Threshold level).

+

If Hysteresis is not enabled, the Gate begins to close upon the Sidechain level becoming below Curve Threshold (displayed as Release Zone Start level).

+
+ + + <em style="strong" its:withinText="nested">Curve Zone Size</em> + +

The Gate begins to open upon the Sidechain level becoming above the Curve Threshold + Curve Zone (displayed as Attack Zone Start level).

+

If Hysteresis is not enabled, the Gate fully closes upon the Sidechain level becoming below the Curve Threshold + Curve Zone (displayed as Release Threshold level).

+
+ + + <em style="strong" its:withinText="nested">Hysteresis</em> + +

When enabled, Curve Threshold and Curve Zone apply only to the opening Gate, and separate parameters can be configured for closing Gate.

+
+ + + <em style="strong" its:withinText="nested">Hysteresis Threshold</em> + +

If Hysteresis is enabled, the Gate begins to close upon the Sidechain level becoming below Curve Threshold + Hysteresis Threshold (displayed as Release Zone Start level).

+
+ + + <em style="strong" its:withinText="nested">Hysteresis Zone Size</em> + +

If Hysteresis is enabled, the Gate fully closes upon the Sidechain level becoming below the Curve Threshold + Hysteresis Threshold + Hysteresis Zone (displayed as Release Threshold level).

+
+ + + <em style="strong" its:withinText="nested">Reduction</em> + +

The amount of gain reduction to apply to the input signal when the Gate is fully closed.

+
+ + + <em style="strong" its:withinText="nested">Makeup</em> + +

The gain to apply after the gating stage.

+
+
+
+
+ Sidechain + + + + <em style="strong" its:withinText="nested">Listen</em> + +

Allows to listen the processed Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">Input Type</em> + +

Determines which signal is the Sidechain or, in other words, the signal that controls the gating stage.

+ + +

+ Internal + - The Sidechain is the Gate input signal (taken after applying the plugin input gain). +

+
+ +

+ External + - The Sidechain is an external source took by a specific input device (typically a microphone). +

+
+
+
+ + + <em style="strong" its:withinText="nested">Input Device</em> + +

Select the device for the External Sidechain.

+
+ + + <em style="strong" its:withinText="nested">Mode</em> + +

Determines how the Sidechain is evaluated for the gating stage.

+ + +

+ Peak + - The Gate reacts according to the peaks. +

+
+ +

+ RMS + - The Gate reacts according to the average loudness measured by the root mean square. +

+
+ +

+ Low-Pass + - The Gate reacts according to the signal processed by a Low-Pass filter. +

+
+ +

+ Uniform + - The Gate reacts according to the loudness measured by the average of the absolute amplitude. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Source</em> + +

Determines which part of the Sidechain is taken into account for the gating stage.

+ + +

+ Middle + - The sum of left and right channels. +

+
+ +

+ Side + - The difference between left and right channels. +

+
+ +

+ Left + - Only left channel is used. +

+
+ +

+ Right + - Only right channel is used. +

+
+
+
+ + + <em style="strong" its:withinText="nested">PreAmplification</em> + +

Gain applied to the Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">Reactivity</em> + +

The time that defines the number of samples used to process the Sidechain in RMS, Uniform and Low-Pass modes. Higher the value, more smooth the gating.

+
+ + + <em style="strong" its:withinText="nested">Lookahead</em> + +

The signal to gate is delayed by this amount of time, so that the gating will be applied earlier than it would be otherwise. The corresponding delay is reproduced on the output signal.

+
+
+
+
+ Sidechain Filters + + + + <em style="strong" its:withinText="nested">High-Pass Filter Mode</em> + +

Sets the type of the High-Pass filter applied to Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">High-Pass Frequency</em> + +

Sets the cut-off frequency of the High-Pass filter.

+
+ + + <em style="strong" its:withinText="nested">Low-Pass Filter Mode</em> + +

Sets the type of the Low-Pass filter applied to Sidechain signal.

+
+ + + <em style="strong" its:withinText="nested">Low-Pass Frequency</em> + +

Sets the cut-off frequency of the Low-Pass filter.

+
+
+
+
+ References + + +

+ Wikipedia Dynamic Range Compression +

+
+ +

+ LSP Sidechain Gate Stereo +

+
+ +

+ Wikipedia Noise Gate +

+
+
+
+
diff --git a/help/C/general.page b/help/C/general.page new file mode 100644 index 0000000..1a8db81 --- /dev/null +++ b/help/C/general.page @@ -0,0 +1,70 @@ + + + + + + General + + + + <em style="strong" its:withinText="nested">Launch Service at System Startup</em> + +

Start EasyEffects as a service in the next login.

+
+ + + <em style="strong" its:withinText="nested">Shutdown on Window Closing</em> + +

Terminates EasyEffects process on window close rather than keep it running in background.

+
+ + + <em style="strong" its:withinText="nested">Process All Output Streams</em> + +

Apply effects to the output of all audio applications (except those into the Excluded Apps). This will automatically activate the enable checkbutton that can be seen in the app list entries.

+
+ + + <em style="strong" its:withinText="nested">Process All Input Streams</em> + +

Apply effects to the input (microphone) of all audio applications (except those into the Excluded Apps). This will automatically activate the enable checkbutton that can be seen in the app list entries.

+
+ + + <em style="strong" its:withinText="nested">Ignore Streams from Monitor of Devices</em> + +

Do not process streams which are a duplication of the stream of existing devices. They, also known as Monitor Streams, are usually generated by applications like OBS to capture audio and redirect it to somewhere else, but may not be of any use in EasyEffects.

+
+ + + <em style="strong" its:withinText="nested">Use Cubic Volume</em> + +

Use cubic scale for app volume rather than linear one. Low percentages give lower volume.

+
+ + + <em style="strong" its:withinText="nested">Reset Volume of EasyEffects Virtual Devices at Startup</em> + +

Some applications may interfere with EasyEffects sink/source used to capture audio by applications/microphones lowering its volume. This options ensures the volume of EasyEffects virtual sink/source is at 100% at startup.

+
+ + + <em style="strong" its:withinText="nested">Inactivity Timeout</em> + +

After this amount of time, EasyEffects stops audio processing and the internal filters are unlinked. This helps not wasting CPU resources while processing silence, but also makes sure the filters and not unlinked and relinked for small pauses of the stream.

+
+ + + <em style="strong" its:withinText="nested">Use Dark Theme</em> + +

Prefer the dark version of the Adwaita theme for EasyEffects window.

+
+ + + <em style="strong" its:withinText="nested">Use Dark Theme</em> + +

When a popover menu is shown, return to the main window when a click is made outside the widget.

+
+
+
diff --git a/help/C/guide_1.page b/help/C/guide_1.page new file mode 100644 index 0000000..13dd5e4 --- /dev/null +++ b/help/C/guide_1.page @@ -0,0 +1,294 @@ + + + + + + Enhancing your internal notebook speakers without using an Equalizer +

This tutorial was written for PulseEffects by Markus Schmidt (schmidt@boomshop.net) on November 2019 and updated two years later for the new EasyEffects on PipeWire.

+
+ Introduction +

If you're a notebook user relying on your internal speakers and you - like me - own a model suffering from a tinny, clanging sound, EasyEffects is your salvation!

+

Commercial operating systems on laptops these days often come with software like Dolby Theatre and the like to enhance the sound of lousy notebook speakers to something more substantial and acoustically rich. Under Linux, EasyEffects will do the job for you, although, compared to the commercial pendants, there's some manual tweaking required until the community sets up a database with presets for common machines.

+

This DSP software comes with everything needed to fatten the sound of your laptop speakers with a flexibility never found in other operating systems. Unfortunately the drawback of this flexibility is that average users will get lost in the sheer amount of possibilities. That's why this tutorial was created.

+
+
+ Why no Equalizer? +

We will attack the problems one by one utilizing specific signal processors, deliberately renouncing Equalizers. Equalizers are not of any help here but tend to make these kinds of problems even worse. This is because of the nature of this processor, but also because users tend to add to the signal (additive equalization) instead of trying to eliminate problems by removing from the signal (subtractive equalization) like it is usually done in the professional world.

+

But even subtractive equalization wouldn't be of any help since the amplifiers and speakers in a notebook are not loud enough by default, so trying to eliminate problems this way leads to a quiet and still castrated sound. And raising the volume afterwards generally leads to distorted sounds and other problems because the system was at its limits beforehand and just fiddling with the frequency response doesn't help at all.

+
+
+ Frequency Range +

We'll have to talk about the frequency range. For a better understanding and because of the way we will solve our problems I'll break it down to five ranges which are:

+ + +

+ Sub – + More or less vibrations up to something an ear can barely hear. Everything from 10 Hz to ~40 Hz. +

+
+ +

+ Low or Bass – + Where the whole fundament of a signal is located. Low end of bass drums, bass synthesizers and bass guitars are found here. Movies occupy this range with explosions, rumbling waters, thunder, heavy gun fire and the like. Absolutely missing on notebooks and tablets. Technically speaking it's ~60 Hz - ~200 Hz. +

+
+ +

+ Low-Mid – + Hit a 0.5 m³ cardboard box and you know what low-mids are. The "punch" of a sound is often located here, also the juice of snare drums and electric guitars. In Movies, roaring engines and shotguns are found in this range. We're talking about ~250 Hz - ~750 Hz. +

+
+ +

+ High-Mid – + This is the ears most important and sensitive range. The main information of any kind of signal is located here. Human voice, picking of guitars, attack of drums, the colour of a synthesizer - everything carrying the main information of sound. Something around ~1 kHz - ~4 kHz. +

+
+ +

+ Highs – + The air, the breathe, the sizzling, the splashing - this is the range of brightness. Everything around and above ~5 kHz. +

+
+
+
+
+ Test Signal +

You definitely need a good signal for this job. I decided to use the song G€LD by Seeed.

+

It is quite snappy, has lots of well defined substance, clear and bright highs, present vocals, comes with a very balanced frequency response and is a great mix in combination with great mastering. Afterwards I tested against various movies and other stuff like talks, classical music and the like and was convinced of the result. Well produced, modern pop music (avoid the 80's and 90's stuff) is always a good test signal for this kind of job. Movies are way too dynamic, so is classical music, and they normally don't cover a steady, broad frequency range like this kind of signal.

+

We will not be able to make the notebook bounce. What is the goal here is that everything contained in the mix gets audible in a well balanced manner and to gain a present, upfront, broad and hopefully rich sound.

+

I assume you don't utilize a player or source which is able to produce levels above 0 dB. I also assume you don't use e.g. video players volume bar to lower the volume of your source. This approach works well for defined, mixed and mastered sound sources like music, movies, tv and the like, played back at 100% volume in the player. Set the desired volume directly on your hardware after the processing happened.

+
+
+ Problems +

Let's investigate the biggest problems first:

+ + + + <em style="strong">Bass</em> + +

The most obvious problem of notebook speakers is the tinny, pressure-free sound not reproducing any kind of low-end. This is because of the size of the membranes and the inadequate housing. Fortunately software can work around this issue at least a bit.

+
+ + + <em style="strong">Highs</em> + +

Often the highs are quite bitchy, not representing the "air" but torturing the listener with searing sibilants. In order to fix that we need to equal this frequency range out.

+
+ + + <em style="strong">Overall Frequency Response</em> + +

Normally the relation between the different frequency ranges low, low-mid, high-mid and height is quite out-of-bounds. This needs correction, although I promised a tutorial without EQ.

+
+ + + <em style="strong">Distortion</em> + +

Because of the thin and neutered sound users tend to raise the volume or even add an Equalizer to raise missing frequency ranges. This normally leads to digital distortions because every signal above 0 dB at the sound card DAC will go from occasional crackling up to a totally distorted sound.

+
+ + + <em style="strong">Dynamic range</em> + +

With movies, but music as well, those tiny transducers tend to wiping away low-level sounds but going ballistic on loud and bassy sounds. For this reason it's recommended to reduce the overall dynamic range so you don't need to press your ear onto the palm rest when the lady in the movie starts whispering.

+
+ + + <em style="strong">Stereo Image</em> + +

The stereo base is quite narrow because of the positioning of the speakers inside the laptop which gives an impression of almost mono signals.

+
+
+
+
+ Solutions +

Let's start fixing the sound. The result will not come even close to something more substantial but at least we'll be able to get the best out of the physical boundaries of these transducers.

+

Every parameter we are gonna set absolutely depends on your situation and the hardware you've got. Every notebook has its own frequency response and dynamic range so there's no panacea. But the audio signal processors, their order and their missions are well defined and reproducible.

+

Don't care about clipping in the plugins level meters. The signal will be processed as 32 bit numbers internally (check title bar) which gives a non-clipping overhead of hundreds of decibels. The only thing that shouldn't happen is that there's clipping when the signal hits the sound card DAC (Digital-to-Analog Converter), which would result in digital distortion.

+

Let's head over to the signal chain:

+ + + + <em style="strong">Limiter</em> + +

We will start with the last signal processor being used. As I explained earlier, as soon as the signal hits the sound card DAC it has to be below 0 dB, otherwise it will result in a distorted, messy sound.

+

Delete already present processors in the list, then add the Limiter. You will not hear any difference, which is what we expect. It will hit in as soon as we start messing up the signal with all the other processors. Set PreAmp to 0 dB, Lookahead to 4 ms, Attack to 2 ms and Release to 8 ms.

+

A Limiter monitors the signal in (nearly) realtime and detects peaks over a certain Threshold, in our case 0 dB. Set also Stereo Link to 100%, Oversampling to Half x4, disable External Sidechain and Auto Leveling and leave remaining options to their defaults.

+

As soon as a peak is detected, it starts lowering the volume constantly (within the Lookahead) until the peak will be below Threshold. Afterwards it raises the volume again (within release time frame) until it is back to normal. This way we avoid signals above Threshold hitting the DAC without being noticed too much. If one tries to overdo limiting, it will definitely result in distortion and other side effects, but in our case it's just a fire-and-forget troubleshooter so we can concentrate on the results without trying to mess with levelling over and over again.

+

Don't overdo things! This might render your overall sound experience worse than before.

+

Let's look at the real processing now.

+
+ + + <em style="strong">Filter</em> + +

First of all we should remove frequencies that cannot be heard because even if the speakers are unable to reproduce them a lot of energy will be wasted in the process. This will lead to problems like not being able to use the full dynamic range and the introduction of digital and physical distortions.

+

Add the Filter to the list and place it on top, above the Limiter. Set the type to 36 dB High Pass (this will cut off everything below a frequency and will let everything above it pass) and the frequency to 50 Hz (which is definitely below your laptop's speakers abilities). Continuously raise the frequency by 10 Hz until you start hearing a change in the lower end of the audible signal, which should be around 130-160 Hz. Subtract 10% (or 15 Hz) and set it as the Filters frequency. On my machine it is 145 Hz, since the signal started being affected at 160 Hz.

+

What happened is that we removed everything the speakers can't reproduce at all, leaving a little bit of signal just below this frequency, which is quite important for the next step.

+
+ + + <em style="strong">Bass Enhancer</em> + +

Let's grow some testicles to the signal.

+

Add the Bass Enhancer and place it at the second position, between the Filter and the Limiter. Set the Floor to 10 Hz and forget about it (we already removed everything below the Filter plugin cutoff frequency). Raise Harmonics to 10 and start with a Scope of 200 Hz. Now start raising the Amount continuously until the bass takes over the whole energy, which is definitely too much. For me it works best at +24 dB. Which is huge but my ThinkPad P1 has the worst speakers I've ever heard in a 2.8k € notebook.

+

What happens is that the Bass Enhancer adds frequencies to the signal which weren't there before. While an Equalizer only raises stuff which is already in the signal, a Bass Enhancer improves the lower end by adding distortion to a specific frequency range. This kind of distortion adds so called Harmonics to the signal which is a multiple of existing frequencies. On the Blend slider you can choose seamlessly between 2nd and 3rd Harmonics, which means that a frequency of 100 Hz produces a new signal of 200/300/400/600/800/900 Hz... at varying (due to the Harmonics setting) and constantly decreasing levels. This means we're effectively raising the lower range into something better reproducible. It doesn't add or raise the real fundament (so your trousers won't start to flutter), but makes more audible signals that have been swallowed by the hardware before.

+

Later on, in order to refine the result, you should play with the Amount parameter to define the level of bass and maybe with the Scope to define the upper end of our additional Harmonics.

+
+ + + <em style="strong">Multiband Compressor</em> + +

This is the most demanding step in the chain. Even professionals have great respect for this signal processor since it's absolutely able to destroy your signals big time. But let's be honest, we're consumers and no one will hear the difference between 100 ms and 200 ms Attack time - even on notebook and tablet speakers. This means we can work with some reliable, well established defaults for the timing and frequency splits.

+

The Multiband Compressor will solve several things for us. It will cut outstanding and annoying frequencies, lower the overall dynamic range and figure our overall frequency response. The latter is what most people try to achieve with an Equalizer. Thing is Equalizers aren't dynamic which will add to the problems instead of solving anything.

+

Add the Multiband Compressor and place it at the third position, after the Bass Enhancer and before the Limiter.

+

Since the Bass Enhancer really raised the energy and level of the signal, lower the Multiband Compressor input gain to -6 dB as a starting point. Enable bands 2, 3 and 4. Set Modern Operating Mode and disable the Sidechain Boost. Then let's set the split frequencies for the different bands:

+ + +

Band 2 Start: 250 Hz

+
+ +

Band 3 Start: 1250 Hz

+
+ +

Band 4 Start: 5000 Hz

+
+
+

Afterwards let's set some defaults:

+ + +

Band 1

+ + +

Attack Time: 150 ms

+
+ +

Release Time: 300 ms

+
+ +

Attack Threshold: -16 dB

+
+ +

Ratio: 5

+
+ +

Knee: -12 dB

+
+ +

Makeup: 4 dB

+
+
+
+ +

Band 2

+ + +

Attack Time: 150 ms

+
+ +

Release Time: 200 ms

+
+ +

Attack Threshold: -24 dB

+
+ +

Ratio: 3

+
+ +

Knee: -9 dB

+
+ +

Makeup: 4 dB

+
+
+
+ +

Band 3

+ + +

Attack Time: 100 ms

+
+ +

Release Time: 150 ms

+
+ +

Attack Threshold: -24 dB

+
+ +

Ratio: 3

+
+ +

Knee: -9 dB

+
+ +

Makeup: 4 dB

+
+
+
+ +

Band 4

+ + +

Attack Time: 80 ms

+
+ +

Release Time: 120 ms

+
+ +

Attack Threshold: -24 dB

+
+ +

Ratio: 4

+
+ +

Knee: -9 dB

+
+ +

Makeup: 4 dB

+
+
+
+
+

Compression Mode for all enabled bands should be Downward. The remaining parameters can be left to their defaults. These values should be a good starting point.

+

A Compressor lowers signal levels which appear above a certain Threshold. It adds a simple multiplication to the signal defined by the Ratio. If the Threshold is set to -24 dB and Ratio to 2, a signal of -12 dB would in fact become -18 dB. In this example one can then raise the Makeup parameter to 6 dB, since this is what went "lost". So first of all we're rendering loud signals quieter to then raise the overall volume, which leads to less dynamic range with quiet parts becoming more audible.

+

The timing settings affect the "speed" of the compression. Attack means that a signal needs to go over Threshold for this amount of time until the Compressor reaches the full (negative) amplification. Release defines the amount of time the signal has to stay below Threshold until the amplification is back to 1 again.

+

A Multiband Compressor splits the signal in various frequency ranges to work on them exclusively with dedicated compression stages. This means that a very loud bass drum would not affect a crash cymbal, since they are clearly located in different bands.

+

Start playing around with these parameters:

+ + +

+ Makeup – + This is probably most important setting in this concept. Makeup raises the signal after compression stage which means that it directly influences the perceived volume of every single band. Or in other words: this is your Equalizer :). Raise Makeup of single bands to make them louder or quieter. On my ThinkPad P1 I ended up with 4 dB, 3 dB, 6 dB and 6 dB respectively in band 1, 2, 3 and 4. +

+
+ +

+ Input Level – + Set it to -6 dB by default, I ended up at -3 dB. What happens is that a higher input level pushes all bands of the Compressor equally, leading to a allegedly louder sound (well, the loudness was raised in fact) without tweaking every single band manually. This reduces the overall dynamic range, raising quiet parts and squeezing loud parts even more. +

+
+
+
+ + + <em style="strong">Stereo Tools</em> + +

After figuring our overall sound let's look for some icing on the cake.

+

Add the Stereo Tools and place it at the fourth position, after Multiband Compressor and before Limiter. This tool has a lot of functionality but we only need just a single parameter. Switch to the "Output" tab and set the parameter Stereo Base to 0.25. That's it.

+

Stereo Base acts on the two channels. It adds inverted signals crossover-wise. This way one can bring a full stereo signal down to mono seamlessly (by going negative values, -1 is fully mono) but also raise the stereo base by choosing positive numbers. This setting has lots of side effects, so avoid overdoing it! One of the bigger problems is that it reduces the bass range due to different effects, which is something we definitely don't want here.

+

Play with Stereo Base to spread the appearance of your sound to a nice, broad stage without loosing the center (vocals, snare drums, conversations in movies) or substance in the lower end. Most likely values between 0 and 0.5 will give some good results.

+
+
+
+
+ Aftermath +

Hopefully you ended up with a better sound than before. This signal processor chain is able to completely trash your sound if not done right but also can improve it to compete with some high class notebook speaker systems. All manufacturers put on the pants the same way and Dolby Theatre is no rocket science but just some presets on a presumably comparable set of signal processors set up in the presumably same way as this tutorial explained.

+

When my notebook was new, I first ran the pre-installed Windows system in order to test if all hardware was working. Sound-wise I remembered the bad reputation of this machine in every test, so I tried some tunes on Youtube - and was quite convinced. After installing my Linux system the enthusiasm was totally gone - the sound turned into a squawking, pressure-less something. It became clear that all problems of the internal speakers where due to the missing sound chips DSP driver. But fortunately Wellington Wallace spent his spare-time casting the most important Calf and LSP plugins for this job into something usable on consumers systems. Thanks a bunch for that, mate!

+
+
+ tl;dr +

Sorry dude, this isn't done by simply loading a preset, since the community is not Apple, Lenovo or Dell offering high quality Dolby Theatre drivers for your particular machine.

+
+
diff --git a/help/C/index.page b/help/C/index.page new file mode 100644 index 0000000..8339afb --- /dev/null +++ b/help/C/index.page @@ -0,0 +1,24 @@ + + + + + Wellington Wallace + wellingtonwallace@gmail.com + + + EasyEffects +

EasyEffects applies audio effects to applications managed by PipeWire. The user can apply effects to applications output or to the microphone before sending its audio to a recording application.

+
+ Guides +
+
+ User Interface +
+
+ Plugins +
+
+ Calibration +
+
diff --git a/help/C/limiter.page b/help/C/limiter.page new file mode 100644 index 0000000..2294855 --- /dev/null +++ b/help/C/limiter.page @@ -0,0 +1,132 @@ + + + + + + Limiter +

A Limiter is a special type of downward Compressor which does not allow the signal to overtake a predetermined Threshold. Ideally it has a very high compression ratio that takes the amplitude below a ceiling which stands as the maximum output level. For this reason it is usually named "brick-wall limiter".

+

EasyEffects uses the Sidechain Stereo Limiter from Linux Studio Plugins. In most cases it works as a brick-wall limiter, but it offers also an additional feature that acts like a Compressor with extreme settings, so the output signal may exceed the specified Threshold.

+ + + + <em style="strong" its:withinText="nested">Mode</em> + +

Select the operative mode of the peak cutting algorithm which searches the peaks above the Threshold and applies short gain reduction patches to the signal.

+

These patches can be selected in 3 forms: + Hermite, + Exponential and + Linear. + Each one has 4 different variants related to gain reduction of the samples around the peak: + Thin, + Tail, + Duck and + Wide. +

+

The shape of each form and variant can be referred into the Linux Studio Plugin manual. See References section at the bottom of the present document.

+
+ + + <em style="strong" its:withinText="nested">Oversampling</em> + +

When enabled, the sample rate is internally increased in order to improve peak detection and reduce aliasing (that causes distortion).

+

The modes have 2 main types: Full, which increases both the Sidechain and the Input signals, and Half which increases only the Sidechain. Each one of them specifies different multipliers and, between parentheses, the number of "lobes in the kernel".

+

The oversampled Input signal is downsampled to the original sample rate after processing.

+
+ + + <em style="strong" its:withinText="nested">Dither</em> + +

If specified, it enables Dithering for the selected bit depth. The process of Dithering adds a low-level noise to output signal in order to mask "quantization distortion", a form of artifact present in digital audio rendered at lower bit depth.

+
+ + + <em style="strong" its:withinText="nested">SC PreAmp</em> + +

The gain applied to the Sidechain before it is processed.

+
+ + + <em style="strong" its:withinText="nested">Lookahead</em> + +

The size of the buffer used to detect the peaks in advance. It adds the corresponding latency to the output signal.

+
+ + + <em style="strong" its:withinText="nested">Attack</em> + +

The length of time it takes to apply the needed gain reduction to keep the peak below the Threshold.

+

It affects the length of the gain reduction patch. It cannot be larger than the Lookahead (if specified larger, it's set internally as the max possible value).

+
+ + + <em style="strong" its:withinText="nested">Release</em> + +

The length of time it takes to restore the reduced gain around the limited peak.

+

It affects the length of the gain reduction patch. It cannot be twice larger than the Lookahead (if specified larger, it's set internally as the max possible value).

+
+ + + <em style="strong" its:withinText="nested">Threshold</em> + +

The target level above which the Limiter should reduce the peak of the signal. In some modes it represents the maximum output level.

+
+ + + <em style="strong" its:withinText="nested">Threshold Boost</em> + +

If enabled it applies an amount of gain to the limited signal equal to the absolute value of the Threshold. This causes the peak limited at the Threshold level to output at 0 dB (it has only effect when the Threshold is set below 0 dB).

+
+ + + <em style="strong" its:withinText="nested">Stereo Link</em> + +

The degree of the channel linking. At 0% both channels are limited independently while at 100% the loudest one triggers the same gain reduction on both.

+
+ + + <em style="strong" its:withinText="nested">External Sidechain</em> + +

Switch the Sidechain to an external source took by a specific input device (typically a microphone).

+
+
+
+ Auto Leveling +

The Auto Leveling checkbutton introduces an additional feature named "Automated Level Regulation" (ALR) which acts like a Compressor with infinite ratio for the purpose of applying a smoothed gain reduction rather than a stronger peak cutter like in brick-wall mode. This configuration could get the output level to exceed the Threshold even if the signal is highly compressed.

+ + + + <em style="strong" its:withinText="nested">Attack</em> + +

Manage how the raise of the input signal affects the smoothness of the ALR curve that controls the gain reduction level. Higher the value, more quickly the curve goes to it's maximum.

+
+ + + <em style="strong" its:withinText="nested">Release</em> + +

Manage how the fall of the input signal affects the smoothness of the curve that controls the gain reduction level. Higher the value, more quickly the curve goes to it's minimum.

+
+ + + <em style="strong" its:withinText="nested">Knee</em> + +

Manage the Threshold of the ALR gain curve and, in fact, adjust the balance between two gain reduction stages. Raising the value delegates more work to the peak-cutting algorithm. Lowering the value delegates more work to the ALR gain reduction algorithm.

+
+
+
+
+ References + + +

+ Wikipedia Limiter +

+
+ +

+ LSP Sidechain Limiter Stereo +

+
+
+
+
diff --git a/help/C/loudness.page b/help/C/loudness.page new file mode 100644 index 0000000..1b2a746 --- /dev/null +++ b/help/C/loudness.page @@ -0,0 +1,75 @@ + + + + + + Loudness +

EasyEffects uses the Loudness Compensator from Linux Studio Plugins which applies the "equal-loudness contour" corrections to the input signal. Equal-loudness contour is a measure of sound pressure level (SPL), over the frequency spectrum, for which a listener perceives a constant loudness when presented with pure steady tones.

+ + + + <em style="strong" its:withinText="nested">Standard</em> + +

Allows to select different equal-loudness contour standards.

+ + +

+ Flat + - Applies flat frequency response to the whole spectrum. It's similar to just a gain knob but useful to perform a comparison to other modes. +

+
+ +

+ ISO 226:2003 + - Recent equal-loudness contour standard published in 2003. +

+
+ +

+ Fletcher-Munson + - The first equal-loudness contour implementation by Harvey Fletcher and Wilden A. Munson published in 1933. +

+
+ +

+ Robinson-Dadson + - More accurate equal-loudness contour implementation by D.W. Robinson and R.S. Dadson published in 1956. It became the basis for the ISO 226:2003 standard. +

+
+
+
+ + + <em style="strong" its:withinText="nested">FFT Size</em> + +

Allows to select size of the Fast Fourier Transform frame used for the processing. The larger FFT frame is, the more precise the curve is approximated and the more latency is introduced.

+
+ + + <em style="strong" its:withinText="nested">Output</em> + +

The output volume of the signal with applied equal loudness contour. It controls the loudness of the 1 kHz pure sine wave.

+
+
+
+ References + + +

+ Wikipedia Equal-Loudness Contour +

+
+ +

+ LSP Loudness Compensator Stereo +

+
+ +

+ Lindos Electronics - Equal-Loudness Contours +

+
+
+
+
diff --git a/help/C/maximizer.page b/help/C/maximizer.page new file mode 100644 index 0000000..3aefdaa --- /dev/null +++ b/help/C/maximizer.page @@ -0,0 +1,44 @@ + + + + + + Maximizer +

The Maximizer is a special type of Limiter that does not only prevent the signal to exceed a specified target level, but also adjusts the average Loudness of the audio track.

+

EasyEffects uses the Maximizer developed by ZamAudio. It acts like an Amplifier that feeds a brick-wall Limiter with a fixed Lookahead of 10 ms adding the corresponding delay to the output signal.

+ + + + <em style="strong" its:withinText="nested">Threshold</em> + +

This parameter represents the ideal amplification level needed by the signal.

+

It contributes along with the Ceiling to determine the amount of gain to apply to the signal before the limiting stage. The gain is calculated by (-Threshold) - (-Ceiling). +

+

For example, on Threshold -6 dB and Ceiling -2 dB, the signal is amplified by 4 dB and limited to not exceed -2 dB output level.

+
+ + + <em style="strong" its:withinText="nested">Ceiling</em> + +

This parameter represents the ideal attenuation level needed by the signal and the maximum allowed output level.

+

When the Threshold is set to 0 dB, the Ceiling is simply the gain reduction. When the Threshold is lowered, the signal is boosted without overtaking the Ceiling value.

+
+ + + <em style="strong" its:withinText="nested">Release</em> + +

Sets the release of the internal brick-wall Limiter. Lower values may introduce small artifacts.

+
+
+
+ References + + +

+ Sonarworks Blog - What Is A Maximizer? +

+
+
+
+
diff --git a/help/C/multibandcompressor.page b/help/C/multibandcompressor.page new file mode 100644 index 0000000..9ccd7f3 --- /dev/null +++ b/help/C/multibandcompressor.page @@ -0,0 +1,320 @@ + + + + + + Multiband Compressor +

EasyEffects uses the Sidechain Multiband Compressor Stereo developed by Linux Studio Plugins. Please refer to the Compressor documentation to comprehend the basic functionality of the dynamic range compression.

+
+ Global Options + + + + <em style="strong" its:withinText="nested">Band Management</em> + +

This Compressor allows to split the input signal up to 8 bands. Each band is not attached to it's strict frequency and can be controlled by completely different frequency range that can be obtained by applying Low-Cut and Hi-Cut filters to the Sidechain signal.

+

The first band is always enabled while the others can be activated if needed. When only the first band is enabled, the functionality is similar to the Singleband Sidechain Compressor. Otherwise the signal is split in more bands and each band is compressed individually. After the compression stage, the bands are mixed together to form the output result.

+
+ + + <em style="strong" its:withinText="nested">Operating Mode</em> + +

Determines how the input signal is split to obtain the different bands.

+ + +

+ Classic + - The original signal is split using crossover filters. After the compression stage, all bands become phase-compensated using All-Pass filters. +

+
+ +

+ Modern + - Each band is processed by a pair of dynamic shelving filters. This mode allows a better control over the gain of each band. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Sidechain Boost</em> + +

If enabled, it introduces a special mode for assigning the same weight for higher frequencies opposite to lower frequencies.

+

When disabled, the frequency band is processed 'as is', but the usual audio signal has 3 dB/octave falloff in the frequency domain and could be compared with the pink noise. So lower frequencies take more effect on the Compressor rather than higher frequencies.

+

On the other hand the Sidechain Boost mode allows to compensate the -3 dB/octave falloff of the signal spectrum and, even more, makes the signal spectrum growing +3 dB/octave in the almost fully audible frequency range.

+

+ Pink applies +3 dB/octave while + Brown applies +6 dB/octave Sidechain Boost. + Each of them can use bilinear-transformed (BT) or matched-transformed (MT) shelving filter. +

+
+ + + <em style="strong" its:withinText="nested">Sidechain Source</em> + +

If the External Sidechain is enabled inside at least one band, this combobox allows to select the input device as source.

+
+
+
+
+ Band Options + + + + <em style="strong" its:withinText="nested">Band Start</em> + +

Allows to change the lower end split frequency of the selected band. This value is assigned to the Band End of the previous enabled band. It can be modified for all bands except the first one, which is always enabled and its value is 0 Hz.

+
+ + + <em style="strong" its:withinText="nested">Band End</em> + +

Specify the upper end split frequency of the selected band. It cannot be directly modified and assumes the same value of the Band Start of the next enabled band. For the last enabled band it is always 24.000 Hz.

+
+ + + <em style="strong" its:withinText="nested">Compression Mode</em> + + + +

+ Downward + - It's aimed to decrease the gain of the signal above the Threshold. +

+
+ +

+ Upward + - It's aimed to increase the gain of the signal below the Threshold. +

+
+ +

+ Boosting + - It's aimed to increase the gain of the signal below the Threshold by a specific amount. +

+
+
+
+ + + <em style="strong" its:withinText="nested">External Sidechain</em> + +

The Sidechain is an external source took by a specific input device (typically a microphone).

+
+ + + <em style="strong" its:withinText="nested">Band Bypass</em> + +

If enabled, the selected band is not affected by the compression stage. To not be confused by the Bypass checkbutton in the global options which bypasses the whole Multiband Compressor.

+
+ + + <em style="strong" its:withinText="nested">Solo</em> + +

Turns on the Solo mode to the selected band by applying -36 dB gain to the other non-soloing bands.

+
+ + + <em style="strong" its:withinText="nested">Mute</em> + +

Turns on the Mute mode applying -36 dB gain to to the selected band.

+
+ + + <em style="strong" its:withinText="nested">Attack Time</em> + +

The length of time it takes to apply roughly two-thirds of the targeted amount of compression ratio to the uncompressed band signal.

+
+ + + <em style="strong" its:withinText="nested">Release Time</em> + +

The length of time it takes to restore roughly two-thirds of the reduced gain (in Downward mode) or increased gain (in Upward/Boosting mode) to the compressed band signal.

+
+ + + <em style="strong" its:withinText="nested">Attack Threshold</em> + +

The target level around which the compression is applied (the range depends by the Knee).

+
+ + + <em style="strong" its:withinText="nested">Release Threshold</em> + +

Sets up the Threshold of the Release Time, calculated by summing the Release Threshold to the Attack Threshold.

+

If the Sidechain level is above that Threshold, the compressor uses the Release Time for the releasing stage. Otherwise the Attack Time is used in place of Release Time.

+

For example, with -10 dB Attack Threshold and -60 dB Release Threshold, if the Sidechain is above -10 + (-60) = -70 db, the Release Time is used for the gain restoration. If the Sidechain is below -70 db, the Attack Time is used for the gain restoration.

+
+ + + <em style="strong" its:withinText="nested">Ratio</em> + +

The amount of attenuation (in Downward mode) or amplification (in Upward/Boosting mode) that will be applied to the signal.

+

For example, when the Ratio is 2 in Downward mode and the Sidechain rises above the Threshold by 10 dB, the signal would be ideally reduced by 5 dB (10/2 dB). In practice this behavior mostly depends on how the Multiband Compressor is designed and configured.

+
+ + + <em style="strong" its:withinText="nested">Knee</em> + +

The range over which the Compressor switches from no compression to almost the full ratio compression (the Threshold usually sits at the center of this transition zone).

+
+ + + <em style="strong" its:withinText="nested">Makeup</em> + +

The gain to apply after the compression stage.

+
+
+
+
+ Band Sidechain Options + + + + <em style="strong" its:withinText="nested">Mode</em> + +

Determines how the Sidechain of the selected band is evaluated for the compression stage.

+ + +

+ Peak + - The Compressor reacts according to the peaks. +

+
+ +

+ RMS + - The Compressor reacts according to the average loudness measured by the root mean square. +

+
+ +

+ Low-Pass + - The Compressor reacts according to the signal processed by a Low-Pass filter. +

+
+ +

+ Uniform + - The Compressor reacts according to the loudness measured by the average of the absolute amplitude. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Source</em> + +

Determines which part of the Sidechain is taken into account for the compression stage.

+ + +

+ Middle + - The sum of left and right channels. +

+
+ +

+ Side + - The difference between left and right channels. +

+
+ +

+ Left + - Only left channel is used. +

+
+ +

+ Right + - Only right channel is used. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Low-Cut Filter</em> + +

Enables a custom Low-Cut Filter for the selected band.

+
+ + + <em style="strong" its:withinText="nested">Low-Cut Frequency</em> + +

Sets the cut-off frequency of the custom Low-Cut filter. If it is disabled, the default Low-Cut filter assumes internally the Band Start frequency as the cut-off frequency.

+
+ + + <em style="strong" its:withinText="nested">Hight-Cut Filter</em> + +

Enables a custom High-Cut Filter for the selected band.

+
+ + + <em style="strong" its:withinText="nested">Hight-Cut Frequency</em> + +

Sets the cut-off frequency of the custom High-Cut filter. If it is disabled, the default High-Cut filter assumes internally the Band End frequency as the cut-off frequency.

+
+ + + <em style="strong" its:withinText="nested">PreAmp</em> + +

Gain applied to the Sidechain signal of the selected band.

+
+ + + <em style="strong" its:withinText="nested">Reactivity</em> + +

The time that defines the number of samples used to process the Sidechain in RMS, Uniform and Low-Pass modes. Higher the value, more smooth the compression.

+
+ + + <em style="strong" its:withinText="nested">Lookahead</em> + +

The band signal to compress is delayed by this amount of time, so that the compression will be applied earlier than it would be otherwise.

+

Each band can have different Lookahead values. To avoid phase distortions in the mixing stage, all the bands are automatically delayed for an individually calculated period of time.

+
+ + + <em style="strong" its:withinText="nested">Boost Amount</em> + +

Maximum gain amplification to apply in Boosting Mode.

+
+ + + <em style="strong" its:withinText="nested">Boost Threshold</em> + +

The Threshold below which a constant amplification will be applied to the band signal in Upward Mode (it prevents from applying infinite amplification to very quiet signals).

+
+
+
+
+ References + + +

+ Wikipedia Dynamic Range Compression +

+
+ +

+ LSP Sidechain Multiband Compressor Stereo +

+
+ +

+ Black Ghost Audio - The Ultimate Guide to Compression +

+
+ +

+ Attack Magazine - Demolishing The Myths of Compression +

+
+
+
+
diff --git a/help/C/multibandgate.page b/help/C/multibandgate.page new file mode 100644 index 0000000..2c192c9 --- /dev/null +++ b/help/C/multibandgate.page @@ -0,0 +1,153 @@ + + + + + + Multiband Gate +

EasyEffects uses the Multiband Gate Stereo developed by Calf Studio Gear. Please refer to the Gate documentation to comprehend the basic functionality of the gating process.

+
+ Global Options + + + + <em style="strong" its:withinText="nested">Band Selection</em> + +

This Gate splits the input signal in 4 bands. The first one is named Sub Band, the second Low Band, the third Mid Band and the last High Band. Each one of them is processed individually and can have different configurations. After the gating stage, all bands are mixed together to form the output result.

+
+ + + <em style="strong" its:withinText="nested">Operating Mode</em> + +

Determines how the input signal is split to obtain the 4 bands.

+ + +

+ LR4 + - The original signal is split using the fourth-order Linkwitz–Riley crossover filter. +

+
+ +

+ LR8 + - The original signal is split using the eighth-order Linkwitz–Riley crossover filter. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Split 1/2</em> + +

The split frequency that separates the Sub Band from the Low Band.

+
+ + + <em style="strong" its:withinText="nested">Split 2/3</em> + +

The split frequency that separates the Low Band from the Mid Band.

+
+ + + <em style="strong" its:withinText="nested">Split 3/4</em> + +

The split frequency that separates the Mid Band from the High Band.

+
+
+
+
+ Band Options + + + + <em style="strong" its:withinText="nested">Band Bypass</em> + +

If enabled, the selected band is not affected by the gating stage. To not be confused by the Bypass checkbutton in the global options which bypasses the whole Multiband Gate.

+
+ + + <em style="strong" its:withinText="nested">Solo</em> + +

Mutes all bands not set to Solo.

+
+ + + <em style="strong" its:withinText="nested">Detection</em> + +

Determines how the band signal is evaluated for the gain reduction.

+ + +

+ RMS + - The gating process reacts according to the average level measured by the root mean square. +

+
+ +

+ Peak + - The gating process reacts according to the peaks. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Release</em> + +

The length of time it takes to apply roughly two-thirds of the targeted amount of reduction ratio.

+
+ + + <em style="strong" its:withinText="nested">Attack</em> + +

The length of time it takes to restore roughly two-thirds of the reduced gain.

+
+ + + <em style="strong" its:withinText="nested">Threshold</em> + +

The target level around which the reduction is applied (the range depends by the Knee).

+
+ + + <em style="strong" its:withinText="nested">Ratio</em> + +

The amount of reduction that will be applied to the signal.

+

For example, when the Ratio is 2 and the signal falls below the Threshold by 5 dB, it would be ideally reduced by 10 dB (5x2 dB, or less if the maximum band gain Reduction is greater than -10 dB). In practice this behavior mostly depends on how the Multiband Gate is designed and configured.

+
+ + + <em style="strong" its:withinText="nested">Knee</em> + +

The range over which the Gate switches from no reduction to almost the full ratio reduction (the Threshold usually sits at the center of this transition zone).

+
+ + + <em style="strong" its:withinText="nested">Makeup</em> + +

The gain to apply to the band signal after the gating stage.

+
+ + + <em style="strong" its:withinText="nested">Max Reduction</em> + +

The maximum level of gain reduction to apply when the band signal is below the Threshold.

+
+
+
+
+ References + + +

+ Calf Multiband Gate +

+
+ +

+ Wikipedia Noise Gate +

+
+
+
+
diff --git a/help/C/pipewire.page b/help/C/pipewire.page new file mode 100644 index 0000000..eb8be5d --- /dev/null +++ b/help/C/pipewire.page @@ -0,0 +1,43 @@ + + + + + + PipeWire +

PipeWire tab can be used to set default devices, autoloading presets and test signals in addition to refer to different information about PipeWire installation on the user system.

+ + + + <em style="strong" its:withinText="nested">General</em> + +

Choose between using default devices or select one of the connected devices managed by PipeWire.

+

PipeWire version, quantum values and sample rate are also reported inside the tab.

+
+ + + <em style="strong" its:withinText="nested">Presets Autoloading</em> + +

The list of autoloading presets associated to specific Devices and their Profile.

+

The user can change their combination selecting between the available Presets and the connected Devices from the relative comboboxes.

+
+ + + <em style="strong" its:withinText="nested">Modules</em> + +

The list of PipeWire modules installed on the system.

+
+ + + <em style="strong" its:withinText="nested">Modules</em> + +

The list of PipeWire clients loaded on the system.

+
+ + + <em style="strong" its:withinText="nested">Test Signal</em> + +

Configures a test signal for testing purpose.

+
+
+
diff --git a/help/C/pitch.page b/help/C/pitch.page new file mode 100644 index 0000000..812c689 --- /dev/null +++ b/help/C/pitch.page @@ -0,0 +1,162 @@ + + + + + + Pitch +

Pitch shifting is a sound recording technique in which the original Pitch of a sound is raised or lowered. EasyEffects uses the pitch shifter from RubberBand.

+ + + + <em style="strong" its:withinText="nested">Mode</em> + +

Controls the method used for pitch shifting.

+ + +

+ High Speed + - Uses a method with a CPU cost that is relatively moderate and predictable. +

+
+ +

+ High Quality + - Uses the highest quality method for pitch shifting. This CPU cost is approximately proportional to the required frequency shift. +

+
+ +

+ High Consistency + - Uses the method that gives greatest consistency when used to create small variations in pitch around the 1.0-ratio level. Unlike the previous two options, this avoids discontinuities when moving across the 1.0 pitch scale. It also consumes more CPU than the others in the case where the pitch scale is exactly 1.0. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Formant</em> + +

Controls the handling of formant shape (spectral envelope) when pitch-shifting.

+ + +

+ Shifted + - Applies no special formant processing. The spectral envelope will be pitch shifted as normal. +

+
+ +

+ Preserved + - Preserves the spectral envelope of the unshifted signal. This permits shifting the note frequency without so substantially affecting the perceived pitch profile of the voice or instrument. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Transients</em> + +

Controls the component frequency phase-reset mechanism that may be used at transient points to provide clarity and realism to percussion and other significant transient sounds.

+ + +

+ Crisp + - Resets component phases at the peak of each transient (the start of a significant note or percussive event). This usually results in a clear-sounding output, but it is not always consistent, and may cause interruptions in stable sounds present at the same time as transient events. +

+
+ +

+ Mixed + - Resets component phases at the peak of each transient, outside a frequency range typical of musical fundamental frequencies. The results may be more regular for mixed stable and percussive notes than Crisp option, but with a "phasier" sound. The balance may sound very good for certain types of music and fairly bad for others. +

+
+ +

+ Smooth + - Does not reset component phases at any point. The results will be smoother and more regular but may be less clear than the other transient options. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Detector</em> + +

Controls the type of transient detector used.

+ + +

+ Compound + - Uses a general purpose transient detector which is likely to be good for most situations. +

+
+ +

+ Percussive + - Detects percussive transients. +

+
+ +

+ Soft + - Uses an onset detector with less of a bias toward percussive transients. This may give better results with certain material (e.g. relatively monophonic piano music). +

+
+
+
+ + + <em style="strong" its:withinText="nested">Phase</em> + +

Controls the adjustment of component frequency phases from one analysis window to the next during non-transient segments.

+ + +

+ Laminar + - Adjusts phases when stretching in such a way as to try to retain the continuity of phase relationships between adjacent frequency bins whose phases are behaving in similar ways. This should give good results in most situations. +

+
+ +

+ Independent + - Adjusts the phase in each frequency bin independently from its neighbours. This usually results in a slightly softer, phasier sound. +

+
+
+
+ + + <em style="strong" its:withinText="nested">Cents</em> + +

Number of cents the Pitch will be increased or decreased.

+
+ + + <em style="strong" its:withinText="nested">Semitones</em> + +

Number of semitones the Pitch will be increased or decreased.

+
+ + + <em style="strong" its:withinText="nested">Octaves</em> + +

Number of octaves the Pitch will be increased or decreased.

+
+
+
+ References + + +

+ Wikipedia Pitch Shift +

+
+ +

+ Rubber Band Audio Time Stretcher Library - Attractive Features +

+
+
+
+
diff --git a/help/C/reverb.page b/help/C/reverb.page new file mode 100644 index 0000000..4b1886c --- /dev/null +++ b/help/C/reverb.page @@ -0,0 +1,81 @@ + + + + + + Reverberation +

Reverberation is the phenomenon of persistence of sound after the source has been stopped as a result of multiple reflections of the waves over objects within a closed surface. These reflections build up with each other and decay gradually as they are absorbed by the surfaces of objects in the space enclosed.

+

The Reverberation is different than Echo because the Echo is a reflected sound wave with sufficient magnitude and delay to be detectable as a signal distinct from the source one. To simulate the Reverberation effect, EasyEffects uses the Reverb plugin developed by Calf Studio Gear.

+ + + + <em style="strong" its:withinText="nested">High Frequency Damping</em> + +

Cutoff frequency of the reflections. It causes higher frequencies to decay faster.

+
+ + + <em style="strong" its:withinText="nested">Room Size</em> + +

Size of the space where simulated Reverberation occurs inside. It determines the time between reflections.

+
+ + + <em style="strong" its:withinText="nested">Diffusion</em> + +

Degree of uniformity. Higher values lead to less uniform Reverberation.

+
+ + + <em style="strong" its:withinText="nested">Pre Delay</em> + +

Additional delay. It corresponds to a distance between sound source and the nearest wall.

+
+ + + <em style="strong" its:withinText="nested">Decay Time</em> + +

The time it takes for Reverberation to fade out.

+
+ + + <em style="strong" its:withinText="nested">Wet Amount</em> + +

Amount of processed signal (Reverberation) in the output.

+
+ + + <em style="strong" its:withinText="nested">Dry Amount</em> + +

Amount of unprocessed signal in the output.

+
+ + + <em style="strong" its:withinText="nested">Bass Cut</em> + +

Removes low frequencies from the Reverberation.

+
+ + + <em style="strong" its:withinText="nested">Treble Cut</em> + +

Removes high frequencies from the Reverberation.

+
+
+
+ References + + +

+ Wikipedia Reverberation +

+
+ +

+ Calf Reverb +

+
+
+
+
diff --git a/help/C/rnnoise.page b/help/C/rnnoise.page new file mode 100644 index 0000000..0cd27e1 --- /dev/null +++ b/help/C/rnnoise.page @@ -0,0 +1,31 @@ + + + + + + Noise Reduction +

The Noise Reduction is a process aimed to attenuate the disturbing noise from a signal.

+

EasyEffects Noise Reduction is made on the RNNoise library which is based based on recurrent neural network, a class of artificial neural networks where connections between nodes form a directed graph along a temporal sequence. This allows it to exhibit temporal dynamic behavior.

+

Standard RNNoise Model is used and custom models can be imported to perform different types of noise reduction.

+
+ References + + +

+ Wikipedia Noise Reduction +

+
+ +

+ Wikipedia Recurrent Neural Network +

+
+ +

+ Jean-Marc Valin - RNNoise: Learning Noise Suppression +

+
+
+
+
diff --git a/help/C/saturated.page b/help/C/saturated.page new file mode 100644 index 0000000..e47e0e1 --- /dev/null +++ b/help/C/saturated.page @@ -0,0 +1,9 @@ + + + + + + Saturation Warning +

If the audio signal coming out from the pipeline is too high, very unpleasant noises can be produced. In case this happens a warning icon is shown near the output level meter in the bottom bar so that the user can reduce the audio level using the Limiter or the Maximizer plugin.

+
diff --git a/help/C/settingsmenu.page b/help/C/settingsmenu.page new file mode 100644 index 0000000..7a6ffb6 --- /dev/null +++ b/help/C/settingsmenu.page @@ -0,0 +1,8 @@ + + + + + + Settings Menu + diff --git a/help/C/spectrum.page b/help/C/spectrum.page new file mode 100644 index 0000000..f558993 --- /dev/null +++ b/help/C/spectrum.page @@ -0,0 +1,77 @@ + + + + + + Spectrum + + + + <em style="strong" its:withinText="nested">Enabled</em> + +

Show or hide the Spectrum.

+
+ + + <em style="strong" its:withinText="nested">Shape</em> + +

Choose the style of the animation.

+
+ + + <em style="strong" its:withinText="nested">Points</em> + +

Number of points/bars on the x axis.

+
+ + + <em style="strong" its:withinText="nested">Height</em> + +

Changes the height of the Spectrum.

+
+ + + <em style="strong" its:withinText="nested">Line Width</em> + +

The width of a single bar.

+
+ + + <em style="strong" its:withinText="nested">Fill</em> + +

Draw filled bars.

+
+ + + <em style="strong" its:withinText="nested">Show Bars Border</em> + +

Draw bars with borders.

+
+ + + <em style="strong" its:withinText="nested">Rounded Corners</em> + +

Draw bars with rounded corners.

+
+ + + <em style="strong" its:withinText="nested">Color</em> + +

Choose the color of the Spectrum components. +

+
+ + + <em style="strong" its:withinText="nested">Minimum Frequency Range</em> + +

Lower end frequency of the Spectrum.

+
+ + + <em style="strong" its:withinText="nested">Maximum Frequency Range</em> + +

Upper end frequency of the Spectrum.

+
+
+
diff --git a/help/C/stereotools.page b/help/C/stereotools.page new file mode 100644 index 0000000..6991ef2 --- /dev/null +++ b/help/C/stereotools.page @@ -0,0 +1,130 @@ + + + + + + Stereo Tools +

EasyEffects uses the Stereo Tools developed by Calf Studio Gear which provides some handy utilities to manage Stereo streams handling Left and Right channels in conjunction with Mid and Side signals.

+

Mid/Side is a recording technique which registers Mid and Side signals rather then plain Left and Right channels. Its basic setup makes use of one cardioid microphone (Mid) and one bidirectional (figure-eight) microphone (Sides). In mastering stage Mid and Side can be used to shape the balance of the Stereo image having more control over the mix to get a wider, deeper, and more focused track.

+

Having a Stereo stream, Mid is obtained summing both channels (L+R) while Side is the result of the difference between Left and Right (L-R). Mid and Side signals can be decoded back to Left (M+S)/2 and Right (M-S)/2.

+
+ Input + + + + <em style="strong" its:withinText="nested">Balance</em> + +

Sets the balance between both channels.

+
+ + + <em style="strong" its:withinText="nested">Softclip (button)</em> + +

Makes a kind of analog distortion instead of harsh digital 0 dB clipping.

+
+ + + <em style="strong" its:withinText="nested">Softclip (value)</em> + +

Level of Softclip.

+
+
+
+
+ Stereo Matrix + + + + <em style="strong" its:withinText="nested">Mode</em> + +

Allows to choose between different channel configurations such as normal Stereo Mode, Mid-Side or Mono simulation.

+
+ + + <em style="strong" its:withinText="nested">Mute L/R</em> + +

Mutes the Left/Right channel.

+
+ + + <em style="strong" its:withinText="nested">Invert Phase L/R</em> + +

Changes the Phase of the Left/Right channel.

+
+ + + <em style="strong" its:withinText="nested">Side Level</em> + +

The level of the Side signal.

+
+ + + <em style="strong" its:withinText="nested">Side Balance</em> + +

The balance of the Side signal.

+
+ + + <em style="strong" its:withinText="nested">Middle Level</em> + +

The level of the Middle signal.

+
+ + + <em style="strong" its:withinText="nested">Middle Panorama</em> + +

The position in the Panorama of the Middle signal.

+
+
+
+
+ Output + + + + <em style="strong" its:withinText="nested">Balance</em> + +

Sets the balance between both channels.

+
+ + + <em style="strong" its:withinText="nested">Delay L/R</em> + +

Delays the Left or the Right channel. Negative values delay the Left channel and positive values the Right channel.

+
+ + + <em style="strong" its:withinText="nested">Stereo Base</em> + +

Sets the Stereo Base of the content seamless between Mono and inverted channels.

+
+ + + <em style="strong" its:withinText="nested">Stereo Phase</em> + +

Set the Stereo Phase of the content.

+
+
+
+
+ References + + +

+ Wikipedia Stereophonic Sound +

+
+ +

+ Calf Stereo Tools +

+
+ +

+ Unlock Your Sound - Stereo, Mono, Mid, Side, Panning, and Imaging Explained +

+
+
+
+
diff --git a/help/C/testsignals.page b/help/C/testsignals.page new file mode 100644 index 0000000..ba5f272 --- /dev/null +++ b/help/C/testsignals.page @@ -0,0 +1,35 @@ + + + + + + Test Signal +

A specific signal can be used to test the frequency response of the speakers.

+ + + + <em style="strong" its:withinText="nested">Enable</em> + +

Enable or disable the test signal.

+
+ + + <em style="strong" its:withinText="nested">Channel</em> + +

Choose if apply the test signal to left or right channel only, or both.

+
+ + + <em style="strong" its:withinText="nested">Signal</em> + +

The type of the signal: sine wave or white noise.

+
+ + + <em style="strong" its:withinText="nested">Frequency</em> + +

The frequency of the sine wave.

+
+
+
diff --git a/help/C/userpresets.page b/help/C/userpresets.page new file mode 100644 index 0000000..318152e --- /dev/null +++ b/help/C/userpresets.page @@ -0,0 +1,10 @@ + + + + + + Creating and Importing User Presets +

The configuration of the selected effects in the plugins stack can be saved in Preset files and reused at the next login or on another system running EasyEffects. Just open the "Presets" menu, write a name and click on the add button. Presets can be imported also by clicking on the import button.

+

A specific Preset can be autoloaded when an input or output device is added to the system. Just open the PipeWire tab, click on "Presets Autoloading", select the desired Preset and the device to associate from the two comboboxes, then click the add button.

+
diff --git a/help/meson.build b/help/meson.build new file mode 100644 index 0000000..d3cd4e7 --- /dev/null +++ b/help/meson.build @@ -0,0 +1,48 @@ +itstool = find_program('itstool', required: true) + +if not itstool.found() + error('itstool not found.') +endif + +help_pages = [ + 'advancedinfo.page', + 'autogain.page', + 'bassenhancer.page', + 'bassloudness.page', + 'blocklist.page', + 'compressor.page', + 'convolver.page', + 'crossfeed.page', + 'crystalizer.page', + 'deesser.page', + 'delay.page', + 'echocanceller.page', + 'effectsorder.page', + 'enableapp.page', + 'equalizer.page', + 'exciter.page', + 'filter.page', + 'gate.page', + 'general.page', + 'guide_1.page', + 'index.page', + 'limiter.page', + 'loudness.page', + 'maximizer.page', + 'multibandcompressor.page', + 'multibandgate.page', + 'pipewire.page', + 'pitch.page', + 'reverb.page', + 'rnnoise.page', + 'saturated.page', + 'settingsmenu.page', + 'spectrum.page', + 'stereotools.page', + 'testsignals.page', + 'userpresets.page' +] + +gnome_mod.yelp(meson.project_name(), + sources: help_pages +) diff --git a/images/appdata-screenshot-01.png b/images/appdata-screenshot-01.png new file mode 100644 index 0000000..a25968f Binary files /dev/null and b/images/appdata-screenshot-01.png differ diff --git a/images/appdata-screenshot-02.png b/images/appdata-screenshot-02.png new file mode 100644 index 0000000..69180e1 Binary files /dev/null and b/images/appdata-screenshot-02.png differ diff --git a/images/appdata-screenshot-03.png b/images/appdata-screenshot-03.png new file mode 100644 index 0000000..f2fd672 Binary files /dev/null and b/images/appdata-screenshot-03.png differ diff --git a/images/appdata-screenshot-04.png b/images/appdata-screenshot-04.png new file mode 100644 index 0000000..caba199 Binary files /dev/null and b/images/appdata-screenshot-04.png differ diff --git a/images/appdata-screenshot-05.png b/images/appdata-screenshot-05.png new file mode 100644 index 0000000..4c0311a Binary files /dev/null and b/images/appdata-screenshot-05.png differ diff --git a/images/convolver.png b/images/convolver.png new file mode 100644 index 0000000..9ea28f2 Binary files /dev/null and b/images/convolver.png differ diff --git a/images/easyeffects-dark-screenshot-1.png b/images/easyeffects-dark-screenshot-1.png new file mode 100644 index 0000000..de32de6 Binary files /dev/null and b/images/easyeffects-dark-screenshot-1.png differ diff --git a/images/easyeffects-dark-screenshot-2.png b/images/easyeffects-dark-screenshot-2.png new file mode 100644 index 0000000..6710eed Binary files /dev/null and b/images/easyeffects-dark-screenshot-2.png differ diff --git a/images/easyeffects-dark-screenshot-3.png b/images/easyeffects-dark-screenshot-3.png new file mode 100644 index 0000000..083c1e6 Binary files /dev/null and b/images/easyeffects-dark-screenshot-3.png differ diff --git a/images/easyeffects-light-screenshot-1.png b/images/easyeffects-light-screenshot-1.png new file mode 100644 index 0000000..acfb2f6 Binary files /dev/null and b/images/easyeffects-light-screenshot-1.png differ diff --git a/images/easyeffects-light-screenshot-2.png b/images/easyeffects-light-screenshot-2.png new file mode 100644 index 0000000..42ba570 Binary files /dev/null and b/images/easyeffects-light-screenshot-2.png differ diff --git a/images/easyeffects-light-screenshot-3.png b/images/easyeffects-light-screenshot-3.png new file mode 100644 index 0000000..0b0eca6 Binary files /dev/null and b/images/easyeffects-light-screenshot-3.png differ diff --git a/images/easyeffects_players.png b/images/easyeffects_players.png new file mode 100644 index 0000000..fbcc3e2 Binary files /dev/null and b/images/easyeffects_players.png differ diff --git a/images/easyeffects_plugins.png b/images/easyeffects_plugins.png new file mode 100644 index 0000000..bee1cdd Binary files /dev/null and b/images/easyeffects_plugins.png differ diff --git a/images/master_screenshot_test.png b/images/master_screenshot_test.png new file mode 100644 index 0000000..a658b6c Binary files /dev/null and b/images/master_screenshot_test.png differ diff --git a/include/app_info.hpp b/include/app_info.hpp new file mode 100644 index 0000000..1c634fb --- /dev/null +++ b/include/app_info.hpp @@ -0,0 +1,48 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "application.hpp" +#include "node_info_holder.hpp" +#include "tags_resources.hpp" + +namespace ui::app_info { + +G_BEGIN_DECLS + +#define EE_TYPE_APP_INFO (app_info_get_type()) + +G_DECLARE_FINAL_TYPE(AppInfo, app_info, EE, APP_INFO, GtkBox) + +G_END_DECLS + +auto create() -> AppInfo*; + +void setup(AppInfo* self, + app::Application* application, + GSettings* settings, + GtkIconTheme* icon_theme, + std::unordered_map& enabled_app_list); + +void update(AppInfo* self, const NodeInfo node_info); + +} // namespace ui::app_info \ No newline at end of file diff --git a/include/application.hpp b/include/application.hpp new file mode 100644 index 0000000..b03e2cf --- /dev/null +++ b/include/application.hpp @@ -0,0 +1,68 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include "config.h" +#include "pipe_manager.hpp" +#include "preferences_window.hpp" +#include "presets_manager.hpp" +#include "stream_input_effects.hpp" +#include "stream_output_effects.hpp" + +namespace app { + +G_BEGIN_DECLS + +#define EE_TYPE_APPLICATION (application_get_type()) + +G_DECLARE_FINAL_TYPE(Application, application, EE, APP, AdwApplication) + +G_END_DECLS + +struct Data { + public: + std::vector connections; + + std::vector gconnections, gconnections_sie, gconnections_soe; +}; + +struct _Application { + AdwApplication parent_instance; + + GSettings* settings; + GSettings* soe_settings; + GSettings* sie_settings; + + PipeManager* pm; + StreamOutputEffects* soe; + StreamInputEffects* sie; + PresetsManager* presets_manager; + + Data* data; +}; + +auto application_new() -> GApplication*; + +void hide_all_windows(GApplication* app); + +} // namespace app diff --git a/include/application_ui.hpp b/include/application_ui.hpp new file mode 100644 index 0000000..d2e7c81 --- /dev/null +++ b/include/application_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_box.hpp" +#include "pipe_manager_box.hpp" +#include "presets_menu.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::application_window { + +G_BEGIN_DECLS + +#define EE_TYPE_APPLICATION_WINDOW (application_window_get_type()) + +G_DECLARE_FINAL_TYPE(ApplicationWindow, application_window, EE, APP_WINDOW, AdwApplicationWindow) + +G_END_DECLS + +auto create(GApplication* gapp) -> ApplicationWindow*; + +} // namespace ui::application_window diff --git a/include/apps_box.hpp b/include/apps_box.hpp new file mode 100644 index 0000000..aa5cfa4 --- /dev/null +++ b/include/apps_box.hpp @@ -0,0 +1,46 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include "app_info.hpp" +#include "application.hpp" +#include "pipeline_type.hpp" +#include "tags_plugin_name.hpp" + +namespace ui::apps_box { + +G_BEGIN_DECLS + +#define EE_TYPE_APPS_BOX (apps_box_get_type()) + +G_DECLARE_FINAL_TYPE(AppsBox, apps_box, EE, APPS_BOX, GtkBox) + +G_END_DECLS + +auto create() -> AppsBox*; + +void setup(AppsBox* self, app::Application* application, PipelineType pipeline_type, GtkIconTheme* icon_theme); + +} // namespace ui::apps_box \ No newline at end of file diff --git a/include/autogain.hpp b/include/autogain.hpp new file mode 100644 index 0000000..d2b3752 --- /dev/null +++ b/include/autogain.hpp @@ -0,0 +1,93 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "plugin_base.hpp" + +class AutoGain : public PluginBase { + public: + AutoGain(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + AutoGain(const AutoGain&) = delete; + auto operator=(const AutoGain&) -> AutoGain& = delete; + AutoGain(const AutoGain&&) = delete; + auto operator=(const AutoGain&&) -> AutoGain& = delete; + ~AutoGain() override; + + enum class Reference { + momentary, + shortterm, + integrated, + geometric_mean_msi, + geometric_mean_ms, + geometric_mean_mi, + geometric_mean_si + }; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + sigc::signal + results; // range + + double momentary = 0.0; + double shortterm = 0.0; + double global = 0.0; + double relative = 0.0; + double range = 0.0; + double loudness = 0.0; + + private: + bool ebur128_ready = false; + + uint old_rate = 0U; + + double target = -23.0; // target loudness level + double internal_output_gain = 1.0; + + Reference reference = Reference::geometric_mean_msi; + + std::vector data; + + ebur128_state* ebur_state = nullptr; + + std::vector mythreads; + + auto init_ebur128() -> bool; + + static auto parse_reference_key(const std::string& key) -> Reference; + + void set_maximum_history(const int& seconds); +}; diff --git a/include/autogain_preset.hpp b/include/autogain_preset.hpp new file mode 100644 index 0000000..132aa5d --- /dev/null +++ b/include/autogain_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class AutoGainPreset : public PluginPresetBase { + public: + AutoGainPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/autogain_ui.hpp b/include/autogain_ui.hpp new file mode 100644 index 0000000..2ee0201 --- /dev/null +++ b/include/autogain_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::autogain_box { + +G_BEGIN_DECLS + +#define EE_TYPE_AUTOGAIN_BOX (autogain_box_get_type()) + +G_DECLARE_FINAL_TYPE(AutogainBox, autogain_box, EE, AUTOGAIN_BOX, GtkBox) + +G_END_DECLS + +auto create() -> AutogainBox*; + +void setup(AutogainBox* self, std::shared_ptr autogain, const std::string& schema_path); + +} // namespace ui::autogain_box diff --git a/include/bass_enhancer.hpp b/include/bass_enhancer.hpp new file mode 100644 index 0000000..e4f571d --- /dev/null +++ b/include/bass_enhancer.hpp @@ -0,0 +1,52 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class BassEnhancer : public PluginBase { + public: + BassEnhancer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + BassEnhancer(const BassEnhancer&) = delete; + auto operator=(const BassEnhancer&) -> BassEnhancer& = delete; + BassEnhancer(const BassEnhancer&&) = delete; + auto operator=(const BassEnhancer&&) -> BassEnhancer& = delete; + ~BassEnhancer() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + sigc::signal harmonics; + + double harmonics_port_value = 0.0; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/bass_enhancer_preset.hpp b/include/bass_enhancer_preset.hpp new file mode 100644 index 0000000..135430c --- /dev/null +++ b/include/bass_enhancer_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class BassEnhancerPreset : public PluginPresetBase { + public: + BassEnhancerPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/bass_enhancer_ui.hpp b/include/bass_enhancer_ui.hpp new file mode 100644 index 0000000..33e8f98 --- /dev/null +++ b/include/bass_enhancer_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::bass_enhancer_box { + +G_BEGIN_DECLS + +#define EE_TYPE_BASS_ENHANCER_BOX (bass_enhancer_box_get_type()) + +G_DECLARE_FINAL_TYPE(BassEnhancerBox, bass_enhancer_box, EE, BASS_ENHANCER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> BassEnhancerBox*; + +void setup(BassEnhancerBox* self, std::shared_ptr bass_enhancer, const std::string& schema_path); + +} // namespace ui::bass_enhancer_box diff --git a/include/bass_loudness.hpp b/include/bass_loudness.hpp new file mode 100644 index 0000000..16889f6 --- /dev/null +++ b/include/bass_loudness.hpp @@ -0,0 +1,48 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class BassLoudness : public PluginBase { + public: + BassLoudness(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + BassLoudness(const BassLoudness&) = delete; + auto operator=(const BassLoudness&) -> BassLoudness& = delete; + BassLoudness(const BassLoudness&&) = delete; + auto operator=(const BassLoudness&&) -> BassLoudness& = delete; + ~BassLoudness() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/bass_loudness_preset.hpp b/include/bass_loudness_preset.hpp new file mode 100644 index 0000000..ae242f0 --- /dev/null +++ b/include/bass_loudness_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class BassLoudnessPreset : public PluginPresetBase { + public: + BassLoudnessPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/bass_loudness_ui.hpp b/include/bass_loudness_ui.hpp new file mode 100644 index 0000000..d72a9fe --- /dev/null +++ b/include/bass_loudness_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::bass_loudness_box { + +G_BEGIN_DECLS + +#define EE_TYPE_BASS_LOUDNESS_BOX (bass_loudness_box_get_type()) + +G_DECLARE_FINAL_TYPE(BassLoudnessBox, bass_loudness_box, EE, BASS_LOUDNESS_BOX, GtkBox) + +G_END_DECLS + +auto create() -> BassLoudnessBox*; + +void setup(BassLoudnessBox* self, std::shared_ptr bass_loudness, const std::string& schema_path); + +} // namespace ui::bass_loudness_box diff --git a/include/blocklist_menu.hpp b/include/blocklist_menu.hpp new file mode 100644 index 0000000..b78942e --- /dev/null +++ b/include/blocklist_menu.hpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "application.hpp" +#include "pipeline_type.hpp" +#include "tags_resources.hpp" + +namespace ui::blocklist_menu { + +G_BEGIN_DECLS + +#define EE_TYPE_BLOCKLIST_MENU (blocklist_menu_get_type()) + +G_DECLARE_FINAL_TYPE(BlocklistMenu, blocklist_menu, EE, BLOCKLIST_MENU, GtkPopover) + +G_END_DECLS + +auto create() -> BlocklistMenu*; + +void setup(BlocklistMenu* self, app::Application* application, PipelineType pipeline_type); + +} // namespace ui::blocklist_menu diff --git a/include/chart.hpp b/include/chart.hpp new file mode 100644 index 0000000..e930d99 --- /dev/null +++ b/include/chart.hpp @@ -0,0 +1,85 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include "tags_app.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" +#include "util.hpp" + +namespace ui::chart { + +G_BEGIN_DECLS + +#define EE_TYPE_CHART (chart_get_type()) + +G_DECLARE_FINAL_TYPE(Chart, chart, EE, CHART, GtkWidget) + +G_END_DECLS + +enum class ChartType { bar, line, dots }; + +enum class ChartScale { linear, logarithmic }; + +void set_chart_type(Chart* self, const ChartType& value); + +void set_chart_scale(Chart* self, const ChartScale& value); + +void set_x_data(Chart* self, const std::vector& x); + +void set_y_data(Chart* self, const std::vector& y); + +void set_background_color(Chart* self, GdkRGBA color); + +void set_color(Chart* self, GdkRGBA color); + +void set_axis_labels_color(Chart* self, GdkRGBA color); + +void set_line_width(Chart* self, const double& value); + +void set_draw_bar_border(Chart* self, const bool& v); + +void set_rounded_corners(Chart* self, const bool& v); + +void set_fill_bars(Chart* self, const bool& v); + +void set_n_x_decimals(Chart* self, const int& v); + +void set_n_y_decimals(Chart* self, const int& v); + +void set_x_unit(Chart* self, const std::string& value); + +void set_y_unit(Chart* self, const std::string& value); + +void set_margin(Chart* self, const double& v); + +auto get_is_visible(Chart* self) -> bool; + +auto create() -> Chart*; + +} // namespace ui::chart diff --git a/include/client_info_holder.hpp b/include/client_info_holder.hpp new file mode 100644 index 0000000..368ecb7 --- /dev/null +++ b/include/client_info_holder.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "pipe_manager.hpp" + +namespace ui::holders { + +G_BEGIN_DECLS + +#define EE_TYPE_CLIENT_INFO_HOLDER (client_info_holder_get_type()) + +G_DECLARE_FINAL_TYPE(ClientInfoHolder, client_info_holder, EE, CLIENT_INFO_HOLDER, GObject) + +G_END_DECLS + +struct _ClientInfoHolder { + GObject parent_instance; + + ClientInfo* info; + + sigc::signal info_updated; +}; + +auto create(const ClientInfo& info) -> ClientInfoHolder*; + +} // namespace ui::holders \ No newline at end of file diff --git a/include/compressor.hpp b/include/compressor.hpp new file mode 100644 index 0000000..f87a00c --- /dev/null +++ b/include/compressor.hpp @@ -0,0 +1,66 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Compressor : public PluginBase { + public: + Compressor(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + Compressor(const Compressor&) = delete; + auto operator=(const Compressor&) -> Compressor& = delete; + Compressor(const Compressor&&) = delete; + auto operator=(const Compressor&&) -> Compressor& = delete; + ~Compressor() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) override; + + auto get_latency_seconds() -> float override; + + void update_probe_links() override; + + sigc::signal reduction, sidechain, curve, envelope, latency; + + float reduction_port_value = 0.0F; + float sidechain_port_value = 0.0F; + float curve_port_value = 0.0F; + float envelope_port_value = 0.0F; + float latency_port_value = 0.0F; + + private: + uint latency_n_frames = 0U; + + std::unique_ptr lv2_wrapper; + + std::vector list_proxies; + + void update_sidechain_links(const std::string& key); +}; diff --git a/include/compressor_preset.hpp b/include/compressor_preset.hpp new file mode 100644 index 0000000..ace2152 --- /dev/null +++ b/include/compressor_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class CompressorPreset : public PluginPresetBase { + public: + CompressorPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/compressor_ui.hpp b/include/compressor_ui.hpp new file mode 100644 index 0000000..d7a3576 --- /dev/null +++ b/include/compressor_ui.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "node_info_holder.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::compressor_box { + +G_BEGIN_DECLS + +#define EE_TYPE_COMPRESSOR_BOX (compressor_box_get_type()) + +G_DECLARE_FINAL_TYPE(CompressorBox, compressor_box, EE, COMPRESSOR_BOX, GtkBox) + +G_END_DECLS + +auto create() -> CompressorBox*; + +void setup(CompressorBox* self, + std::shared_ptr compressor, + const std::string& schema_path, + PipeManager* pm); + +} // namespace ui::compressor_box diff --git a/include/convolver.hpp b/include/convolver.hpp new file mode 100644 index 0000000..1a59d71 --- /dev/null +++ b/include/convolver.hpp @@ -0,0 +1,111 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include "plugin_base.hpp" +#include "resampler.hpp" + +class Convolver : public PluginBase { + public: + Convolver(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + Convolver(const Convolver&) = delete; + auto operator=(const Convolver&) -> Convolver& = delete; + Convolver(const Convolver&&) = delete; + auto operator=(const Convolver&&) -> Convolver& = delete; + ~Convolver() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + bool do_autogain = false; + + private: + bool kernel_is_initialized = false; + bool n_samples_is_power_of_2 = true; + bool zita_ready = false; + bool ready = false; + bool notify_latency = false; + + uint blocksize = 512U; + uint ir_width = 100U; + uint latency_n_frames = 0U; + + float latency_value = 0.0F; + + std::vector kernel_L, kernel_R; + std::vector original_kernel_L, original_kernel_R; + std::vector data_L, data_R; + + std::deque deque_out_L, deque_out_R; + + Convproc* conv = nullptr; + + std::vector mythreads; + + void read_kernel_file(); + + void apply_kernel_autogain(); + + void set_kernel_stereo_width(); + + void setup_zita(); + + auto get_zita_buffer_size() -> uint; + + void prepare_kernel(); + + template + void do_convolution(T1& data_left, T1& data_right) { + std::span conv_left_in{conv->inpdata(0), conv->inpdata(0) + get_zita_buffer_size()}; + std::span conv_right_in{conv->inpdata(1), conv->inpdata(1) + get_zita_buffer_size()}; + + std::span conv_left_out{conv->outdata(0), conv->outdata(0) + get_zita_buffer_size()}; + std::span conv_right_out{conv->outdata(1), conv->outdata(1) + get_zita_buffer_size()}; + + std::copy(data_left.begin(), data_left.end(), conv_left_in.begin()); + std::copy(data_right.begin(), data_right.end(), conv_right_in.begin()); + + if (zita_ready) { + const int& ret = conv->process(true); // thread sync mode set to true + + if (ret != 0) { + util::debug(log_tag + "IR: process failed: " + util::to_string(ret, "")); + + zita_ready = false; + } else { + std::copy(conv_left_out.begin(), conv_left_out.end(), data_left.begin()); + std::copy(conv_right_out.begin(), conv_right_out.end(), data_right.begin()); + } + } + } +}; diff --git a/include/convolver_menu_combine.hpp b/include/convolver_menu_combine.hpp new file mode 100644 index 0000000..c395ca1 --- /dev/null +++ b/include/convolver_menu_combine.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "convolver_ui_common.hpp" +#include "resampler.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::convolver_menu_combine { + +G_BEGIN_DECLS + +#define EE_TYPE_CONVOLVER_MENU_COMBINE (convolver_menu_combine_get_type()) + +G_DECLARE_FINAL_TYPE(ConvolverMenuCombine, convolver_menu_combine, EE, CONVOLVER_MENU_COMBINE, GtkPopover) + +G_END_DECLS + +auto create() -> ConvolverMenuCombine*; + +void append_to_string_list(ConvolverMenuCombine* self, const std::string& irs_filename); + +void remove_from_string_list(ConvolverMenuCombine* self, const std::string& irs_filename); + +} // namespace ui::convolver_menu_combine diff --git a/include/convolver_menu_impulses.hpp b/include/convolver_menu_impulses.hpp new file mode 100644 index 0000000..0c4d720 --- /dev/null +++ b/include/convolver_menu_impulses.hpp @@ -0,0 +1,46 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include "application.hpp" +#include "ui_helpers.hpp" + +namespace ui::convolver_menu_impulses { + +G_BEGIN_DECLS + +#define EE_TYPE_CONVOLVER_MENU_IMPULSES (convolver_menu_impulses_get_type()) + +G_DECLARE_FINAL_TYPE(ConvolverMenuImpulses, convolver_menu_impulses, EE, CONVOLVER_MENU_IMPULSES, GtkPopover) + +G_END_DECLS + +auto create() -> ConvolverMenuImpulses*; + +void setup(ConvolverMenuImpulses* self, const std::string& schema_path, app::Application* application); + +void append_to_string_list(ConvolverMenuImpulses* self, const std::string& irs_filename); + +void remove_from_string_list(ConvolverMenuImpulses* self, const std::string& irs_filename); + +} // namespace ui::convolver_menu_impulses diff --git a/include/convolver_preset.hpp b/include/convolver_preset.hpp new file mode 100644 index 0000000..aad2aa7 --- /dev/null +++ b/include/convolver_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class ConvolverPreset : public PluginPresetBase { + public: + ConvolverPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/convolver_ui.hpp b/include/convolver_ui.hpp new file mode 100644 index 0000000..0d31372 --- /dev/null +++ b/include/convolver_ui.hpp @@ -0,0 +1,53 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include "application.hpp" +#include "chart.hpp" +#include "convolver_menu_combine.hpp" +#include "convolver_menu_impulses.hpp" +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::convolver_box { + +G_BEGIN_DECLS + +#define EE_TYPE_CONVOLVER_BOX (convolver_box_get_type()) + +G_DECLARE_FINAL_TYPE(ConvolverBox, convolver_box, EE, CONVOLVER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> ConvolverBox*; + +void setup(ConvolverBox* self, + std::shared_ptr convolver, + const std::string& schema_path, + app::Application* application); + +} // namespace ui::convolver_box diff --git a/include/convolver_ui_common.hpp b/include/convolver_ui_common.hpp new file mode 100644 index 0000000..0b17c2f --- /dev/null +++ b/include/convolver_ui_common.hpp @@ -0,0 +1,31 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "util.hpp" + +namespace ui::convolver { + +auto read_kernel(std::filesystem::path irs_dir, const std::string& irs_ext, const std::string& file_name) + -> std::tuple, std::vector>; + +} \ No newline at end of file diff --git a/include/crossfeed.hpp b/include/crossfeed.hpp new file mode 100644 index 0000000..ae4fddf --- /dev/null +++ b/include/crossfeed.hpp @@ -0,0 +1,50 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "plugin_base.hpp" + +class Crossfeed : public PluginBase { + public: + Crossfeed(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + Crossfeed(const Crossfeed&) = delete; + auto operator=(const Crossfeed&) -> Crossfeed& = delete; + Crossfeed(const Crossfeed&&) = delete; + auto operator=(const Crossfeed&&) -> Crossfeed& = delete; + ~Crossfeed() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + private: + std::vector data; + + bs2b_base bs2b; +}; diff --git a/include/crossfeed_preset.hpp b/include/crossfeed_preset.hpp new file mode 100644 index 0000000..3fedde5 --- /dev/null +++ b/include/crossfeed_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class CrossfeedPreset : public PluginPresetBase { + public: + CrossfeedPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/crossfeed_ui.hpp b/include/crossfeed_ui.hpp new file mode 100644 index 0000000..076710f --- /dev/null +++ b/include/crossfeed_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::crossfeed_box { + +G_BEGIN_DECLS + +#define EE_TYPE_CROSSFEED_BOX (crossfeed_box_get_type()) + +G_DECLARE_FINAL_TYPE(CrossfeedBox, crossfeed_box, EE, CROSSFEED_BOX, GtkBox) + +G_END_DECLS + +auto create() -> CrossfeedBox*; + +void setup(CrossfeedBox* self, std::shared_ptr crossfeed, const std::string& schema_path); + +} // namespace ui::crossfeed_box diff --git a/include/crystalizer.hpp b/include/crystalizer.hpp new file mode 100644 index 0000000..9480dff --- /dev/null +++ b/include/crystalizer.hpp @@ -0,0 +1,214 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "fir_filter_bandpass.hpp" +#include "fir_filter_highpass.hpp" +#include "fir_filter_lowpass.hpp" +#include "plugin_base.hpp" + +class Crystalizer : public PluginBase { + public: + Crystalizer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + Crystalizer(const Crystalizer&) = delete; + auto operator=(const Crystalizer&) -> Crystalizer& = delete; + Crystalizer(const Crystalizer&&) = delete; + auto operator=(const Crystalizer&&) -> Crystalizer& = delete; + ~Crystalizer() override; + + auto get_latency() const -> float; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + private: + bool n_samples_is_power_of_2 = true; + bool filters_are_ready = false; + bool notify_latency = false; + bool do_first_rotation = true; + + uint blocksize = 512U; + uint latency_n_frames = 0U; + + float latency_value = 0.0F; + + static constexpr uint nbands = 13U; + + std::vector data_L; + std::vector data_R; + + std::array band_mute; + std::array band_bypass; + + std::array frequencies; + std::array band_intensity; + std::array band_last_L; + std::array band_last_R; + std::array band_next_L; + std::array band_next_R; + + std::array, nbands> band_data_L; + std::array, nbands> band_data_R; + std::array, nbands> band_gain; + std::array, nbands> band_second_derivative_L; + std::array, nbands> band_second_derivative_R; + + std::array, nbands> filters; + + std::deque deque_out_L, deque_out_R; + + void bind_band(const int& n); + + template + void enhance_peaks(T1& data_left, T1& data_right) { + for (uint n = 0U; n < nbands; n++) { + std::copy(data_left.begin(), data_left.end(), band_data_L.at(n).begin()); + std::copy(data_right.begin(), data_right.end(), band_data_R.at(n).begin()); + + filters.at(n)->process(band_data_L.at(n), band_data_R.at(n)); + + /* + Later we will need to calculate the second derivative of each band. This + is done through the central difference method. In order to calculate + the derivative at the last elements of the array we have to know the first + element of the next buffer. As we do not have this information the only + way to do this calculation is delaying the signal by 1 sample. + */ + + // last (R,L) becomes the first + + std::rotate(band_data_L.at(n).rbegin(), band_data_L.at(n).rbegin() + 1, band_data_L.at(n).rend()); + std::rotate(band_data_R.at(n).rbegin(), band_data_R.at(n).rbegin() + 1, band_data_R.at(n).rend()); + + if (do_first_rotation) { + /* + band_data was rotated. Its first values are the last ones from the original array. we have to save them for + the next round. + */ + + band_next_L.at(n) = band_data_L.at(n)[0]; + band_next_R.at(n) = band_data_R.at(n)[0]; + + band_last_L.at(n) = 0.0F; + band_last_R.at(n) = 0.0F; + + band_data_L.at(n)[0] = 0.0F; + band_data_R.at(n)[0] = 0.0F; + + do_first_rotation = false; + } else { + /* + band_data was rotated. Its first values are the last ones from the original array. we have to save them for + the next round. + */ + + const float L = band_data_L.at(n)[0]; + const float R = band_data_R.at(n)[0]; + + band_data_L.at(n)[0] = band_next_L.at(n); + band_data_R.at(n)[0] = band_next_R.at(n); + + band_next_L.at(n) = L; + band_next_R.at(n) = R; + } + } + + for (uint n = 0U; n < nbands; n++) { + // Calculating the second derivative + + if (!band_bypass.at(n)) { + for (uint m = 0U; m < blocksize; m++) { + const float L = band_data_L.at(n)[m]; + const float R = band_data_R.at(n)[m]; + + if (m > 0 && m < blocksize - 1) { + const float& L_lower = band_data_L.at(n)[m - 1U]; + const float& R_lower = band_data_R.at(n)[m - 1U]; + const float& L_upper = band_data_L.at(n)[m + 1U]; + const float& R_upper = band_data_R.at(n)[m + 1U]; + + band_second_derivative_L.at(n)[m] = L_upper - 2.0F * L + L_lower; + band_second_derivative_R.at(n)[m] = R_upper - 2.0F * R + R_lower; + } else if (m == 0U) { + const float& L_lower = band_last_L.at(n); + const float& R_lower = band_last_R.at(n); + const float& L_upper = band_data_L.at(n)[m + 1]; + const float& R_upper = band_data_R.at(n)[m + 1]; + + band_second_derivative_L.at(n)[m] = L_upper - 2.0F * L + L_lower; + band_second_derivative_R.at(n)[m] = R_upper - 2.0F * R + R_lower; + } else if (m == blocksize - 1) { + const float& L_upper = band_next_L.at(n); + const float& R_upper = band_next_R.at(n); + const float& L_lower = band_data_L.at(n)[m - 1U]; + const float& R_lower = band_data_R.at(n)[m - 1U]; + + band_second_derivative_L.at(n)[m] = L_upper - 2.0F * L + L_lower; + band_second_derivative_R.at(n)[m] = R_upper - 2.0F * R + R_lower; + } + } + + // peak enhancing using second derivative + + for (uint m = 0U; m < blocksize; m++) { + const float L = band_data_L.at(n)[m]; + const float R = band_data_R.at(n)[m]; + const float& d2L = band_second_derivative_L.at(n)[m]; + const float& d2R = band_second_derivative_R.at(n)[m]; + + band_data_L.at(n)[m] = L - band_intensity.at(n) * d2L; + band_data_R.at(n)[m] = R - band_intensity.at(n) * d2R; + + if (m == blocksize - 1U) { + band_last_L.at(n) = L; + band_last_R.at(n) = R; + } + } + } else { + band_last_L.at(n) = band_data_L.at(n)[blocksize - 1]; + band_last_R.at(n) = band_data_R.at(n)[blocksize - 1]; + } + } + + // add bands + + for (uint m = 0U; m < blocksize; m++) { + data_left[m] = 0.0F; + data_right[m] = 0.0F; + + for (uint n = 0; n < nbands; n++) { + if (!band_mute.at(n)) { + data_left[m] += band_data_L.at(n)[m]; + data_right[m] += band_data_R.at(n)[m]; + } + } + } + } +}; diff --git a/include/crystalizer_preset.hpp b/include/crystalizer_preset.hpp new file mode 100644 index 0000000..810a266 --- /dev/null +++ b/include/crystalizer_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class CrystalizerPreset : public PluginPresetBase { + public: + CrystalizerPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/crystalizer_ui.hpp b/include/crystalizer_ui.hpp new file mode 100644 index 0000000..48bc54e --- /dev/null +++ b/include/crystalizer_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::crystalizer_box { + +G_BEGIN_DECLS + +#define EE_TYPE_CRYSTALIZER_BOX (crystalizer_box_get_type()) + +G_DECLARE_FINAL_TYPE(CrystalizerBox, crystalizer_box, EE, CRYSTALIZER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> CrystalizerBox*; + +void setup(CrystalizerBox* self, std::shared_ptr crystalizer, const std::string& schema_path); + +} // namespace ui::crystalizer_box diff --git a/include/deesser.hpp b/include/deesser.hpp new file mode 100644 index 0000000..9d639e9 --- /dev/null +++ b/include/deesser.hpp @@ -0,0 +1,50 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Deesser : public PluginBase { + public: + Deesser(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Deesser(const Deesser&) = delete; + auto operator=(const Deesser&) -> Deesser& = delete; + Deesser(const Deesser&&) = delete; + auto operator=(const Deesser&&) -> Deesser& = delete; + ~Deesser() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + sigc::signal compression, detected; + + double compression_port_value = 0.0; + double detected_port_value = 0.0; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/deesser_preset.hpp b/include/deesser_preset.hpp new file mode 100644 index 0000000..75afe7d --- /dev/null +++ b/include/deesser_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class DeesserPreset : public PluginPresetBase { + public: + DeesserPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/deesser_ui.hpp b/include/deesser_ui.hpp new file mode 100644 index 0000000..7179281 --- /dev/null +++ b/include/deesser_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::deesser_box { + +G_BEGIN_DECLS + +#define EE_TYPE_DEESSER_BOX (deesser_box_get_type()) + +G_DECLARE_FINAL_TYPE(DeesserBox, deesser_box, EE, DEESSER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> DeesserBox*; + +void setup(DeesserBox* self, std::shared_ptr deesser, const std::string& schema_path); + +} // namespace ui::deesser_box diff --git a/include/delay.hpp b/include/delay.hpp new file mode 100644 index 0000000..8071fff --- /dev/null +++ b/include/delay.hpp @@ -0,0 +1,49 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Delay : public PluginBase { + public: + Delay(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Delay(const Delay&) = delete; + auto operator=(const Delay&) -> Delay& = delete; + Delay(const Delay&&) = delete; + auto operator=(const Delay&&) -> Delay& = delete; + ~Delay() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + float latency_port_value = 0.0F; + + private: + uint latency_n_frames = 0U; + + std::unique_ptr lv2_wrapper; +}; diff --git a/include/delay_preset.hpp b/include/delay_preset.hpp new file mode 100644 index 0000000..13d32c3 --- /dev/null +++ b/include/delay_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class DelayPreset : public PluginPresetBase { + public: + DelayPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/delay_ui.hpp b/include/delay_ui.hpp new file mode 100644 index 0000000..7c4b92c --- /dev/null +++ b/include/delay_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::delay_box { + +G_BEGIN_DECLS + +#define EE_TYPE_DELAY_BOX (delay_box_get_type()) + +G_DECLARE_FINAL_TYPE(DelayBox, delay_box, EE, DELAY_BOX, GtkBox) + +G_END_DECLS + +auto create() -> DelayBox*; + +void setup(DelayBox* self, std::shared_ptr delay, const std::string& schema_path); + +} // namespace ui::delay_box diff --git a/include/echo_canceller.hpp b/include/echo_canceller.hpp new file mode 100644 index 0000000..b6853c3 --- /dev/null +++ b/include/echo_canceller.hpp @@ -0,0 +1,75 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "plugin_base.hpp" + +class EchoCanceller : public PluginBase { + public: + EchoCanceller(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + EchoCanceller(const EchoCanceller&) = delete; + auto operator=(const EchoCanceller&) -> EchoCanceller& = delete; + EchoCanceller(const EchoCanceller&&) = delete; + auto operator=(const EchoCanceller&&) -> EchoCanceller& = delete; + ~EchoCanceller() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) override; + + auto get_latency_seconds() -> float override; + + private: + bool notify_latency = false; + bool ready = false; + + uint blocksize = 512U; + uint blocksize_ms = 20U; + uint filter_length_ms = 100U; + uint latency_n_frames = 0U; + + float latency_value = 0.0F; + + const float inv_short_max = 1.0F / (SHRT_MAX + 1); + + std::vector data_L; + std::vector data_R; + std::vector probe_L; + std::vector probe_R; + std::vector filtered_L; + std::vector filtered_R; + + std::deque deque_out_L, deque_out_R; + + SpeexEchoState* echo_state_L = nullptr; + SpeexEchoState* echo_state_R = nullptr; + + void init_speex(); +}; diff --git a/include/echo_canceller_preset.hpp b/include/echo_canceller_preset.hpp new file mode 100644 index 0000000..937996b --- /dev/null +++ b/include/echo_canceller_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class EchoCancellerPreset : public PluginPresetBase { + public: + EchoCancellerPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/echo_canceller_ui.hpp b/include/echo_canceller_ui.hpp new file mode 100644 index 0000000..98f8559 --- /dev/null +++ b/include/echo_canceller_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::echo_canceller_box { + +G_BEGIN_DECLS + +#define EE_TYPE_ECHO_CANCELLER_BOX (echo_canceller_box_get_type()) + +G_DECLARE_FINAL_TYPE(EchoCancellerBox, echo_canceller_box, EE, ECHO_CANCELLER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> EchoCancellerBox*; + +void setup(EchoCancellerBox* self, std::shared_ptr echo_canceller, const std::string& schema_path); + +} // namespace ui::echo_canceller_box diff --git a/include/effects_base.hpp b/include/effects_base.hpp new file mode 100644 index 0000000..7f240a4 --- /dev/null +++ b/include/effects_base.hpp @@ -0,0 +1,124 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "autogain.hpp" +#include "bass_enhancer.hpp" +#include "bass_loudness.hpp" +#include "compressor.hpp" +#include "convolver.hpp" +#include "crossfeed.hpp" +#include "crystalizer.hpp" +#include "deesser.hpp" +#include "delay.hpp" +#include "echo_canceller.hpp" +#include "equalizer.hpp" +#include "exciter.hpp" +#include "filter.hpp" +#include "gate.hpp" +#include "limiter.hpp" +#include "loudness.hpp" +#include "maximizer.hpp" +#include "multiband_compressor.hpp" +#include "multiband_gate.hpp" +#include "output_level.hpp" +#include "pipe_manager.hpp" +#include "pitch.hpp" +#include "reverb.hpp" +#include "rnnoise.hpp" +#include "spectrum.hpp" +#include "stereo_tools.hpp" +#include "tags_schema.hpp" + +class EffectsBase { + public: + EffectsBase(std::string tag, const std::string& schema, PipeManager* pipe_manager); + EffectsBase(const EffectsBase&) = delete; + auto operator=(const EffectsBase&) -> EffectsBase& = delete; + EffectsBase(const EffectsBase&&) = delete; + auto operator=(const EffectsBase&&) -> EffectsBase& = delete; + virtual ~EffectsBase(); + + const std::string log_tag; + + PipeManager* pm = nullptr; + + std::shared_ptr output_level; + std::shared_ptr spectrum; + + std::shared_ptr autogain; + std::shared_ptr bass_enhancer; + std::shared_ptr bass_loudness; + std::shared_ptr compressor; + std::shared_ptr convolver; + std::shared_ptr crossfeed; + std::shared_ptr crystalizer; + std::shared_ptr deesser; + std::shared_ptr delay; + std::shared_ptr echo_canceller; + std::shared_ptr equalizer; + std::shared_ptr exciter; + std::shared_ptr filter; + std::shared_ptr gate; + std::shared_ptr limiter; + std::shared_ptr loudness; + std::shared_ptr maximizer; + std::shared_ptr multiband_compressor; + std::shared_ptr multiband_gate; + std::shared_ptr pitch; + std::shared_ptr reverb; + std::shared_ptr rnnoise; + std::shared_ptr stereo_tools; + + auto get_pipeline_latency() -> float; + + void reset_settings(); + + sigc::signal pipeline_latency; + + template + auto get_plugin_instance(const std::string& name) -> std::shared_ptr { + return std::dynamic_pointer_cast(plugins[name]); + } + + protected: + GSettings *settings = nullptr, *global_settings = nullptr; + + std::string schema_base_path; + + std::map> plugins; + + std::vector list_proxies, list_proxies_listen_mic; + + std::vector connections; + + std::vector gconnections; + + void create_filters_if_necessary(); + + void remove_unused_filters(); + + void activate_filters(); + + void deactivate_filters(); + + void broadcast_pipeline_latency(); +}; diff --git a/include/effects_box.hpp b/include/effects_box.hpp new file mode 100644 index 0000000..346d790 --- /dev/null +++ b/include/effects_box.hpp @@ -0,0 +1,46 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "application.hpp" +#include "apps_box.hpp" +#include "blocklist_menu.hpp" +#include "chart.hpp" +#include "effects_base.hpp" +#include "pipeline_type.hpp" +#include "plugins_box.hpp" +#include "tags_resources.hpp" + +namespace ui::effects_box { + +G_BEGIN_DECLS + +#define EE_TYPE_EFFECTS_BOX (effects_box_get_type()) + +G_DECLARE_FINAL_TYPE(EffectsBox, effects_box, EE, EFFECTS_BOX, GtkBox) + +G_END_DECLS + +auto create() -> EffectsBox*; + +void setup(EffectsBox* self, app::Application* application, PipelineType pipeline_type, GtkIconTheme* icon_theme); + +} // namespace ui::effects_box \ No newline at end of file diff --git a/include/equalizer.hpp b/include/equalizer.hpp new file mode 100644 index 0000000..5dd97e8 --- /dev/null +++ b/include/equalizer.hpp @@ -0,0 +1,101 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects If not, see . + */ + +#pragma once + +#include +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" +#include "tags_equalizer.hpp" + +class Equalizer : public PluginBase { + public: + Equalizer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + const std::string& schema_channel, + const std::string& schema_channel_left_path, + const std::string& schema_channel_right_path, + PipeManager* pipe_manager); + Equalizer(const Equalizer&) = delete; + auto operator=(const Equalizer&) -> Equalizer& = delete; + Equalizer(const Equalizer&&) = delete; + auto operator=(const Equalizer&&) -> Equalizer& = delete; + ~Equalizer() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + float latency_port_value = 0.0F; + + private: + GSettings *settings_left = nullptr, *settings_right = nullptr; + + std::unique_ptr lv2_wrapper; + + static constexpr uint max_bands = 32U; + + uint latency_n_frames = 0U; + + std::vector gconnections_unified; + + template + constexpr void bind_band() { + using namespace tags::equalizer; + + lv2_wrapper->bind_key_enum(settings_left); + lv2_wrapper->bind_key_enum(settings_left); + lv2_wrapper->bind_key_enum(settings_left); + + lv2_wrapper->bind_key_bool(settings_left); + lv2_wrapper->bind_key_bool(settings_left); + + lv2_wrapper->bind_key_double(settings_left); + lv2_wrapper->bind_key_double(settings_left); + + lv2_wrapper->bind_key_double_db(settings_left); + + // right channel + + lv2_wrapper->bind_key_enum(settings_right); + lv2_wrapper->bind_key_enum(settings_right); + lv2_wrapper->bind_key_enum(settings_right); + + lv2_wrapper->bind_key_bool(settings_right); + lv2_wrapper->bind_key_bool(settings_right); + + lv2_wrapper->bind_key_double(settings_right); + lv2_wrapper->bind_key_double(settings_right); + + lv2_wrapper->bind_key_double_db(settings_right); + } + + template + constexpr void bind_bands(std::index_sequence) { + (bind_band(), ...); + } + + void on_split_channels(); +}; diff --git a/include/equalizer_band_box.hpp b/include/equalizer_band_box.hpp new file mode 100644 index 0000000..00c8a19 --- /dev/null +++ b/include/equalizer_band_box.hpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "tags_equalizer.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::equalizer_band_box { + +G_BEGIN_DECLS + +#define EE_TYPE_EQUALIZER_BAND_BOX (equalizer_band_box_get_type()) + +G_DECLARE_FINAL_TYPE(EqualizerBandBox, equalizer_band_box, EE, EQUALIZER_BAND_BOX, GtkBox) + +G_END_DECLS + +auto create() -> EqualizerBandBox*; + +void setup(EqualizerBandBox* self, GSettings* settings, int index); + +} // namespace ui::equalizer_band_box diff --git a/include/equalizer_preset.hpp b/include/equalizer_preset.hpp new file mode 100644 index 0000000..511f15e --- /dev/null +++ b/include/equalizer_preset.hpp @@ -0,0 +1,43 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" +#include "tags_equalizer.hpp" + +class EqualizerPreset : public PluginPresetBase { + public: + EqualizerPreset(); + ~EqualizerPreset(); + + private: + GSettings *input_settings_left = nullptr, *input_settings_right = nullptr, *output_settings_left = nullptr, + *output_settings_right = nullptr; + + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; + + static void save_channel(nlohmann::json& json, GSettings* settings, const int& nbands); + + void load_channel(const nlohmann::json& json, GSettings* settings, const int& nbands); + + void load_legacy_preset(); +}; diff --git a/include/equalizer_ui.hpp b/include/equalizer_ui.hpp new file mode 100644 index 0000000..91b082a --- /dev/null +++ b/include/equalizer_ui.hpp @@ -0,0 +1,48 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "application.hpp" +#include "effects_base.hpp" +#include "equalizer_band_box.hpp" +#include "tags_equalizer.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::equalizer_box { + +G_BEGIN_DECLS + +#define EE_TYPE_EQUALIZER_BOX (equalizer_box_get_type()) + +G_DECLARE_FINAL_TYPE(EqualizerBox, equalizer_box, EE, EQUALIZER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> EqualizerBox*; + +void setup(EqualizerBox* self, + std::shared_ptr equalizer, + const std::string& schema_path, + app::Application* application); + +} // namespace ui::equalizer_box diff --git a/include/exciter.hpp b/include/exciter.hpp new file mode 100644 index 0000000..6e77ed7 --- /dev/null +++ b/include/exciter.hpp @@ -0,0 +1,49 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Exciter : public PluginBase { + public: + Exciter(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Exciter(const Exciter&) = delete; + auto operator=(const Exciter&) -> Exciter& = delete; + Exciter(const Exciter&&) = delete; + auto operator=(const Exciter&&) -> Exciter& = delete; + ~Exciter() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + sigc::signal harmonics; + + double harmonics_port_value = 0.0; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/exciter_preset.hpp b/include/exciter_preset.hpp new file mode 100644 index 0000000..e9e3b9f --- /dev/null +++ b/include/exciter_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class ExciterPreset : public PluginPresetBase { + public: + ExciterPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/exciter_ui.hpp b/include/exciter_ui.hpp new file mode 100644 index 0000000..68358aa --- /dev/null +++ b/include/exciter_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::exciter_box { + +G_BEGIN_DECLS + +#define EE_TYPE_EXCITER_BOX (exciter_box_get_type()) + +G_DECLARE_FINAL_TYPE(ExciterBox, exciter_box, EE, EXCITER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> ExciterBox*; + +void setup(ExciterBox* self, std::shared_ptr exciter, const std::string& schema_path); + +} // namespace ui::exciter_box diff --git a/include/filter.hpp b/include/filter.hpp new file mode 100644 index 0000000..43e1d69 --- /dev/null +++ b/include/filter.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Filter : public PluginBase { + public: + Filter(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Filter(const Filter&) = delete; + auto operator=(const Filter&) -> Filter& = delete; + Filter(const Filter&&) = delete; + auto operator=(const Filter&&) -> Filter& = delete; + ~Filter() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/filter_preset.hpp b/include/filter_preset.hpp new file mode 100644 index 0000000..e8e1a1e --- /dev/null +++ b/include/filter_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class FilterPreset : public PluginPresetBase { + public: + FilterPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/filter_ui.hpp b/include/filter_ui.hpp new file mode 100644 index 0000000..9e88eb8 --- /dev/null +++ b/include/filter_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::filter_box { + +G_BEGIN_DECLS + +#define EE_TYPE_FILTER_BOX (filter_box_get_type()) + +G_DECLARE_FINAL_TYPE(FilterBox, filter_box, EE, FILTER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> FilterBox*; + +void setup(FilterBox* self, std::shared_ptr filter, const std::string& schema_path); + +} // namespace ui::filter_box diff --git a/include/fir_filter_bandpass.hpp b/include/fir_filter_bandpass.hpp new file mode 100644 index 0000000..0798059 --- /dev/null +++ b/include/fir_filter_bandpass.hpp @@ -0,0 +1,34 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "fir_filter_base.hpp" + +class FirFilterBandpass : public FirFilterBase { + public: + FirFilterBandpass(std::string tag); + FirFilterBandpass(const FirFilterBandpass&) = delete; + auto operator=(const FirFilterBandpass&) -> FirFilterBandpass& = delete; + FirFilterBandpass(const FirFilterBandpass&&) = delete; + auto operator=(const FirFilterBandpass&&) -> FirFilterBandpass& = delete; + ~FirFilterBandpass() override; + + void setup() override; +}; diff --git a/include/fir_filter_base.hpp b/include/fir_filter_base.hpp new file mode 100644 index 0000000..f4bd39c --- /dev/null +++ b/include/fir_filter_base.hpp @@ -0,0 +1,100 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include "util.hpp" + +class FirFilterBase { + public: + FirFilterBase(std::string tag); + FirFilterBase(const FirFilterBase&) = delete; + auto operator=(const FirFilterBase&) -> FirFilterBase& = delete; + FirFilterBase(const FirFilterBase&&) = delete; + auto operator=(const FirFilterBase&&) -> FirFilterBase& = delete; + virtual ~FirFilterBase(); + + void set_rate(const uint& value); + + void set_n_samples(const uint& value); + + void set_min_frequency(const float& value); + + void set_max_frequency(const float& value); + + void set_transition_band(const float& value); + + virtual void setup(); + + [[nodiscard]] auto get_delay() const -> float; + + template + void process(T1& data_left, T1& data_right) { + std::span conv_left_in{conv->inpdata(0), conv->inpdata(0) + n_samples}; + std::span conv_right_in{conv->inpdata(1), conv->inpdata(1) + n_samples}; + + std::span conv_left_out{conv->outdata(0), conv->outdata(0) + n_samples}; + std::span conv_right_out{conv->outdata(1), conv->outdata(1) + n_samples}; + + std::copy(data_left.begin(), data_left.end(), conv_left_in.begin()); + std::copy(data_right.begin(), data_right.end(), conv_right_in.begin()); + + if (zita_ready) { + const int& ret = conv->process(true); // thread sync mode set to true + + if (ret != 0) { + util::debug(log_tag + "IR: process failed: " + util::to_string(ret, "")); + + zita_ready = false; + } else { + std::copy(conv_left_out.begin(), conv_left_out.end(), data_left.begin()); + std::copy(conv_right_out.begin(), conv_right_out.end(), data_right.begin()); + } + } + } + + protected: + const std::string log_tag; + + bool zita_ready = false; + + uint n_samples = 0U; + uint rate = 0U; + + float min_frequency = 20.0F; + float max_frequency = 22000.0F; + float transition_band = 100.0F; // Hz + float delay = 0.0F; + + std::vector kernel; + + Convproc* conv = nullptr; + + [[nodiscard]] auto create_lowpass_kernel(const float& cutoff, const float& transition_band) const + -> std::vector; + + void setup_zita(); + + static void direct_conv(const std::vector& a, const std::vector& b, std::vector& c); +}; diff --git a/include/fir_filter_highpass.hpp b/include/fir_filter_highpass.hpp new file mode 100644 index 0000000..1fec9d1 --- /dev/null +++ b/include/fir_filter_highpass.hpp @@ -0,0 +1,34 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "fir_filter_base.hpp" + +class FirFilterHighpass : public FirFilterBase { + public: + FirFilterHighpass(std::string tag); + FirFilterHighpass(const FirFilterHighpass&) = delete; + auto operator=(const FirFilterHighpass&) -> FirFilterHighpass& = delete; + FirFilterHighpass(const FirFilterHighpass&&) = delete; + auto operator=(const FirFilterHighpass&&) -> FirFilterHighpass& = delete; + ~FirFilterHighpass() override; + + void setup() override; +}; diff --git a/include/fir_filter_lowpass.hpp b/include/fir_filter_lowpass.hpp new file mode 100644 index 0000000..55bf385 --- /dev/null +++ b/include/fir_filter_lowpass.hpp @@ -0,0 +1,34 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "fir_filter_base.hpp" + +class FirFilterLowpass : public FirFilterBase { + public: + FirFilterLowpass(std::string tag); + FirFilterLowpass(const FirFilterLowpass&) = delete; + auto operator=(const FirFilterLowpass&) -> FirFilterLowpass& = delete; + FirFilterLowpass(const FirFilterLowpass&&) = delete; + auto operator=(const FirFilterLowpass&&) -> FirFilterLowpass& = delete; + ~FirFilterLowpass() override; + + void setup() override; +}; diff --git a/include/gate.hpp b/include/gate.hpp new file mode 100644 index 0000000..76bc238 --- /dev/null +++ b/include/gate.hpp @@ -0,0 +1,69 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Gate : public PluginBase { + public: + Gate(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Gate(const Gate&) = delete; + auto operator=(const Gate&) -> Gate& = delete; + Gate(const Gate&&) = delete; + auto operator=(const Gate&&) -> Gate& = delete; + ~Gate() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) override; + + auto get_latency_seconds() -> float override; + + void update_probe_links() override; + + sigc::signal attack_zone_start, attack_threshold, release_zone_start, release_threshold, reduction, + sidechain, curve, envelope, gating, latency; + + float attack_zone_start_port_value = 0.0F; + float attack_threshold_port_value = 0.0F; + float release_zone_start_port_value = 0.0F; + float release_threshold_port_value = 0.0F; + float reduction_port_value = 0.0F; + float sidechain_port_value = 0.0F; + float curve_port_value = 0.0F; + float envelope_port_value = 0.0F; + float gating_port_value = 0.0F; + float latency_port_value = 0.0F; + + private: + uint latency_n_frames = 0U; + + std::unique_ptr lv2_wrapper; + + std::vector list_proxies; + + void update_sidechain_links(const std::string& key); +}; diff --git a/include/gate_preset.hpp b/include/gate_preset.hpp new file mode 100644 index 0000000..f3eca64 --- /dev/null +++ b/include/gate_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class GatePreset : public PluginPresetBase { + public: + GatePreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/gate_ui.hpp b/include/gate_ui.hpp new file mode 100644 index 0000000..5db0d7d --- /dev/null +++ b/include/gate_ui.hpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "node_info_holder.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::gate_box { + +G_BEGIN_DECLS + +#define EE_TYPE_GATE_BOX (gate_box_get_type()) + +G_DECLARE_FINAL_TYPE(GateBox, gate_box, EE, GATE_BOX, GtkBox) + +G_END_DECLS + +auto create() -> GateBox*; + +void setup(GateBox* self, std::shared_ptr gate, const std::string& schema_path, PipeManager* pm); + +} // namespace ui::gate_box diff --git a/include/limiter.hpp b/include/limiter.hpp new file mode 100644 index 0000000..cd2ac41 --- /dev/null +++ b/include/limiter.hpp @@ -0,0 +1,63 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Limiter : public PluginBase { + public: + Limiter(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Limiter(const Limiter&) = delete; + auto operator=(const Limiter&) -> Limiter& = delete; + Limiter(const Limiter&&) = delete; + auto operator=(const Limiter&&) -> Limiter& = delete; + ~Limiter() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) override; + + void update_probe_links() override; + + auto get_latency_seconds() -> float override; + + sigc::signal gain_left, gain_right, sidechain_left, sidechain_right, latency; + + float gain_l_port_value = 0.0F; + float gain_r_port_value = 0.0F; + float sidechain_l_port_value = 0.0F; + float sidechain_r_port_value = 0.0F; + float latency_port_value = 0.0F; + + private: + uint latency_n_frames = 0U; + + std::unique_ptr lv2_wrapper; + + std::vector list_proxies; + + void update_sidechain_links(const std::string& key); +}; diff --git a/include/limiter_preset.hpp b/include/limiter_preset.hpp new file mode 100644 index 0000000..ea14679 --- /dev/null +++ b/include/limiter_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class LimiterPreset : public PluginPresetBase { + public: + LimiterPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/limiter_ui.hpp b/include/limiter_ui.hpp new file mode 100644 index 0000000..3eeab67 --- /dev/null +++ b/include/limiter_ui.hpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "node_info_holder.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::limiter_box { + +G_BEGIN_DECLS + +#define EE_TYPE_LIMITER_BOX (limiter_box_get_type()) + +G_DECLARE_FINAL_TYPE(LimiterBox, limiter_box, EE, LIMITER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> LimiterBox*; + +void setup(LimiterBox* self, std::shared_ptr limiter, const std::string& schema_path, PipeManager* pm); + +} // namespace ui::limiter_box diff --git a/include/loudness.hpp b/include/loudness.hpp new file mode 100644 index 0000000..5ab64c4 --- /dev/null +++ b/include/loudness.hpp @@ -0,0 +1,52 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Loudness : public PluginBase { + public: + Loudness(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + Loudness(const Loudness&) = delete; + auto operator=(const Loudness&) -> Loudness& = delete; + Loudness(const Loudness&&) = delete; + auto operator=(const Loudness&&) -> Loudness& = delete; + ~Loudness() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + float latency_port_value = 0.0F; + + private: + uint latency_n_frames = 0U; + + std::unique_ptr lv2_wrapper; +}; diff --git a/include/loudness_preset.hpp b/include/loudness_preset.hpp new file mode 100644 index 0000000..7689b8d --- /dev/null +++ b/include/loudness_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class LoudnessPreset : public PluginPresetBase { + public: + LoudnessPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/loudness_ui.hpp b/include/loudness_ui.hpp new file mode 100644 index 0000000..e2c4bca --- /dev/null +++ b/include/loudness_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::loudness_box { + +G_BEGIN_DECLS + +#define EE_TYPE_LOUDNESS_BOX (loudness_box_get_type()) + +G_DECLARE_FINAL_TYPE(LoudnessBox, loudness_box, EE, LOUDNESS_BOX, GtkBox) + +G_END_DECLS + +auto create() -> LoudnessBox*; + +void setup(LoudnessBox* self, std::shared_ptr loudness, const std::string& schema_path); + +} // namespace ui::loudness_box diff --git a/include/lv2_wrapper.hpp b/include/lv2_wrapper.hpp new file mode 100644 index 0000000..05a938a --- /dev/null +++ b/include/lv2_wrapper.hpp @@ -0,0 +1,211 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "string_literal_wrapper.hpp" +#include "util.hpp" + +namespace lv2 { + +using namespace std::string_literals; + +enum PortType { TYPE_CONTROL, TYPE_AUDIO }; + +struct Port { + PortType type; // Datatype + + uint index; // Port index + + std::string name; + + std::string symbol; + + float value; // Control value (if applicable) + + bool is_input; // True if an input port + + bool optional; // True if the connection is optional +}; + +class Lv2Wrapper { + public: + Lv2Wrapper(const std::string& plugin_uri); + Lv2Wrapper(const Lv2Wrapper&) = delete; + auto operator=(const Lv2Wrapper&) -> Lv2Wrapper& = delete; + Lv2Wrapper(const Lv2Wrapper&&) = delete; + auto operator=(const Lv2Wrapper&&) -> Lv2Wrapper& = delete; + virtual ~Lv2Wrapper(); + + bool found_plugin = false; + + auto create_instance(const uint& rate) -> bool; + + void set_n_samples(const uint& value); + + [[nodiscard]] auto get_n_samples() const -> uint; + + [[nodiscard]] auto get_rate() const -> uint; + + void connect_data_ports(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out); + + void connect_data_ports(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right); + + void activate(); + + void run() const; + + void deactivate(); + + void set_control_port_value(const std::string& symbol, const float& value); + + auto get_control_port_value(const std::string& symbol) -> float; + + auto has_instance() -> bool; + + template + void bind_key_bool(GSettings* settings) { + set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_boolean(settings, gkey_wrapper.msg.data()))); + + g_signal_connect(settings, ("changed::"s + gkey_wrapper.msg.data()).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_boolean(settings, key))); + }), + this); + } + + template + void bind_key_enum(GSettings* settings) { + set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_enum(settings, gkey_wrapper.msg.data()))); + + g_signal_connect(settings, ("changed::"s + gkey_wrapper.msg.data()).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_enum(settings, key))); + }), + this); + } + + template + void bind_key_int(GSettings* settings) { + set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_int(settings, gkey_wrapper.msg.data()))); + + g_signal_connect(settings, ("changed::"s + gkey_wrapper.msg.data()).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_int(settings, key))); + }), + this); + } + + template + void bind_key_double(GSettings* settings) { + set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_double(settings, gkey_wrapper.msg.data()))); + + g_signal_connect(settings, ("changed::"s + gkey_wrapper.msg.data()).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->set_control_port_value(key_wrapper.msg.data(), + static_cast(g_settings_get_double(settings, key))); + }), + this); + } + + template + void bind_key_double_db(GSettings* settings) { + set_control_port_value( + key_wrapper.msg.data(), + static_cast(util::db_to_linear(g_settings_get_double(settings, gkey_wrapper.msg.data())))); + + g_signal_connect(settings, ("changed::"s + gkey_wrapper.msg.data()).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->set_control_port_value( + key_wrapper.msg.data(), + static_cast(util::db_to_linear(g_settings_get_double(settings, key)))); + }), + this); + } + + private: + std::string plugin_uri; + + LilvWorld* world = nullptr; + + const LilvPlugin* plugin = nullptr; + + LilvInstance* instance = nullptr; + + uint n_ports = 0U; + uint n_audio_in = 0U; + uint n_audio_out = 0U; + + uint n_samples = 0U; + + uint rate = 0U; + + std::vector ports; + + std::unordered_map map_uri_to_urid; + std::unordered_map map_urid_to_uri; + + const std::array static_features{{{LV2_BUF_SIZE__boundedBlockLength, nullptr}}}; + + void check_required_features(); + + void create_ports(); + + void connect_control_ports(); + + auto map_urid(const std::string& uri) -> LV2_URID; +}; + +} // namespace lv2 diff --git a/include/maximizer.hpp b/include/maximizer.hpp new file mode 100644 index 0000000..0347e9d --- /dev/null +++ b/include/maximizer.hpp @@ -0,0 +1,56 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Maximizer : public PluginBase { + public: + Maximizer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + Maximizer(const Maximizer&) = delete; + auto operator=(const Maximizer&) -> Maximizer& = delete; + Maximizer(const Maximizer&&) = delete; + auto operator=(const Maximizer&&) -> Maximizer& = delete; + ~Maximizer() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + sigc::signal reduction; + + double reduction_port_value = 0.0; + + float latency_port_value = 0.0F; + + private: + uint latency_n_frames = 0U; + + std::unique_ptr lv2_wrapper; +}; diff --git a/include/maximizer_preset.hpp b/include/maximizer_preset.hpp new file mode 100644 index 0000000..c1e74fa --- /dev/null +++ b/include/maximizer_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class MaximizerPreset : public PluginPresetBase { + public: + MaximizerPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/maximizer_ui.hpp b/include/maximizer_ui.hpp new file mode 100644 index 0000000..3f5e7e2 --- /dev/null +++ b/include/maximizer_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::maximizer_box { + +G_BEGIN_DECLS + +#define EE_TYPE_MAXIMIZER_BOX (maximizer_box_get_type()) + +G_DECLARE_FINAL_TYPE(MaximizerBox, maximizer_box, EE, MAXIMIZER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> MaximizerBox*; + +void setup(MaximizerBox* self, std::shared_ptr maximizer, const std::string& schema_path); + +} // namespace ui::maximizer_box diff --git a/include/module_info_holder.hpp b/include/module_info_holder.hpp new file mode 100644 index 0000000..e9cd274 --- /dev/null +++ b/include/module_info_holder.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "pipe_manager.hpp" + +namespace ui::holders { + +G_BEGIN_DECLS + +#define EE_TYPE_MODULE_INFO_HOLDER (module_info_holder_get_type()) + +G_DECLARE_FINAL_TYPE(ModuleInfoHolder, module_info_holder, EE, MODULE_INFO_HOLDER, GObject) + +G_END_DECLS + +struct _ModuleInfoHolder { + GObject parent_instance; + + ModuleInfo* info; + + sigc::signal info_updated; +}; + +auto create(const ModuleInfo& info) -> ModuleInfoHolder*; + +} // namespace ui::holders \ No newline at end of file diff --git a/include/multiband_compressor.hpp b/include/multiband_compressor.hpp new file mode 100644 index 0000000..bd90470 --- /dev/null +++ b/include/multiband_compressor.hpp @@ -0,0 +1,122 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" +#include "tags_multiband_compressor.hpp" + +class MultibandCompressor : public PluginBase { + public: + MultibandCompressor(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + MultibandCompressor(const MultibandCompressor&) = delete; + auto operator=(const MultibandCompressor&) -> MultibandCompressor& = delete; + MultibandCompressor(const MultibandCompressor&&) = delete; + auto operator=(const MultibandCompressor&&) -> MultibandCompressor& = delete; + ~MultibandCompressor() override; + + static constexpr uint n_bands = 8U; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) override; + + auto get_latency_seconds() -> float override; + + void update_probe_links() override; + + sigc::signal)> reduction, envelope, curve, frequency_range; + + float latency_port_value = 0.0F; + + std::array frequency_range_end_port_array = {0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + std::array envelope_port_array = {0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + std::array curve_port_array = {0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + std::array reduction_port_array = {0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + + private: + uint latency_n_frames = 0U; + + std::unique_ptr lv2_wrapper; + + std::vector list_proxies; + + void update_sidechain_links(const std::string& key); + + template + constexpr void bind_band() { + using namespace tags::multiband_compressor; + using namespace std::string_literals; + + if (n > 0U) { + lv2_wrapper->bind_key_bool(settings); + + lv2_wrapper->bind_key_double(settings); + } + + lv2_wrapper->bind_key_bool(settings); + lv2_wrapper->bind_key_bool(settings); + lv2_wrapper->bind_key_bool(settings); + lv2_wrapper->bind_key_bool(settings); + lv2_wrapper->bind_key_bool(settings); + lv2_wrapper->bind_key_bool(settings); + + lv2_wrapper->bind_key_enum(settings); + lv2_wrapper->bind_key_enum(settings); + lv2_wrapper->bind_key_enum(settings); + + lv2_wrapper->bind_key_double(settings); + lv2_wrapper->bind_key_double(settings); + lv2_wrapper->bind_key_double(settings); + lv2_wrapper->bind_key_double(settings); + lv2_wrapper->bind_key_double(settings); + lv2_wrapper->bind_key_double(settings); + lv2_wrapper->bind_key_double(settings); + + lv2_wrapper->bind_key_double_db(settings); + lv2_wrapper->bind_key_double_db(settings); + lv2_wrapper->bind_key_double_db(settings); + lv2_wrapper->bind_key_double_db(settings); + lv2_wrapper->bind_key_double_db(settings); + lv2_wrapper->bind_key_double_db(settings); + lv2_wrapper->bind_key_double_db(settings); + + gconnections.push_back(g_signal_connect(settings, ("changed::"s + band_external_sidechain[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + } + + template + constexpr void bind_bands(std::index_sequence) { + (bind_band(), ...); + } +}; diff --git a/include/multiband_compressor_band_box.hpp b/include/multiband_compressor_band_box.hpp new file mode 100644 index 0000000..6ebf486 --- /dev/null +++ b/include/multiband_compressor_band_box.hpp @@ -0,0 +1,54 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "tags_multiband_compressor.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::multiband_compressor_band_box { + +G_BEGIN_DECLS + +#define EE_TYPE_MULTIBAND_COMPRESSOR_BAND_BOX (multiband_compressor_band_box_get_type()) + +G_DECLARE_FINAL_TYPE(MultibandCompressorBandBox, + multiband_compressor_band_box, + EE, + MULTIBAND_COMPRESSOR_BAND_BOX, + GtkBox) + +G_END_DECLS + +auto create() -> MultibandCompressorBandBox*; + +void setup(MultibandCompressorBandBox* self, GSettings* settings, int index); + +void set_end_label(MultibandCompressorBandBox* self, const float& value); + +void set_envelope_label(MultibandCompressorBandBox* self, const float& value); + +void set_curve_label(MultibandCompressorBandBox* self, const float& value); + +void set_gain_label(MultibandCompressorBandBox* self, const float& value); + +} // namespace ui::multiband_compressor_band_box diff --git a/include/multiband_compressor_preset.hpp b/include/multiband_compressor_preset.hpp new file mode 100644 index 0000000..2097de9 --- /dev/null +++ b/include/multiband_compressor_preset.hpp @@ -0,0 +1,34 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class MultibandCompressorPreset : public PluginPresetBase { + public: + MultibandCompressorPreset(); + + private: + static constexpr uint n_bands = 8U; + + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/multiband_compressor_ui.hpp b/include/multiband_compressor_ui.hpp new file mode 100644 index 0000000..5d266a0 --- /dev/null +++ b/include/multiband_compressor_ui.hpp @@ -0,0 +1,46 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "multiband_compressor_band_box.hpp" +#include "node_info_holder.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::multiband_compressor_box { + +G_BEGIN_DECLS + +#define EE_TYPE_MULTIBAND_COMPRESSOR_BOX (multiband_compressor_box_get_type()) + +G_DECLARE_FINAL_TYPE(MultibandCompressorBox, multiband_compressor_box, EE, MULTIBAND_COMPRESSOR_BOX, GtkBox) + +G_END_DECLS + +auto create() -> MultibandCompressorBox*; + +void setup(MultibandCompressorBox* self, + std::shared_ptr multiband_compressor, + const std::string& schema_path, + PipeManager* pm); + +} // namespace ui::multiband_compressor_box diff --git a/include/multiband_gate.hpp b/include/multiband_gate.hpp new file mode 100644 index 0000000..73375ab --- /dev/null +++ b/include/multiband_gate.hpp @@ -0,0 +1,60 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class MultibandGate : public PluginBase { + public: + MultibandGate(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + MultibandGate(const MultibandGate&) = delete; + auto operator=(const MultibandGate&) -> MultibandGate& = delete; + MultibandGate(const MultibandGate&&) = delete; + auto operator=(const MultibandGate&&) -> MultibandGate& = delete; + ~MultibandGate() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + sigc::signal output0, output1, output2, output3, gating0, gating1, gating2, gating3; + + double output0_port_value = 0.0; + double output1_port_value = 0.0; + double output2_port_value = 0.0; + double output3_port_value = 0.0; + + double gating0_port_value = 0.0; + double gating1_port_value = 0.0; + double gating2_port_value = 0.0; + double gating3_port_value = 0.0; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/multiband_gate_preset.hpp b/include/multiband_gate_preset.hpp new file mode 100644 index 0000000..c32edf0 --- /dev/null +++ b/include/multiband_gate_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class MultibandGatePreset : public PluginPresetBase { + public: + MultibandGatePreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/multiband_gate_ui.hpp b/include/multiband_gate_ui.hpp new file mode 100644 index 0000000..7d6e9e9 --- /dev/null +++ b/include/multiband_gate_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::multiband_gate_box { + +G_BEGIN_DECLS + +#define EE_TYPE_MULTIBAND_GATE_BOX (multiband_gate_box_get_type()) + +G_DECLARE_FINAL_TYPE(MultibandGateBox, multiband_gate_box, EE, MULTIBAND_GATE_BOX, GtkBox) + +G_END_DECLS + +auto create() -> MultibandGateBox*; + +void setup(MultibandGateBox* self, std::shared_ptr multiband_gate, const std::string& schema_path); + +} // namespace ui::multiband_gate_box diff --git a/include/node_info_holder.hpp b/include/node_info_holder.hpp new file mode 100644 index 0000000..7fc991d --- /dev/null +++ b/include/node_info_holder.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "pipe_manager.hpp" + +namespace ui::holders { + +G_BEGIN_DECLS + +#define EE_TYPE_NODE_INFO_HOLDER (node_info_holder_get_type()) + +G_DECLARE_FINAL_TYPE(NodeInfoHolder, node_info_holder, EE, NODE_INFO_HOLDER, GObject) + +G_END_DECLS + +struct _NodeInfoHolder { + GObject parent_instance; + + NodeInfo* info; + + sigc::signal info_updated; +}; + +auto create(const NodeInfo& info) -> NodeInfoHolder*; + +} // namespace ui::holders \ No newline at end of file diff --git a/include/output_level.hpp b/include/output_level.hpp new file mode 100644 index 0000000..fafddef --- /dev/null +++ b/include/output_level.hpp @@ -0,0 +1,44 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_base.hpp" + +class OutputLevel : public PluginBase { + public: + OutputLevel(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + OutputLevel(const OutputLevel&) = delete; + auto operator=(const OutputLevel&) -> OutputLevel& = delete; + OutputLevel(const OutputLevel&&) = delete; + auto operator=(const OutputLevel&&) -> OutputLevel& = delete; + ~OutputLevel() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; +}; diff --git a/include/pipe_manager.hpp b/include/pipe_manager.hpp new file mode 100644 index 0000000..06daff7 --- /dev/null +++ b/include/pipe_manager.hpp @@ -0,0 +1,309 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "tags_app.hpp" +#include "tags_pipewire.hpp" +#include "util.hpp" + +struct NodeInfo { + pw_proxy* proxy = nullptr; + + uint id = SPA_ID_INVALID; + + uint device_id = SPA_ID_INVALID; + + uint64_t serial = SPA_ID_INVALID; + + std::string name; + + std::string description; + + std::string media_class; + + std::string app_icon_name; + + std::string media_icon_name; + + std::string device_icon_name; + + std::string media_name; + + std::string format; + + std::string application_id; + + int priority = -1; + + pw_node_state state = PW_NODE_STATE_IDLE; + + bool mute = false; + + bool connected = false; + + int n_input_ports = 0; + + int n_output_ports = 0; + + int rate = 1; // used as divisor to calculate latency, so do not initialize it as 0 + + uint n_volume_channels = 0U; + + float latency = 0.0F; + + float volume = 0.0F; +}; + +struct LinkInfo { + std::string path; + + uint id = SPA_ID_INVALID; + + uint input_node_id = 0U; + + uint input_port_id = 0U; + + uint output_node_id = 0U; + + uint output_port_id = 0U; + + uint64_t serial = SPA_ID_INVALID; + + bool passive = false; // does not cause the graph to be runnable + + pw_link_state state = PW_LINK_STATE_UNLINKED; +}; + +struct PortInfo { + std::string path; + + std::string format_dsp; + + std::string audio_channel; + + std::string name; + + std::string direction; + + bool physical = false; + + bool terminal = false; + + bool monitor = false; + + uint id = SPA_ID_INVALID; + + uint node_id = 0U; + + uint port_id = 0U; + + uint64_t serial = SPA_ID_INVALID; +}; + +struct ModuleInfo { + uint id; + + uint64_t serial = SPA_ID_INVALID; + + std::string name; + + std::string description; + + std::string filename; +}; + +struct ClientInfo { + uint id; + + uint64_t serial = SPA_ID_INVALID; + + std::string name; + + std::string access; + + std::string api; +}; + +struct DeviceInfo { + uint id; + + uint64_t serial = SPA_ID_INVALID; + + std::string name; + + std::string description; + + std::string nick; + + std::string media_class; + + std::string api; + + std::string input_route_name; + + std::string output_route_name; + + std::string bus_id; + + std::string bus_path; + + spa_param_availability input_route_available; + + spa_param_availability output_route_available; +}; + +class PipeManager { + public: + PipeManager(); + PipeManager(const PipeManager&) = delete; + auto operator=(const PipeManager&) -> PipeManager& = delete; + PipeManager(const PipeManager&&) = delete; + auto operator=(const PipeManager&&) -> PipeManager& = delete; + ~PipeManager(); + + pw_thread_loop* thread_loop = nullptr; + pw_core* core = nullptr; + pw_registry* registry = nullptr; + pw_metadata* metadata = nullptr; + + inline static bool exiting = false; + + inline static bool exclude_monitor_stream = true; + + spa_hook metadata_listener{}; + + std::map node_map; + + std::vector list_links; + + std::vector list_ports; + + std::vector list_modules; + + std::vector list_clients; + + std::vector list_devices; + + std::string default_output_device_name, default_input_device_name; + + NodeInfo ee_sink_node, ee_source_node; + NodeInfo output_device, input_device; + + constexpr static auto blocklist_node_name = + std::to_array({"EasyEffects", "easyeffects", "easyeffects_soe", "easyeffects_sie", "EasyEffectsWebrtcProbe", + "libcanberra", "gsd-media-keys", "GNOME Shell", "speech-dispatcher", "speech-dispatcher-dummy", + "speech-dispatcher-espeak-ng", "Mutter", "gameoverlayui"}); + + std::array blocklist_app_id = {"org.PulseAudio.pavucontrol", "org.gnome.VolumeControl"}; + + std::array blocklist_media_role = {"event", "Notification"}; + + std::string header_version, library_version, core_name; + std::string default_clock_rate = "0"; + std::string default_min_quantum = "0"; + std::string default_max_quantum = "0"; + std::string default_quantum = "0"; + + auto node_map_at_id(const uint& id) -> NodeInfo&; + + auto stream_is_connected(const uint& id, const std::string& media_class) -> bool; + + void connect_stream_output(const uint& id) const; + + void connect_stream_input(const uint& id) const; + + void disconnect_stream(const uint& id) const; + + static void set_node_volume(pw_proxy* proxy, const uint& n_vol_ch, const float& value); + + static void set_node_mute(pw_proxy* proxy, const bool& state); + + auto count_node_ports(const uint& node_id) -> uint; + + /* + Links the output ports of the node output_node_id to the input ports of the node input_node_id + */ + + auto link_nodes(const uint& output_node_id, + const uint& input_node_id, + const bool& probe_link = false, + const bool& link_passive = true) -> std::vector; + + void destroy_object(const int& id) const; + + /* + Destroy all the filters links + */ + + void destroy_links(const std::vector& list) const; + + void lock() const; + + void unlock() const; + + void sync_wait_unlock() const; + + static auto json_object_find(const char* obj, const char* key, char* value, const size_t& len) -> int; + + sigc::signal stream_output_added; + sigc::signal stream_input_added; + sigc::signal stream_output_changed; + sigc::signal stream_input_changed; + sigc::signal stream_output_removed; + sigc::signal stream_input_removed; + + /* + Do not pass NodeInfo by reference. Sometimes it dies before we use it and a segmentation fault happens. + */ + + sigc::signal source_added; + sigc::signal source_changed; + sigc::signal source_removed; + sigc::signal sink_added; + sigc::signal sink_changed; + sigc::signal sink_removed; + sigc::signal new_default_sink_name; + sigc::signal new_default_source_name; + sigc::signal device_input_route_changed; + sigc::signal device_output_route_changed; + + sigc::signal link_changed; + + private: + pw_context* context = nullptr; + pw_proxy *proxy_stream_output_sink = nullptr, *proxy_stream_input_source = nullptr; + + spa_hook core_listener{}, registry_listener{}; + + void set_metadata_target_node(const uint& origin_id, const uint& target_id, const uint64_t& target_serial) const; +}; diff --git a/include/pipe_manager_box.hpp b/include/pipe_manager_box.hpp new file mode 100644 index 0000000..7b72ab6 --- /dev/null +++ b/include/pipe_manager_box.hpp @@ -0,0 +1,46 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "application.hpp" +#include "client_info_holder.hpp" +#include "module_info_holder.hpp" +#include "node_info_holder.hpp" +#include "presets_autoloading_holder.hpp" +#include "tags_resources.hpp" +#include "test_signals.hpp" +#include "ui_helpers.hpp" + +namespace ui::pipe_manager_box { + +G_BEGIN_DECLS + +#define EE_TYPE_PIPE_MANAGER_BOX (pipe_manager_box_get_type()) + +G_DECLARE_FINAL_TYPE(PipeManagerBox, pipe_manager_box, EE, PIPE_MANAGER_BOX, GtkBox) + +G_END_DECLS + +auto create() -> PipeManagerBox*; + +void setup(PipeManagerBox* self, app::Application* application); + +} // namespace ui::pipe_manager_box \ No newline at end of file diff --git a/include/pipeline_type.hpp b/include/pipeline_type.hpp new file mode 100644 index 0000000..aa2f90e --- /dev/null +++ b/include/pipeline_type.hpp @@ -0,0 +1,22 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +enum class PipelineType { input, output }; diff --git a/include/pitch.hpp b/include/pitch.hpp new file mode 100644 index 0000000..1e423cc --- /dev/null +++ b/include/pitch.hpp @@ -0,0 +1,93 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "plugin_base.hpp" + +class Pitch : public PluginBase { + public: + Pitch(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Pitch(const Pitch&) = delete; + auto operator=(const Pitch&) -> Pitch& = delete; + Pitch(const Pitch&&) = delete; + auto operator=(const Pitch&&) -> Pitch& = delete; + ~Pitch() override; + + enum class Mode { speed, quality, consistency }; + enum class Formant { shifted, preserved }; + enum class Transients { crisp, mixed, smooth }; + enum class Detector { compound, percussive, soft }; + enum class Phase { laminar, independent }; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + float latency_value = 0.0F; + + private: + bool rubberband_ready = false; + bool notify_latency = false; + + uint latency_n_frames = 0U; + + std::vector data_L, data_R; + + std::array stretcher_in = {nullptr, nullptr}; + std::array stretcher_out = {nullptr, nullptr}; + + std::deque deque_out_L, deque_out_R; + + RubberBand::RubberBandStretcher* stretcher = nullptr; + + Mode mode = Mode::speed; + Formant formant = Formant::shifted; + Transients transients = Transients::crisp; + Detector detector = Detector::compound; + Phase phase = Phase::laminar; + + int cents = 0; + int semitones = 0; + int octaves = 0; + + double time_ratio = 1.0; + + void init_stretcher(); + + static auto parse_mode_key(const std::string& key) -> Mode; + static auto parse_formant_key(const std::string& key) -> Formant; + static auto parse_transients_key(const std::string& key) -> Transients; + static auto parse_detector_key(const std::string& key) -> Detector; + static auto parse_phase_key(const std::string& key) -> Phase; + + void set_mode(); + void set_formant(); + void set_transients(); + void set_detector(); + void set_phase(); + void set_pitch_scale(); +}; diff --git a/include/pitch_preset.hpp b/include/pitch_preset.hpp new file mode 100644 index 0000000..7bebdd8 --- /dev/null +++ b/include/pitch_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class PitchPreset : public PluginPresetBase { + public: + PitchPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/pitch_ui.hpp b/include/pitch_ui.hpp new file mode 100644 index 0000000..32c269c --- /dev/null +++ b/include/pitch_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::pitch_box { + +G_BEGIN_DECLS + +#define EE_TYPE_PITCH_BOX (pitch_box_get_type()) + +G_DECLARE_FINAL_TYPE(PitchBox, pitch_box, EE, PITCH_BOX, GtkBox) + +G_END_DECLS + +auto create() -> PitchBox*; + +void setup(PitchBox* self, std::shared_ptr pitch, const std::string& schema_path); + +} // namespace ui::pitch_box diff --git a/include/plugin_base.hpp b/include/plugin_base.hpp new file mode 100644 index 0000000..ddec95f --- /dev/null +++ b/include/plugin_base.hpp @@ -0,0 +1,158 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include "pipe_manager.hpp" +#include "tags_plugin_name.hpp" + +class PluginBase { + public: + PluginBase(std::string tag, + std::string plugin_name, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager, + const bool& enable_probe = false); + PluginBase(const PluginBase&) = delete; + auto operator=(const PluginBase&) -> PluginBase& = delete; + PluginBase(const PluginBase&&) = delete; + auto operator=(const PluginBase&&) -> PluginBase& = delete; + virtual ~PluginBase(); + + struct data; + + struct port { + struct data* data; + }; + + struct data { + struct port* in_left = nullptr; + struct port* in_right = nullptr; + + struct port* out_left = nullptr; + struct port* out_right = nullptr; + + struct port* probe_left = nullptr; + struct port* probe_right = nullptr; + + PluginBase* pb = nullptr; + }; + + const std::string log_tag; + + std::string name; + + pw_filter* filter = nullptr; + + bool enable_probe = false; + + uint n_samples = 0U; + + uint rate = 0U; + + float buffer_duration = 0.0F; + + bool bypass = false; + + bool connected_to_pw = false; + + std::vector dummy_left, dummy_right; + + [[nodiscard]] auto get_node_id() const -> uint; + + void set_active(const bool& state) const; + + void set_post_messages(const bool& state); + + auto connect_to_pw() -> bool; + + void disconnect_from_pw(); + + void reset_settings(); + + virtual void setup(); + + virtual void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out); + + virtual void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right); + + virtual void update_probe_links(); + + virtual auto get_latency_seconds() -> float; + + sigc::signal input_level; + sigc::signal output_level; + sigc::signal latency; + + protected: + std::mutex data_mutex; + + GSettings* settings = nullptr; + + PipeManager* pm = nullptr; + + spa_hook listener{}; + + data pf_data = {}; + + bool post_messages = false; + + uint n_ports = 4; + + float input_gain = 1.0F; + float output_gain = 1.0F; + + float notification_time_window = 1.0F / 20.0F; // seconds + float notification_dt = 0.0F; + + std::vector gconnections; + + void setup_input_output_gain(); + + void initialize_listener(); + + void notify(); + + void get_peaks(const std::span& left_in, + const std::span& right_in, + std::span& left_out, + std::span& right_out); + + static void apply_gain(std::span& left, std::span& right, const float& gain); + + private: + uint node_id = 0U; + + float input_peak_left = util::minimum_linear_level, input_peak_right = util::minimum_linear_level; + float output_peak_left = util::minimum_linear_level, output_peak_right = util::minimum_linear_level; +}; diff --git a/include/plugin_preset_base.hpp b/include/plugin_preset_base.hpp new file mode 100644 index 0000000..7d5fe52 --- /dev/null +++ b/include/plugin_preset_base.hpp @@ -0,0 +1,159 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include "preset_type.hpp" +#include "tags_app.hpp" +#include "tags_schema.hpp" +#include "util.hpp" + +class PluginPresetBase { + public: + PluginPresetBase() = default; + PluginPresetBase(const PluginPresetBase&) = delete; + auto operator=(const PluginPresetBase&) -> PluginPresetBase& = delete; + PluginPresetBase(const PluginPresetBase&&) = delete; + auto operator=(const PluginPresetBase&&) -> PluginPresetBase& = delete; + + virtual ~PluginPresetBase() { + g_object_unref(input_settings); + g_object_unref(output_settings); + }; + + void write(PresetType preset_type, nlohmann::json& json) { + try { + switch (preset_type) { + case PresetType::output: + save(json, "output", output_settings); + break; + case PresetType::input: + save(json, "input", input_settings); + break; + } + } catch (const nlohmann::json::exception& e) { + util::warning(e.what()); + } + } + + void read(PresetType preset_type, const nlohmann::json& json) { + // For simplicity, exceptions raised while reading presets parameters + // should be handled outside this method. + + switch (preset_type) { + case PresetType::output: + load(json, "output", output_settings); + break; + case PresetType::input: + load(json, "input", input_settings); + break; + } + } + + protected: + GSettings *input_settings = nullptr, *output_settings = nullptr; + + virtual void save(nlohmann::json& json, const std::string& section, GSettings* settings) = 0; + + virtual void load(const nlohmann::json& json, const std::string& section, GSettings* settings) = 0; + + template + auto get_default(GSettings* settings, const std::string& key) -> T { + GVariant* variant = g_settings_get_default_value(settings, key.c_str()); + + T value{}; + + if constexpr (std::is_same_v) { + value = g_variant_get_double(variant); + } else if constexpr (std::is_same_v) { + value = g_variant_get_int32(variant); + } else if constexpr (std::is_same_v) { + value = g_variant_get_boolean(variant); + } else if constexpr (std::is_same_v) { + gsize* length = nullptr; + + value = const_cast(g_variant_get_string(variant, length)); + } + + g_variant_unref(variant); + + return value; + } + + template + void update_key(const nlohmann::json& json, + GSettings* settings, + const std::string& key, + const std::string& json_key) { + T new_value; + + if constexpr (!std::is_same_v) { + new_value = json.value(json_key, get_default(settings, key)); + } else { + std::string tmp = json.value(json_key, get_default(settings, key)); + new_value = g_strdup(tmp.c_str()); + } + + T current_value; + + if constexpr (std::is_same_v) { + current_value = g_settings_get_double(settings, key.c_str()); + } else if constexpr (std::is_same_v) { + current_value = g_settings_get_int(settings, key.c_str()); + } else if constexpr (std::is_same_v) { + current_value = g_settings_get_boolean(settings, key.c_str()); + } else if constexpr (std::is_same_v) { + current_value = g_settings_get_string(settings, key.c_str()); + } + + if (is_different(current_value, new_value)) { + if constexpr (std::is_same_v) { + g_settings_set_double(settings, key.c_str(), new_value); + } else if constexpr (std::is_same_v) { + g_settings_set_int(settings, key.c_str(), new_value); + } else if constexpr (std::is_same_v) { + g_settings_set_boolean(settings, key.c_str(), new_value); + } else if constexpr (std::is_same_v) { + g_settings_set_string(settings, key.c_str(), new_value); + } + } + + if constexpr (std::is_same_v) { + g_free(new_value); + g_free(current_value); + } + } + + private: + /* + Very naive test for equal values... + */ + + template + auto is_different(const T& a, const T& b) -> bool { + if constexpr (std::is_same_v) { + return static_cast(g_strcmp0(a, b) != 0); + } + + return a != b; + } +}; diff --git a/include/plugins_box.hpp b/include/plugins_box.hpp new file mode 100644 index 0000000..cf477a4 --- /dev/null +++ b/include/plugins_box.hpp @@ -0,0 +1,63 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "application.hpp" +#include "autogain_ui.hpp" +#include "bass_enhancer_ui.hpp" +#include "bass_loudness_ui.hpp" +#include "compressor_ui.hpp" +#include "convolver_ui.hpp" +#include "crossfeed_ui.hpp" +#include "crystalizer_ui.hpp" +#include "deesser_ui.hpp" +#include "delay_ui.hpp" +#include "echo_canceller_ui.hpp" +#include "equalizer_ui.hpp" +#include "exciter_ui.hpp" +#include "filter_ui.hpp" +#include "gate_ui.hpp" +#include "limiter_ui.hpp" +#include "loudness_ui.hpp" +#include "maximizer_ui.hpp" +#include "multiband_compressor_ui.hpp" +#include "multiband_gate_ui.hpp" +#include "pipeline_type.hpp" +#include "pitch_ui.hpp" +#include "plugins_menu.hpp" +#include "reverb_ui.hpp" +#include "rnnoise_ui.hpp" +#include "stereo_tools_ui.hpp" + +namespace ui::plugins_box { + +G_BEGIN_DECLS + +#define EE_TYPE_PLUGINS_BOX (plugins_box_get_type()) + +G_DECLARE_FINAL_TYPE(PluginsBox, plugins_box, EE, PLUGINS_BOX, GtkBox) + +G_END_DECLS + +auto create() -> PluginsBox*; + +void setup(PluginsBox* self, app::Application* application, PipelineType pipeline_type); + +} // namespace ui::plugins_box \ No newline at end of file diff --git a/include/plugins_menu.hpp b/include/plugins_menu.hpp new file mode 100644 index 0000000..21c2a07 --- /dev/null +++ b/include/plugins_menu.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include "application.hpp" +#include "pipeline_type.hpp" +#include "tags_plugin_name.hpp" +#include "tags_resources.hpp" +#include "util.hpp" + +namespace ui::plugins_menu { + +G_BEGIN_DECLS + +#define EE_TYPE_PLUGINS_MENU (plugins_menu_get_type()) + +G_DECLARE_FINAL_TYPE(PluginsMenu, plugins_menu, EE, PLUGINS_MENU, GtkPopover) + +G_END_DECLS + +auto create() -> PluginsMenu*; + +void setup(PluginsMenu* self, app::Application* application, PipelineType pipeline_type); + +} // namespace ui::plugins_menu diff --git a/include/preferences_general.hpp b/include/preferences_general.hpp new file mode 100644 index 0000000..fb6cfc7 --- /dev/null +++ b/include/preferences_general.hpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include "tags_resources.hpp" +#include "ui_helpers.hpp" +#include "util.hpp" + +namespace ui::preferences::general { + +G_BEGIN_DECLS + +#define EE_TYPE_PREFERENCES_GENERAL (preferences_general_get_type()) + +G_DECLARE_FINAL_TYPE(PreferencesGeneral, preferences_general, EE, PREFERENCES_GENERAL, AdwPreferencesPage) + +G_END_DECLS + +auto create() -> PreferencesGeneral*; + +} // namespace ui::preferences::general \ No newline at end of file diff --git a/include/preferences_spectrum.hpp b/include/preferences_spectrum.hpp new file mode 100644 index 0000000..13e9492 --- /dev/null +++ b/include/preferences_spectrum.hpp @@ -0,0 +1,40 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "tags_resources.hpp" +#include "tags_schema.hpp" +#include "ui_helpers.hpp" +#include "util.hpp" + +namespace ui::preferences::spectrum { + +G_BEGIN_DECLS + +#define EE_TYPE_PREFERENCES_SPECTRUM (preferences_spectrum_get_type()) + +G_DECLARE_FINAL_TYPE(PreferencesSpectrum, preferences_spectrum, EE, PREFERENCES_SPECTRUM, AdwPreferencesPage) + +G_END_DECLS + +auto create() -> PreferencesSpectrum*; + +} // namespace ui::preferences::spectrum \ No newline at end of file diff --git a/include/preferences_window.hpp b/include/preferences_window.hpp new file mode 100644 index 0000000..01f25aa --- /dev/null +++ b/include/preferences_window.hpp @@ -0,0 +1,37 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "preferences_general.hpp" +#include "preferences_spectrum.hpp" + +namespace ui::preferences::window { + +G_BEGIN_DECLS + +#define EE_TYPE_PREFERENCES_WINDOW (preferences_window_get_type()) + +G_DECLARE_FINAL_TYPE(PreferencesWindow, preferences_window, EE, PREFERENCES_WINDOW, AdwPreferencesWindow) + +G_END_DECLS + +auto create() -> PreferencesWindow*; + +} // namespace ui::preferences::window \ No newline at end of file diff --git a/include/preset_type.hpp b/include/preset_type.hpp new file mode 100644 index 0000000..a964225 --- /dev/null +++ b/include/preset_type.hpp @@ -0,0 +1,22 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +enum class PresetType { input, output }; diff --git a/include/presets_autoloading_holder.hpp b/include/presets_autoloading_holder.hpp new file mode 100644 index 0000000..766b12c --- /dev/null +++ b/include/presets_autoloading_holder.hpp @@ -0,0 +1,51 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "util.hpp" + +namespace ui::holders { + +G_BEGIN_DECLS + +#define EE_TYPE_PRESETS_AUTOLOADING_HOLDER (presets_autoloading_holder_get_type()) + +G_DECLARE_FINAL_TYPE(PresetsAutoloadingHolder, presets_autoloading_holder, EE, PRESETS_AUTOLOADING_HOLDER, GObject) + +G_END_DECLS + +struct PresetsAutoLoadingData { + public: + std::string device, device_description, device_profile, preset_name; +}; + +struct _PresetsAutoloadingHolder { + GObject parent_instance; + + PresetsAutoLoadingData* data; +}; + +auto create(const std::string& device, + const std::string& device_description, + const std::string& device_profile, + const std::string& preset_name) -> PresetsAutoloadingHolder*; + +} // namespace ui::holders \ No newline at end of file diff --git a/include/presets_manager.hpp b/include/presets_manager.hpp new file mode 100644 index 0000000..62dbfa9 --- /dev/null +++ b/include/presets_manager.hpp @@ -0,0 +1,152 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include "autogain_preset.hpp" +#include "bass_enhancer_preset.hpp" +#include "bass_loudness_preset.hpp" +#include "compressor_preset.hpp" +#include "convolver_preset.hpp" +#include "crossfeed_preset.hpp" +#include "crystalizer_preset.hpp" +#include "deesser_preset.hpp" +#include "delay_preset.hpp" +#include "echo_canceller_preset.hpp" +#include "equalizer_preset.hpp" +#include "exciter_preset.hpp" +#include "filter_preset.hpp" +#include "gate_preset.hpp" +#include "limiter_preset.hpp" +#include "loudness_preset.hpp" +#include "maximizer_preset.hpp" +#include "multiband_compressor_preset.hpp" +#include "multiband_gate_preset.hpp" +#include "pitch_preset.hpp" +#include "preset_type.hpp" +#include "reverb_preset.hpp" +#include "rnnoise_preset.hpp" +#include "stereo_tools_preset.hpp" +#include "tags_plugin_name.hpp" +#include "util.hpp" + +class PresetsManager { + public: + PresetsManager(); + PresetsManager(const PresetsManager&) = delete; + auto operator=(const PresetsManager&) -> PresetsManager& = delete; + PresetsManager(const PresetsManager&&) = delete; + auto operator=(const PresetsManager&&) -> PresetsManager& = delete; + ~PresetsManager(); + + enum class PresetError { + blocklist_format, + blocklist_generic, + pipeline_format, + pipeline_generic, + plugin_format, + plugin_generic + }; + + // signal sending title and description strings + sigc::signal preset_load_error; + + auto get_names(const PresetType& preset_type) -> std::vector; + + auto search_names(std::filesystem::directory_iterator& it) -> std::vector; + + void add(const PresetType& preset_type, const std::string& name); + + void save_preset_file(const PresetType& preset_type, const std::string& name); + + void write_plugins_preset(const PresetType& preset_type, + const std::vector& plugins, + nlohmann::json& json); + + void remove(const PresetType& preset_type, const std::string& name); + + auto load_preset_file(const PresetType& preset_type, const std::string& name) -> bool; + + auto read_plugins_preset(const PresetType& preset_type, + const std::vector& plugins, + const nlohmann::json& json) -> bool; + + void import(const PresetType& preset_type, const std::string& file_path); + + void add_autoload(const PresetType& preset_type, + const std::string& preset_name, + const std::string& device_name, + const std::string& device_description, + const std::string& device_profile); + + void remove_autoload(const PresetType& preset_type, + const std::string& preset_name, + const std::string& device_name, + const std::string& device_profile); + + auto find_autoload(const PresetType& preset_type, const std::string& device_name, const std::string& device_profile) + -> std::string; + + void autoload(const PresetType& preset_type, const std::string& device_name, const std::string& device_profile); + + auto get_autoload_profiles(const PresetType& preset_type) -> std::vector; + + auto preset_file_exists(const PresetType& preset_type, const std::string& name) -> bool; + + sigc::signal user_output_preset_created; + sigc::signal user_output_preset_removed; + sigc::signal user_input_preset_created; + sigc::signal user_input_preset_removed; + + sigc::signal& profiles)> autoload_input_profiles_changed; + sigc::signal& profiles)> autoload_output_profiles_changed; + + private: + const std::string json_ext = ".json"; + + std::string user_config_dir; + + std::filesystem::path user_presets_dir, user_input_dir, user_output_dir, autoload_input_dir, autoload_output_dir; + + std::vector system_input_dir, system_output_dir; + + GSettings *settings = nullptr, *soe_settings = nullptr, *sie_settings = nullptr; + + GFileMonitor *user_output_monitor = nullptr, *user_input_monitor = nullptr; + + GFileMonitor *autoload_output_monitor = nullptr, *autoload_input_monitor = nullptr; + + void create_user_directory(const std::filesystem::path& path); + + void save_blocklist(const PresetType& preset_type, nlohmann::json& json); + + auto load_blocklist(const PresetType& preset_type, const nlohmann::json& json) -> bool; + + void notify_error(const PresetError& preset_error, const std::string& plugin_name = ""); + + auto create_wrapper(std::string_view filter_name) -> std::optional>; +}; diff --git a/include/presets_menu.hpp b/include/presets_menu.hpp new file mode 100644 index 0000000..2c0cd96 --- /dev/null +++ b/include/presets_menu.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "application.hpp" +#include "preset_type.hpp" +#include "tags_resources.hpp" + +namespace ui::presets_menu { + +G_BEGIN_DECLS + +#define EE_TYPE_PRESETS_MENU (presets_menu_get_type()) + +G_DECLARE_FINAL_TYPE(PresetsMenu, presets_menu, EE, PRESETS_MENU, GtkPopover) + +G_END_DECLS + +auto create() -> PresetsMenu*; + +void setup(PresetsMenu* self, app::Application* application); + +} // namespace ui::presets_menu diff --git a/include/resampler.hpp b/include/resampler.hpp new file mode 100644 index 0000000..e93a060 --- /dev/null +++ b/include/resampler.hpp @@ -0,0 +1,73 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include + +class Resampler { + public: + Resampler(const int& input_rate, const int& output_rate); + Resampler(const Resampler&) = delete; + auto operator=(const Resampler&) -> Resampler& = delete; + Resampler(const Resampler&&) = delete; + auto operator=(const Resampler&&) -> Resampler& = delete; + ~Resampler(); + + template + auto process(const T& input, const bool& end_of_input) -> std::vector { + output.resize(std::ceil(1.5 * resample_ratio * input.size())); + + // The number of frames of data pointed to by data_in + src_data.input_frames = input.size(); + + // A pointer to the input data samples + src_data.data_in = input.data(); + + // Maximum number of frames pointed to by data_out + src_data.output_frames = static_cast(output.size()); + + // A pointer to the output data samples + src_data.data_out = output.data(); + + // Equal to output_sample_rate / input_sample_rate + src_data.src_ratio = resample_ratio; + + // Equal to 0 if more input data is available and 1 otherwise + src_data.end_of_input = static_cast(end_of_input); + + src_process(src_state, &src_data); + + output.resize(src_data.output_frames_gen); + + return output; + } + + private: + float resample_ratio = 1.0F; + + SRC_STATE* src_state = nullptr; + + SRC_DATA src_data{}; + + std::vector output; +}; diff --git a/include/reverb.hpp b/include/reverb.hpp new file mode 100644 index 0000000..d213771 --- /dev/null +++ b/include/reverb.hpp @@ -0,0 +1,45 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class Reverb : public PluginBase { + public: + Reverb(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + Reverb(const Reverb&) = delete; + auto operator=(const Reverb&) -> Reverb& = delete; + Reverb(const Reverb&&) = delete; + auto operator=(const Reverb&&) -> Reverb& = delete; + ~Reverb() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/reverb_preset.hpp b/include/reverb_preset.hpp new file mode 100644 index 0000000..709e5c6 --- /dev/null +++ b/include/reverb_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class ReverbPreset : public PluginPresetBase { + public: + ReverbPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/reverb_ui.hpp b/include/reverb_ui.hpp new file mode 100644 index 0000000..fe2fec6 --- /dev/null +++ b/include/reverb_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::reverb_box { + +G_BEGIN_DECLS + +#define EE_TYPE_REVERB_BOX (reverb_box_get_type()) + +G_DECLARE_FINAL_TYPE(ReverbBox, reverb_box, EE, REVERB_BOX, GtkBox) + +G_END_DECLS + +auto create() -> ReverbBox*; + +void setup(ReverbBox* self, std::shared_ptr reverb, const std::string& schema_path); + +} // namespace ui::reverb_box diff --git a/include/rnnoise.hpp b/include/rnnoise.hpp new file mode 100644 index 0000000..d528df7 --- /dev/null +++ b/include/rnnoise.hpp @@ -0,0 +1,128 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#ifdef RNNOISE_AVAILABLE +#include +#endif + +#include +#include "plugin_base.hpp" +#include "resampler.hpp" + +class RNNoise : public PluginBase { + public: + RNNoise(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager); + RNNoise(const RNNoise&) = delete; + auto operator=(const RNNoise&) -> RNNoise& = delete; + RNNoise(const RNNoise&&) = delete; + auto operator=(const RNNoise&&) -> RNNoise& = delete; + ~RNNoise() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + float latency_value = 0.0F; + + bool standard_model = true; + + sigc::signal model_changed; + + private: + bool resample = false; + bool notify_latency = false; + bool rnnoise_ready = false; + bool resampler_ready = false; + + uint blocksize = 480U; + uint rnnoise_rate = 48000U; + uint latency_n_frames = 0U; + + const float inv_short_max = 1.0F / (SHRT_MAX + 1); + + std::deque deque_out_L, deque_out_R; + + std::vector data_L, data_R; + std::vector resampled_data_L, resampled_data_R; + + std::unique_ptr resampler_inL, resampler_outL; + std::unique_ptr resampler_inR, resampler_outR; + +#ifdef RNNOISE_AVAILABLE + + RNNModel* model = nullptr; + + DenoiseState *state_left = nullptr, *state_right = nullptr; + + auto get_model_from_file() -> RNNModel*; + + void free_rnnoise(); + + template + void remove_noise(const T1& left_in, const T1& right_in, T2& out_L, T2& out_R) { + for (const auto& v : left_in) { + data_L.push_back(v); + + if (data_L.size() == blocksize) { + if (state_left != nullptr) { + std::ranges::for_each(data_L, [](auto& v) { v *= static_cast(SHRT_MAX + 1); }); + + rnnoise_process_frame(state_left, data_L.data(), data_L.data()); + + std::ranges::for_each(data_L, [&](auto& v) { v *= inv_short_max; }); + } + + for (const auto& v : data_L) { + out_L.push_back(v); + } + + data_L.resize(0); + } + } + + for (const auto& v : right_in) { + data_R.push_back(v); + + if (data_R.size() == blocksize) { + if (state_right != nullptr) { + std::ranges::for_each(data_R, [](auto& v) { v *= static_cast(SHRT_MAX + 1); }); + + rnnoise_process_frame(state_right, data_R.data(), data_R.data()); + + std::ranges::for_each(data_R, [&](auto& v) { v *= inv_short_max; }); + } + + for (const auto& v : data_R) { + out_R.push_back(v); + } + + data_R.resize(0); + } + } + } + +#endif +}; diff --git a/include/rnnoise_preset.hpp b/include/rnnoise_preset.hpp new file mode 100644 index 0000000..ff21119 --- /dev/null +++ b/include/rnnoise_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class RNNoisePreset : public PluginPresetBase { + public: + RNNoisePreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/rnnoise_ui.hpp b/include/rnnoise_ui.hpp new file mode 100644 index 0000000..21fb062 --- /dev/null +++ b/include/rnnoise_ui.hpp @@ -0,0 +1,46 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "application.hpp" +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::rnnoise_box { + +G_BEGIN_DECLS + +#define EE_TYPE_RNNOISE_BOX (rnnoise_box_get_type()) + +G_DECLARE_FINAL_TYPE(RNNoiseBox, rnnoise_box, EE, RNNOISE_BOX, GtkBox) + +G_END_DECLS + +auto create() -> RNNoiseBox*; + +void setup(RNNoiseBox* self, + std::shared_ptr rnnoise, + const std::string& schema_path, + app::Application* application); + +} // namespace ui::rnnoise_box diff --git a/include/spectrum.hpp b/include/spectrum.hpp new file mode 100644 index 0000000..0f52a0b --- /dev/null +++ b/include/spectrum.hpp @@ -0,0 +1,61 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include "plugin_base.hpp" + +class Spectrum : public PluginBase { + public: + Spectrum(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + Spectrum(const Spectrum&) = delete; + auto operator=(const Spectrum&) -> Spectrum& = delete; + Spectrum(const Spectrum&&) = delete; + auto operator=(const Spectrum&&) -> Spectrum& = delete; + ~Spectrum() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + sigc::signal)> power; // rate, nbands, magnitudes + + private: + bool fftw_ready = false; + + fftwf_plan plan = nullptr; + + fftwf_complex* complex_output = nullptr; + + std::vector real_input, output; + + uint n_bands = 4096U, total_count = 0U; + + float fft_buffer_duration = 0.0F; +}; diff --git a/include/stereo_tools.hpp b/include/stereo_tools.hpp new file mode 100644 index 0000000..7b5db91 --- /dev/null +++ b/include/stereo_tools.hpp @@ -0,0 +1,50 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "lv2_wrapper.hpp" +#include "plugin_base.hpp" + +class StereoTools : public PluginBase { + public: + StereoTools(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager); + StereoTools(const StereoTools&) = delete; + auto operator=(const StereoTools&) -> StereoTools& = delete; + StereoTools(const StereoTools&&) = delete; + auto operator=(const StereoTools&&) -> StereoTools& = delete; + ~StereoTools() override; + + void setup() override; + + void process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) override; + + auto get_latency_seconds() -> float override; + + double correlation_port_value = 0.0; + + private: + std::unique_ptr lv2_wrapper; +}; diff --git a/include/stereo_tools_preset.hpp b/include/stereo_tools_preset.hpp new file mode 100644 index 0000000..9fea329 --- /dev/null +++ b/include/stereo_tools_preset.hpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "plugin_preset_base.hpp" + +class StereoToolsPreset : public PluginPresetBase { + public: + StereoToolsPreset(); + + private: + void save(nlohmann::json& json, const std::string& section, GSettings* settings) override; + + void load(const nlohmann::json& json, const std::string& section, GSettings* settings) override; +}; diff --git a/include/stereo_tools_ui.hpp b/include/stereo_tools_ui.hpp new file mode 100644 index 0000000..524695f --- /dev/null +++ b/include/stereo_tools_ui.hpp @@ -0,0 +1,41 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include "effects_base.hpp" +#include "tags_resources.hpp" +#include "ui_helpers.hpp" + +namespace ui::stereo_tools_box { + +G_BEGIN_DECLS + +#define EE_TYPE_STEREO_TOOLS_BOX (stereo_tools_box_get_type()) + +G_DECLARE_FINAL_TYPE(StereoToolsBox, stereo_tools_box, EE, STEREO_TOOLS_BOX, GtkBox) + +G_END_DECLS + +auto create() -> StereoToolsBox*; + +void setup(StereoToolsBox* self, std::shared_ptr stereo_tools, const std::string& schema_path); + +} // namespace ui::stereo_tools_box diff --git a/include/stream_input_effects.hpp b/include/stream_input_effects.hpp new file mode 100644 index 0000000..a005cff --- /dev/null +++ b/include/stream_input_effects.hpp @@ -0,0 +1,49 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "effects_base.hpp" + +class StreamInputEffects : public EffectsBase { + public: + StreamInputEffects(PipeManager* pipe_manager); + StreamInputEffects(const StreamInputEffects&) = delete; + auto operator=(const StreamInputEffects&) -> StreamInputEffects& = delete; + StreamInputEffects(const StreamInputEffects&&) = delete; + auto operator=(const StreamInputEffects&&) -> StreamInputEffects& = delete; + ~StreamInputEffects() override; + + void set_bypass(const bool& state); + + void set_listen_to_mic(const bool& state); + + private: + bool bypass = false; + + void connect_filters(const bool& bypass = false); + + void disconnect_filters(); + + auto apps_want_to_play() -> bool; + + void on_app_added(const NodeInfo node_info); + + void on_link_changed(const LinkInfo link_info); +}; diff --git a/include/stream_output_effects.hpp b/include/stream_output_effects.hpp new file mode 100644 index 0000000..acf0268 --- /dev/null +++ b/include/stream_output_effects.hpp @@ -0,0 +1,47 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include "effects_base.hpp" + +class StreamOutputEffects : public EffectsBase { + public: + StreamOutputEffects(PipeManager* pipe_manager); + StreamOutputEffects(const StreamOutputEffects&) = delete; + auto operator=(const StreamOutputEffects&) -> StreamOutputEffects& = delete; + StreamOutputEffects(const StreamOutputEffects&&) = delete; + auto operator=(const StreamOutputEffects&&) -> StreamOutputEffects& = delete; + ~StreamOutputEffects() override; + + void set_bypass(const bool& state); + + private: + bool bypass = false; + + void connect_filters(const bool& bypass = false); + + void disconnect_filters(); + + auto apps_want_to_play() -> bool; + + void on_app_added(const NodeInfo node_info); + + void on_link_changed(const LinkInfo link_info); +}; diff --git a/include/string_literal_wrapper.hpp b/include/string_literal_wrapper.hpp new file mode 100644 index 0000000..2e88369 --- /dev/null +++ b/include/string_literal_wrapper.hpp @@ -0,0 +1,30 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include + +template +struct StringLiteralWrapper { + constexpr StringLiteralWrapper(const char (&str)[N]) : msg(std::to_array(str)) {} + + std::array msg; +}; diff --git a/include/tags_app.hpp b/include/tags_app.hpp new file mode 100644 index 0000000..474cbe6 --- /dev/null +++ b/include/tags_app.hpp @@ -0,0 +1,34 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include + +namespace tags::app { + +inline constexpr auto id = "com.github.wwmm.easyeffects"; + +inline constexpr auto path = "/com/github/wwmm/easyeffects"; + +inline constexpr auto path_stream_inputs = "/com/github/wwmm/easyeffects/streaminputs/"; + +inline constexpr auto path_stream_outputs = "/com/github/wwmm/easyeffects/streamoutputs/"; + +} // namespace tags::app diff --git a/include/tags_equalizer.hpp b/include/tags_equalizer.hpp new file mode 100644 index 0000000..b3a2fbf --- /dev/null +++ b/include/tags_equalizer.hpp @@ -0,0 +1,196 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include + +namespace tags::equalizer { + +// bands + +constexpr auto band_id = std::to_array( + {"band0", "band1", "band2", "band3", "band4", "band5", "band6", "band7", "band8", "band9", "band10", + "band11", "band12", "band13", "band14", "band15", "band16", "band17", "band18", "band19", "band20", "band21", + "band22", "band23", "band24", "band25", "band26", "band27", "band28", "band29", "band30", "band31"}); + +inline constexpr char band_type[][13] = { + {"band0-type"}, {"band1-type"}, {"band2-type"}, {"band3-type"}, {"band4-type"}, {"band5-type"}, + {"band6-type"}, {"band7-type"}, {"band8-type"}, {"band9-type"}, {"band10-type"}, {"band11-type"}, + {"band12-type"}, {"band13-type"}, {"band14-type"}, {"band15-type"}, {"band16-type"}, {"band17-type"}, + {"band18-type"}, {"band19-type"}, {"band20-type"}, {"band21-type"}, {"band22-type"}, {"band23-type"}, + {"band24-type"}, {"band25-type"}, {"band26-type"}, {"band27-type"}, {"band28-type"}, {"band29-type"}, + {"band30-type"}, {"band31-type"}}; + +inline constexpr char band_mode[][13] = { + {"band0-mode"}, {"band1-mode"}, {"band2-mode"}, {"band3-mode"}, {"band4-mode"}, {"band5-mode"}, + {"band6-mode"}, {"band7-mode"}, {"band8-mode"}, {"band9-mode"}, {"band10-mode"}, {"band11-mode"}, + {"band12-mode"}, {"band13-mode"}, {"band14-mode"}, {"band15-mode"}, {"band16-mode"}, {"band17-mode"}, + {"band18-mode"}, {"band19-mode"}, {"band20-mode"}, {"band21-mode"}, {"band22-mode"}, {"band23-mode"}, + {"band24-mode"}, {"band25-mode"}, {"band26-mode"}, {"band27-mode"}, {"band28-mode"}, {"band29-mode"}, + {"band30-mode"}, {"band31-mode"}}; + +inline constexpr char band_slope[][14] = { + {"band0-slope"}, {"band1-slope"}, {"band2-slope"}, {"band3-slope"}, {"band4-slope"}, {"band5-slope"}, + {"band6-slope"}, {"band7-slope"}, {"band8-slope"}, {"band9-slope"}, {"band10-slope"}, {"band11-slope"}, + {"band12-slope"}, {"band13-slope"}, {"band14-slope"}, {"band15-slope"}, {"band16-slope"}, {"band17-slope"}, + {"band18-slope"}, {"band19-slope"}, {"band20-slope"}, {"band21-slope"}, {"band22-slope"}, {"band23-slope"}, + {"band24-slope"}, {"band25-slope"}, {"band26-slope"}, {"band27-slope"}, {"band28-slope"}, {"band29-slope"}, + {"band30-slope"}, {"band31-slope"}}; + +inline constexpr char band_solo[][13] = { + {"band0-solo"}, {"band1-solo"}, {"band2-solo"}, {"band3-solo"}, {"band4-solo"}, {"band5-solo"}, + {"band6-solo"}, {"band7-solo"}, {"band8-solo"}, {"band9-solo"}, {"band10-solo"}, {"band11-solo"}, + {"band12-solo"}, {"band13-solo"}, {"band14-solo"}, {"band15-solo"}, {"band16-solo"}, {"band17-solo"}, + {"band18-solo"}, {"band19-solo"}, {"band20-solo"}, {"band21-solo"}, {"band22-solo"}, {"band23-solo"}, + {"band24-solo"}, {"band25-solo"}, {"band26-solo"}, {"band27-solo"}, {"band28-solo"}, {"band29-solo"}, + {"band30-solo"}, {"band31-solo"}}; + +inline constexpr char band_mute[][13] = { + {"band0-mute"}, {"band1-mute"}, {"band2-mute"}, {"band3-mute"}, {"band4-mute"}, {"band5-mute"}, + {"band6-mute"}, {"band7-mute"}, {"band8-mute"}, {"band9-mute"}, {"band10-mute"}, {"band11-mute"}, + {"band12-mute"}, {"band13-mute"}, {"band14-mute"}, {"band15-mute"}, {"band16-mute"}, {"band17-mute"}, + {"band18-mute"}, {"band19-mute"}, {"band20-mute"}, {"band21-mute"}, {"band22-mute"}, {"band23-mute"}, + {"band24-mute"}, {"band25-mute"}, {"band26-mute"}, {"band27-mute"}, {"band28-mute"}, {"band29-mute"}, + {"band30-mute"}, {"band31-mute"}}; + +inline constexpr char band_frequency[][18] = { + {"band0-frequency"}, {"band1-frequency"}, {"band2-frequency"}, {"band3-frequency"}, {"band4-frequency"}, + {"band5-frequency"}, {"band6-frequency"}, {"band7-frequency"}, {"band8-frequency"}, {"band9-frequency"}, + {"band10-frequency"}, {"band11-frequency"}, {"band12-frequency"}, {"band13-frequency"}, {"band14-frequency"}, + {"band15-frequency"}, {"band16-frequency"}, {"band17-frequency"}, {"band18-frequency"}, {"band19-frequency"}, + {"band20-frequency"}, {"band21-frequency"}, {"band22-frequency"}, {"band23-frequency"}, {"band24-frequency"}, + {"band25-frequency"}, {"band26-frequency"}, {"band27-frequency"}, {"band28-frequency"}, {"band29-frequency"}, + {"band30-frequency"}, {"band31-frequency"}}; + +inline constexpr char band_q[][10] = { + {"band0-q"}, {"band1-q"}, {"band2-q"}, {"band3-q"}, {"band4-q"}, {"band5-q"}, {"band6-q"}, {"band7-q"}, + {"band8-q"}, {"band9-q"}, {"band10-q"}, {"band11-q"}, {"band12-q"}, {"band13-q"}, {"band14-q"}, {"band15-q"}, + {"band16-q"}, {"band17-q"}, {"band18-q"}, {"band19-q"}, {"band20-q"}, {"band21-q"}, {"band22-q"}, {"band23-q"}, + {"band24-q"}, {"band25-q"}, {"band26-q"}, {"band27-q"}, {"band28-q"}, {"band29-q"}, {"band30-q"}, {"band31-q"}}; + +inline constexpr char band_gain[][13] = { + {"band0-gain"}, {"band1-gain"}, {"band2-gain"}, {"band3-gain"}, {"band4-gain"}, {"band5-gain"}, + {"band6-gain"}, {"band7-gain"}, {"band8-gain"}, {"band9-gain"}, {"band10-gain"}, {"band11-gain"}, + {"band12-gain"}, {"band13-gain"}, {"band14-gain"}, {"band15-gain"}, {"band16-gain"}, {"band17-gain"}, + {"band18-gain"}, {"band19-gain"}, {"band20-gain"}, {"band21-gain"}, {"band22-gain"}, {"band23-gain"}, + {"band24-gain"}, {"band25-gain"}, {"band26-gain"}, {"band27-gain"}, {"band28-gain"}, {"band29-gain"}, + {"band30-gain"}, {"band31-gain"}}; + +// left channel + +inline constexpr char ftl[][8] = {{"ftl_0"}, {"ftl_1"}, {"ftl_2"}, {"ftl_3"}, {"ftl_4"}, {"ftl_5"}, {"ftl_6"}, + {"ftl_7"}, {"ftl_8"}, {"ftl_9"}, {"ftl_10"}, {"ftl_11"}, {"ftl_12"}, {"ftl_13"}, + {"ftl_14"}, {"ftl_15"}, {"ftl_16"}, {"ftl_17"}, {"ftl_18"}, {"ftl_19"}, {"ftl_20"}, + {"ftl_21"}, {"ftl_22"}, {"ftl_23"}, {"ftl_24"}, {"ftl_25"}, {"ftl_26"}, {"ftl_27"}, + {"ftl_28"}, {"ftl_29"}, {"ftl_30"}, {"ftl_31"}}; + +inline constexpr char fml[][8] = {{"fml_0"}, {"fml_1"}, {"fml_2"}, {"fml_3"}, {"fml_4"}, {"fml_5"}, {"fml_6"}, + {"fml_7"}, {"fml_8"}, {"fml_9"}, {"fml_10"}, {"fml_11"}, {"fml_12"}, {"fml_13"}, + {"fml_14"}, {"fml_15"}, {"fml_16"}, {"fml_17"}, {"fml_18"}, {"fml_19"}, {"fml_20"}, + {"fml_21"}, {"fml_22"}, {"fml_23"}, {"fml_24"}, {"fml_25"}, {"fml_26"}, {"fml_27"}, + {"fml_28"}, {"fml_29"}, {"fml_30"}, {"fml_31"}}; + +inline constexpr char sl[][7] = {{"sl_0"}, {"sl_1"}, {"sl_2"}, {"sl_3"}, {"sl_4"}, {"sl_5"}, {"sl_6"}, + {"sl_7"}, {"sl_8"}, {"sl_9"}, {"sl_10"}, {"sl_11"}, {"sl_12"}, {"sl_13"}, + {"sl_14"}, {"sl_15"}, {"sl_16"}, {"sl_17"}, {"sl_18"}, {"sl_19"}, {"sl_20"}, + {"sl_21"}, {"sl_22"}, {"sl_23"}, {"sl_24"}, {"sl_25"}, {"sl_26"}, {"sl_27"}, + {"sl_28"}, {"sl_29"}, {"sl_30"}, {"sl_31"}}; + +inline constexpr char xsl[][8] = {{"xsl_0"}, {"xsl_1"}, {"xsl_2"}, {"xsl_3"}, {"xsl_4"}, {"xsl_5"}, {"xsl_6"}, + {"xsl_7"}, {"xsl_8"}, {"xsl_9"}, {"xsl_10"}, {"xsl_11"}, {"xsl_12"}, {"xsl_13"}, + {"xsl_14"}, {"xsl_15"}, {"xsl_16"}, {"xsl_17"}, {"xsl_18"}, {"xsl_19"}, {"xsl_20"}, + {"xsl_21"}, {"xsl_22"}, {"xsl_23"}, {"xsl_24"}, {"xsl_25"}, {"xsl_26"}, {"xsl_27"}, + {"xsl_28"}, {"xsl_29"}, {"xsl_30"}, {"xsl_31"}}; + +inline constexpr char xml[][8] = {{"xml_0"}, {"xml_1"}, {"xml_2"}, {"xml_3"}, {"xml_4"}, {"xml_5"}, {"xml_6"}, + {"xml_7"}, {"xml_8"}, {"xml_9"}, {"xml_10"}, {"xml_11"}, {"xml_12"}, {"xml_13"}, + {"xml_14"}, {"xml_15"}, {"xml_16"}, {"xml_17"}, {"xml_18"}, {"xml_19"}, {"xml_20"}, + {"xml_21"}, {"xml_22"}, {"xml_23"}, {"xml_24"}, {"xml_25"}, {"xml_26"}, {"xml_27"}, + {"xml_28"}, {"xml_29"}, {"xml_30"}, {"xml_31"}}; + +inline constexpr char ql[][7] = {{"ql_0"}, {"ql_1"}, {"ql_2"}, {"ql_3"}, {"ql_4"}, {"ql_5"}, {"ql_6"}, + {"ql_7"}, {"ql_8"}, {"ql_9"}, {"ql_10"}, {"ql_11"}, {"ql_12"}, {"ql_13"}, + {"ql_14"}, {"ql_15"}, {"ql_16"}, {"ql_17"}, {"ql_18"}, {"ql_19"}, {"ql_20"}, + {"ql_21"}, {"ql_22"}, {"ql_23"}, {"ql_24"}, {"ql_25"}, {"ql_26"}, {"ql_27"}, + {"ql_28"}, {"ql_29"}, {"ql_30"}, {"ql_31"}}; + +inline constexpr char fl[][7] = {{"fl_0"}, {"fl_1"}, {"fl_2"}, {"fl_3"}, {"fl_4"}, {"fl_5"}, {"fl_6"}, + {"fl_7"}, {"fl_8"}, {"fl_9"}, {"fl_10"}, {"fl_11"}, {"fl_12"}, {"fl_13"}, + {"fl_14"}, {"fl_15"}, {"fl_16"}, {"fl_17"}, {"fl_18"}, {"fl_19"}, {"fl_20"}, + {"fl_21"}, {"fl_22"}, {"fl_23"}, {"fl_24"}, {"fl_25"}, {"fl_26"}, {"fl_27"}, + {"fl_28"}, {"fl_29"}, {"fl_30"}, {"fl_31"}}; + +inline constexpr char gl[][7] = {{"gl_0"}, {"gl_1"}, {"gl_2"}, {"gl_3"}, {"gl_4"}, {"gl_5"}, {"gl_6"}, + {"gl_7"}, {"gl_8"}, {"gl_9"}, {"gl_10"}, {"gl_11"}, {"gl_12"}, {"gl_13"}, + {"gl_14"}, {"gl_15"}, {"gl_16"}, {"gl_17"}, {"gl_18"}, {"gl_19"}, {"gl_20"}, + {"gl_21"}, {"gl_22"}, {"gl_23"}, {"gl_24"}, {"gl_25"}, {"gl_26"}, {"gl_27"}, + {"gl_28"}, {"gl_29"}, {"gl_30"}, {"gl_31"}}; + +// right channel + +inline constexpr char ftr[][8] = {{"ftr_0"}, {"ftr_1"}, {"ftr_2"}, {"ftr_3"}, {"ftr_4"}, {"ftr_5"}, {"ftr_6"}, + {"ftr_7"}, {"ftr_8"}, {"ftr_9"}, {"ftr_10"}, {"ftr_11"}, {"ftr_12"}, {"ftr_13"}, + {"ftr_14"}, {"ftr_15"}, {"ftr_16"}, {"ftr_17"}, {"ftr_18"}, {"ftr_19"}, {"ftr_20"}, + {"ftr_21"}, {"ftr_22"}, {"ftr_23"}, {"ftr_24"}, {"ftr_25"}, {"ftr_26"}, {"ftr_27"}, + {"ftr_28"}, {"ftr_29"}, {"ftr_30"}, {"ftr_31"}}; + +inline constexpr char fmr[][8] = {{"fmr_0"}, {"fmr_1"}, {"fmr_2"}, {"fmr_3"}, {"fmr_4"}, {"fmr_5"}, {"fmr_6"}, + {"fmr_7"}, {"fmr_8"}, {"fmr_9"}, {"fmr_10"}, {"fmr_11"}, {"fmr_12"}, {"fmr_13"}, + {"fmr_14"}, {"fmr_15"}, {"fmr_16"}, {"fmr_17"}, {"fmr_18"}, {"fmr_19"}, {"fmr_20"}, + {"fmr_21"}, {"fmr_22"}, {"fmr_23"}, {"fmr_24"}, {"fmr_25"}, {"fmr_26"}, {"fmr_27"}, + {"fmr_28"}, {"fmr_29"}, {"fmr_30"}, {"fmr_31"}}; + +inline constexpr char sr[][7] = {{"sr_0"}, {"sr_1"}, {"sr_2"}, {"sr_3"}, {"sr_4"}, {"sr_5"}, {"sr_6"}, + {"sr_7"}, {"sr_8"}, {"sr_9"}, {"sr_10"}, {"sr_11"}, {"sr_12"}, {"sr_13"}, + {"sr_14"}, {"sr_15"}, {"sr_16"}, {"sr_17"}, {"sr_18"}, {"sr_19"}, {"sr_20"}, + {"sr_21"}, {"sr_22"}, {"sr_23"}, {"sr_24"}, {"sr_25"}, {"sr_26"}, {"sr_27"}, + {"sr_28"}, {"sr_29"}, {"sr_30"}, {"sr_31"}}; + +inline constexpr char xsr[][8] = {{"xsr_0"}, {"xsr_1"}, {"xsr_2"}, {"xsr_3"}, {"xsr_4"}, {"xsr_5"}, {"xsr_6"}, + {"xsr_7"}, {"xsr_8"}, {"xsr_9"}, {"xsr_10"}, {"xsr_11"}, {"xsr_12"}, {"xsr_13"}, + {"xsr_14"}, {"xsr_15"}, {"xsr_16"}, {"xsr_17"}, {"xsr_18"}, {"xsr_19"}, {"xsr_20"}, + {"xsr_21"}, {"xsr_22"}, {"xsr_23"}, {"xsr_24"}, {"xsr_25"}, {"xsr_26"}, {"xsr_27"}, + {"xsr_28"}, {"xsr_29"}, {"xsr_30"}, {"xsr_31"}}; + +inline constexpr char xmr[][8] = {{"xmr_0"}, {"xmr_1"}, {"xmr_2"}, {"xmr_3"}, {"xmr_4"}, {"xmr_5"}, {"xmr_6"}, + {"xmr_7"}, {"xmr_8"}, {"xmr_9"}, {"xmr_10"}, {"xmr_11"}, {"xmr_12"}, {"xmr_13"}, + {"xmr_14"}, {"xmr_15"}, {"xmr_16"}, {"xmr_17"}, {"xmr_18"}, {"xmr_19"}, {"xmr_20"}, + {"xmr_21"}, {"xmr_22"}, {"xmr_23"}, {"xmr_24"}, {"xmr_25"}, {"xmr_26"}, {"xmr_27"}, + {"xmr_28"}, {"xmr_29"}, {"xmr_30"}, {"xmr_31"}}; + +inline constexpr char qr[][7] = {{"qr_0"}, {"qr_1"}, {"qr_2"}, {"qr_3"}, {"qr_4"}, {"qr_5"}, {"qr_6"}, + {"qr_7"}, {"qr_8"}, {"qr_9"}, {"qr_10"}, {"qr_11"}, {"qr_12"}, {"qr_13"}, + {"qr_14"}, {"qr_15"}, {"qr_16"}, {"qr_17"}, {"qr_18"}, {"qr_19"}, {"qr_20"}, + {"qr_21"}, {"qr_22"}, {"qr_23"}, {"qr_24"}, {"qr_25"}, {"qr_26"}, {"qr_27"}, + {"qr_28"}, {"qr_29"}, {"qr_30"}, {"qr_31"}}; + +inline constexpr char fr[][7] = {{"fr_0"}, {"fr_1"}, {"fr_2"}, {"fr_3"}, {"fr_4"}, {"fr_5"}, {"fr_6"}, + {"fr_7"}, {"fr_8"}, {"fr_9"}, {"fr_10"}, {"fr_11"}, {"fr_12"}, {"fr_13"}, + {"fr_14"}, {"fr_15"}, {"fr_16"}, {"fr_17"}, {"fr_18"}, {"fr_19"}, {"fr_20"}, + {"fr_21"}, {"fr_22"}, {"fr_23"}, {"fr_24"}, {"fr_25"}, {"fr_26"}, {"fr_27"}, + {"fr_28"}, {"fr_29"}, {"fr_30"}, {"fr_31"}}; + +inline constexpr char gr[][7] = {{"gr_0"}, {"gr_1"}, {"gr_2"}, {"gr_3"}, {"gr_4"}, {"gr_5"}, {"gr_6"}, + {"gr_7"}, {"gr_8"}, {"gr_9"}, {"gr_10"}, {"gr_11"}, {"gr_12"}, {"gr_13"}, + {"gr_14"}, {"gr_15"}, {"gr_16"}, {"gr_17"}, {"gr_18"}, {"gr_19"}, {"gr_20"}, + {"gr_21"}, {"gr_22"}, {"gr_23"}, {"gr_24"}, {"gr_25"}, {"gr_26"}, {"gr_27"}, + {"gr_28"}, {"gr_29"}, {"gr_30"}, {"gr_31"}}; + +} // namespace tags::equalizer \ No newline at end of file diff --git a/include/tags_multiband_compressor.hpp b/include/tags_multiband_compressor.hpp new file mode 100644 index 0000000..3f50d1b --- /dev/null +++ b/include/tags_multiband_compressor.hpp @@ -0,0 +1,189 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +namespace tags::multiband_compressor { + +// gsettings keys tags + +inline constexpr char band_enable[][14] = {{"enable-band0"}, {"enable-band1"}, {"enable-band2"}, {"enable-band3"}, + {"enable-band4"}, {"enable-band5"}, {"enable-band6"}, {"enable-band7"}}; + +inline constexpr char band_compression_mode[][19] = { + {"compression-mode0"}, {"compression-mode1"}, {"compression-mode2"}, {"compression-mode3"}, + {"compression-mode4"}, {"compression-mode5"}, {"compression-mode6"}, {"compression-mode7"}}; + +inline constexpr char band_compressor_enable[][20] = { + {"compressor-enable0"}, {"compressor-enable1"}, {"compressor-enable2"}, {"compressor-enable3"}, + {"compressor-enable4"}, {"compressor-enable5"}, {"compressor-enable6"}, {"compressor-enable7"}}; + +inline constexpr char band_split_frequency[][18] = {{"split-frequency0"}, {"split-frequency1"}, {"split-frequency2"}, + {"split-frequency3"}, {"split-frequency4"}, {"split-frequency5"}, + {"split-frequency6"}, {"split-frequency7"}}; + +inline constexpr char band_mute[][7] = {{"mute0"}, {"mute1"}, {"mute2"}, {"mute3"}, + {"mute4"}, {"mute5"}, {"mute6"}, {"mute7"}}; + +inline constexpr char band_solo[][7] = {{"solo0"}, {"solo1"}, {"solo2"}, {"solo3"}, + {"solo4"}, {"solo5"}, {"solo6"}, {"solo7"}}; + +inline constexpr char band_lowcut_filter[][33] = { + {"sidechain-custom-lowcut-filter0"}, {"sidechain-custom-lowcut-filter1"}, {"sidechain-custom-lowcut-filter2"}, + {"sidechain-custom-lowcut-filter3"}, {"sidechain-custom-lowcut-filter4"}, {"sidechain-custom-lowcut-filter5"}, + {"sidechain-custom-lowcut-filter6"}, {"sidechain-custom-lowcut-filter7"}}; + +inline constexpr char band_highcut_filter[][34] = { + {"sidechain-custom-highcut-filter0"}, {"sidechain-custom-highcut-filter1"}, {"sidechain-custom-highcut-filter2"}, + {"sidechain-custom-highcut-filter3"}, {"sidechain-custom-highcut-filter4"}, {"sidechain-custom-highcut-filter5"}, + {"sidechain-custom-highcut-filter6"}, {"sidechain-custom-highcut-filter7"}}; + +inline constexpr char band_external_sidechain[][21] = { + {"external-sidechain0"}, {"external-sidechain1"}, {"external-sidechain2"}, {"external-sidechain3"}, + {"external-sidechain4"}, {"external-sidechain5"}, {"external-sidechain6"}, {"external-sidechain7"}}; + +inline constexpr char band_sidechain_mode[][17] = {{"sidechain-mode0"}, {"sidechain-mode1"}, {"sidechain-mode2"}, + {"sidechain-mode3"}, {"sidechain-mode4"}, {"sidechain-mode5"}, + {"sidechain-mode6"}, {"sidechain-mode7"}}; + +inline constexpr char band_sidechain_source[][19] = { + {"sidechain-source0"}, {"sidechain-source1"}, {"sidechain-source2"}, {"sidechain-source3"}, + {"sidechain-source4"}, {"sidechain-source5"}, {"sidechain-source6"}, {"sidechain-source7"}}; + +inline constexpr char band_lowcut_filter_frequency[][29] = { + {"sidechain-lowcut-frequency0"}, {"sidechain-lowcut-frequency1"}, {"sidechain-lowcut-frequency2"}, + {"sidechain-lowcut-frequency3"}, {"sidechain-lowcut-frequency4"}, {"sidechain-lowcut-frequency5"}, + {"sidechain-lowcut-frequency6"}, {"sidechain-lowcut-frequency7"}}; + +inline constexpr char band_highcut_filter_frequency[][30] = { + {"sidechain-highcut-frequency0"}, {"sidechain-highcut-frequency1"}, {"sidechain-highcut-frequency2"}, + {"sidechain-highcut-frequency3"}, {"sidechain-highcut-frequency4"}, {"sidechain-highcut-frequency5"}, + {"sidechain-highcut-frequency6"}, {"sidechain-highcut-frequency7"}}; + +inline constexpr char band_attack_time[][14] = {{"attack-time0"}, {"attack-time1"}, {"attack-time2"}, {"attack-time3"}, + {"attack-time4"}, {"attack-time5"}, {"attack-time6"}, {"attack-time7"}}; + +inline constexpr char band_attack_threshold[][19] = { + {"attack-threshold0"}, {"attack-threshold1"}, {"attack-threshold2"}, {"attack-threshold3"}, + {"attack-threshold4"}, {"attack-threshold5"}, {"attack-threshold6"}, {"attack-threshold7"}}; + +inline constexpr char band_release_time[][15] = {{"release-time0"}, {"release-time1"}, {"release-time2"}, + {"release-time3"}, {"release-time4"}, {"release-time5"}, + {"release-time6"}, {"release-time7"}}; + +inline constexpr char band_release_threshold[][20] = { + {"release-threshold0"}, {"release-threshold1"}, {"release-threshold2"}, {"release-threshold3"}, + {"release-threshold4"}, {"release-threshold5"}, {"release-threshold6"}, {"release-threshold7"}}; + +inline constexpr char band_ratio[][8] = {{"ratio0"}, {"ratio1"}, {"ratio2"}, {"ratio3"}, + {"ratio4"}, {"ratio5"}, {"ratio6"}, {"ratio7"}}; + +inline constexpr char band_knee[][7] = {{"knee0"}, {"knee1"}, {"knee2"}, {"knee3"}, + {"knee4"}, {"knee5"}, {"knee6"}, {"knee7"}}; + +inline constexpr char band_makeup[][9] = {{"makeup0"}, {"makeup1"}, {"makeup2"}, {"makeup3"}, + {"makeup4"}, {"makeup5"}, {"makeup6"}, {"makeup7"}}; + +inline constexpr char band_sidechain_preamp[][19] = { + {"sidechain-preamp0"}, {"sidechain-preamp1"}, {"sidechain-preamp2"}, {"sidechain-preamp3"}, + {"sidechain-preamp4"}, {"sidechain-preamp5"}, {"sidechain-preamp6"}, {"sidechain-preamp7"}}; + +inline constexpr char band_sidechain_reactivity[][23] = { + {"sidechain-reactivity0"}, {"sidechain-reactivity1"}, {"sidechain-reactivity2"}, {"sidechain-reactivity3"}, + {"sidechain-reactivity4"}, {"sidechain-reactivity5"}, {"sidechain-reactivity6"}, {"sidechain-reactivity7"}}; + +inline constexpr char band_sidechain_lookahead[][22] = { + {"sidechain-lookahead0"}, {"sidechain-lookahead1"}, {"sidechain-lookahead2"}, {"sidechain-lookahead3"}, + {"sidechain-lookahead4"}, {"sidechain-lookahead5"}, {"sidechain-lookahead6"}, {"sidechain-lookahead7"}}; + +inline constexpr char band_boost_amount[][15] = {{"boost-amount0"}, {"boost-amount1"}, {"boost-amount2"}, + {"boost-amount3"}, {"boost-amount4"}, {"boost-amount5"}, + {"boost-amount6"}, {"boost-amount7"}}; + +inline constexpr char band_boost_threshold[][18] = {{"boost-threshold0"}, {"boost-threshold1"}, {"boost-threshold2"}, + {"boost-threshold3"}, {"boost-threshold4"}, {"boost-threshold5"}, + {"boost-threshold6"}, {"boost-threshold7"}}; + +// LSP port tags + +inline constexpr char sce[][7] = {{"sce_0"}, {"sce_1"}, {"sce_2"}, {"sce_3"}, + {"sce_4"}, {"sce_5"}, {"sce_6"}, {"sce_7"}}; + +inline constexpr char cbe[][7] = {{"cbe_0"}, {"cbe_1"}, {"cbe_2"}, {"cbe_3"}, + {"cbe_4"}, {"cbe_5"}, {"cbe_6"}, {"cbe_7"}}; + +inline constexpr char sf[][6] = {{"sf_0"}, {"sf_1"}, {"sf_2"}, {"sf_3"}, {"sf_4"}, {"sf_5"}, {"sf_6"}, {"sf_7"}}; + +inline constexpr char scs[][7] = {{"scs_0"}, {"scs_1"}, {"scs_2"}, {"scs_3"}, + {"scs_4"}, {"scs_5"}, {"scs_6"}, {"scs_7"}}; + +inline constexpr char scm[][7] = {{"scm_0"}, {"scm_1"}, {"scm_2"}, {"scm_3"}, + {"scm_4"}, {"scm_5"}, {"scm_6"}, {"scm_7"}}; + +inline constexpr char sla[][7] = {{"sla_0"}, {"sla_1"}, {"sla_2"}, {"sla_3"}, + {"sla_4"}, {"sla_5"}, {"sla_6"}, {"sla_7"}}; + +inline constexpr char scr[][7] = {{"scr_0"}, {"scr_1"}, {"scr_2"}, {"scr_3"}, + {"scr_4"}, {"scr_5"}, {"scr_6"}, {"scr_7"}}; + +inline constexpr char scp[][7] = {{"scp_0"}, {"scp_1"}, {"scp_2"}, {"scp_3"}, + {"scp_4"}, {"scp_5"}, {"scp_6"}, {"scp_7"}}; + +inline constexpr char sclc[][8] = {{"sclc_0"}, {"sclc_1"}, {"sclc_2"}, {"sclc_3"}, + {"sclc_4"}, {"sclc_5"}, {"sclc_6"}, {"sclc_7"}}; + +inline constexpr char schc[][8] = {{"schc_0"}, {"schc_1"}, {"schc_2"}, {"schc_3"}, + {"schc_4"}, {"schc_5"}, {"schc_6"}, {"schc_7"}}; + +inline constexpr char sclf[][8] = {{"sclf_0"}, {"sclf_1"}, {"sclf_2"}, {"sclf_3"}, + {"sclf_4"}, {"sclf_5"}, {"sclf_6"}, {"sclf_7"}}; + +inline constexpr char schf[][8] = {{"schf_0"}, {"schf_1"}, {"schf_2"}, {"schf_3"}, + {"schf_4"}, {"schf_5"}, {"schf_6"}, {"schf_7"}}; + +inline constexpr char cm[][6] = {{"cm_0"}, {"cm_1"}, {"cm_2"}, {"cm_3"}, {"cm_4"}, {"cm_5"}, {"cm_6"}, {"cm_7"}}; + +inline constexpr char ce[][6] = {{"ce_0"}, {"ce_1"}, {"ce_2"}, {"ce_3"}, {"ce_4"}, {"ce_5"}, {"ce_6"}, {"ce_7"}}; + +inline constexpr char bs[][6] = {{"bs_0"}, {"bs_1"}, {"bs_2"}, {"bs_3"}, {"bs_4"}, {"bs_5"}, {"bs_6"}, {"bs_7"}}; + +inline constexpr char bm[][6] = {{"bm_0"}, {"bm_1"}, {"bm_2"}, {"bm_3"}, {"bm_4"}, {"bm_5"}, {"bm_6"}, {"bm_7"}}; + +inline constexpr char al[][6] = {{"al_0"}, {"al_1"}, {"al_2"}, {"al_3"}, {"al_4"}, {"al_5"}, {"al_6"}, {"al_7"}}; + +inline constexpr char at[][6] = {{"at_0"}, {"at_1"}, {"at_2"}, {"at_3"}, {"at_4"}, {"at_5"}, {"at_6"}, {"at_7"}}; + +inline constexpr char rrl[][7] = {{"rrl_0"}, {"rrl_1"}, {"rrl_2"}, {"rrl_3"}, + {"rrl_4"}, {"rrl_5"}, {"rrl_6"}, {"rrl_7"}}; + +inline constexpr char rt[][6] = {{"rt_0"}, {"rt_1"}, {"rt_2"}, {"rt_3"}, {"rt_4"}, {"rt_5"}, {"rt_6"}, {"rt_7"}}; + +inline constexpr char cr[][6] = {{"cr_0"}, {"cr_1"}, {"cr_2"}, {"cr_3"}, {"cr_4"}, {"cr_5"}, {"cr_6"}, {"cr_7"}}; + +inline constexpr char kn[][6] = {{"kn_0"}, {"kn_1"}, {"kn_2"}, {"kn_3"}, {"kn_4"}, {"kn_5"}, {"kn_6"}, {"kn_7"}}; + +inline constexpr char bth[][7] = {{"bth_0"}, {"bth_1"}, {"bth_2"}, {"bth_3"}, + {"bth_4"}, {"bth_5"}, {"bth_6"}, {"bth_7"}}; + +inline constexpr char bsa[][7] = {{"bsa_0"}, {"bsa_1"}, {"bsa_2"}, {"bsa_3"}, + {"bsa_4"}, {"bsa_5"}, {"bsa_6"}, {"bsa_7"}}; + +inline constexpr char mk[][6] = {{"mk_0"}, {"mk_1"}, {"mk_2"}, {"mk_3"}, {"mk_4"}, {"mk_5"}, {"mk_6"}, {"mk_7"}}; + +} // namespace tags::multiband_compressor \ No newline at end of file diff --git a/include/tags_pipewire.hpp b/include/tags_pipewire.hpp new file mode 100644 index 0000000..189ad8a --- /dev/null +++ b/include/tags_pipewire.hpp @@ -0,0 +1,44 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +namespace tags::pipewire { + +inline constexpr auto ee_source_name = "easyeffects_source"; + +inline constexpr auto ee_sink_name = "easyeffects_sink"; + +} // namespace tags::pipewire + +namespace tags::pipewire::media_class { + +inline constexpr auto device = "Audio/Device"; + +inline constexpr auto sink = "Audio/Sink"; + +inline constexpr auto source = "Audio/Source"; + +inline constexpr auto virtual_source = "Audio/Source/Virtual"; + +inline constexpr auto input_stream = "Stream/Input/Audio"; + +inline constexpr auto output_stream = "Stream/Output/Audio"; + +} // namespace tags::pipewire::media_class diff --git a/include/tags_plugin_name.hpp b/include/tags_plugin_name.hpp new file mode 100644 index 0000000..16a11c5 --- /dev/null +++ b/include/tags_plugin_name.hpp @@ -0,0 +1,82 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include + +namespace tags::plugin_name { + +inline constexpr auto autogain = "autogain"; + +inline constexpr auto bass_enhancer = "bass_enhancer"; + +inline constexpr auto bass_loudness = "bass_loudness"; + +inline constexpr auto compressor = "compressor"; + +inline constexpr auto convolver = "convolver"; + +inline constexpr auto crossfeed = "crossfeed"; + +inline constexpr auto crystalizer = "crystalizer"; + +inline constexpr auto deesser = "deesser"; + +inline constexpr auto delay = "delay"; + +inline constexpr auto echo_canceller = "echo_canceller"; + +inline constexpr auto equalizer = "equalizer"; + +inline constexpr auto exciter = "exciter"; + +inline constexpr auto filter = "filter"; + +inline constexpr auto gate = "gate"; + +inline constexpr auto limiter = "limiter"; + +inline constexpr auto loudness = "loudness"; + +inline constexpr auto maximizer = "maximizer"; + +inline constexpr auto multiband_compressor = "multiband_compressor"; + +inline constexpr auto multiband_gate = "multiband_gate"; + +inline constexpr auto pitch = "pitch"; + +inline constexpr auto reverb = "reverb"; + +inline constexpr auto rnnoise = "rnnoise"; + +inline constexpr auto stereo_tools = "stereo_tools"; + +inline constexpr auto list = std::to_array( + {autogain, bass_enhancer, bass_loudness, compressor, convolver, crossfeed, crystalizer, deesser, + delay, echo_canceller, equalizer, exciter, filter, gate, limiter, loudness, + maximizer, multiband_compressor, multiband_gate, pitch, reverb, rnnoise, stereo_tools}); + +auto get_translated() -> std::map; + +} // namespace tags::plugin_name diff --git a/include/tags_resources.hpp b/include/tags_resources.hpp new file mode 100644 index 0000000..9012dac --- /dev/null +++ b/include/tags_resources.hpp @@ -0,0 +1,124 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +namespace tags::resources { + +// Custom icon path + +inline constexpr auto icons = "/com/github/wwmm/easyeffects/icons"; + +// Custom css file path + +inline constexpr auto css = "/com/github/wwmm/easyeffects/ui/custom.css"; + +// Path to the widgets xml files + +inline constexpr auto app_info_ui = "/com/github/wwmm/easyeffects/ui/app_info.ui"; + +inline constexpr auto application_window_ui = "/com/github/wwmm/easyeffects/ui/application_window.ui"; + +inline constexpr auto apps_box_ui = "/com/github/wwmm/easyeffects/ui/apps_box.ui"; + +inline constexpr auto autogain_ui = "/com/github/wwmm/easyeffects/ui/autogain.ui"; + +inline constexpr auto autoload_row_ui = "/com/github/wwmm/easyeffects/ui/autoload_row.ui"; + +inline constexpr auto bass_enhancer_ui = "/com/github/wwmm/easyeffects/ui/bass_enhancer.ui"; + +inline constexpr auto bass_loudness_ui = "/com/github/wwmm/easyeffects/ui/bass_loudness.ui"; + +inline constexpr auto blocklist_menu_ui = "/com/github/wwmm/easyeffects/ui/blocklist_menu.ui"; + +inline constexpr auto chart_ui = "/com/github/wwmm/easyeffects/ui/chart.ui"; + +inline constexpr auto compressor_ui = "/com/github/wwmm/easyeffects/ui/compressor.ui"; + +inline constexpr auto convolver_ui = "/com/github/wwmm/easyeffects/ui/convolver.ui"; + +inline constexpr auto convolver_menu_impulses_ui = "/com/github/wwmm/easyeffects/ui/convolver_menu_impulses.ui"; + +inline constexpr auto convolver_menu_combine_ui = "/com/github/wwmm/easyeffects/ui/convolver_menu_combine.ui"; + +inline constexpr auto crossfeed_ui = "/com/github/wwmm/easyeffects/ui/crossfeed.ui"; + +inline constexpr auto crystalizer_ui = "/com/github/wwmm/easyeffects/ui/crystalizer.ui"; + +inline constexpr auto crystalizer_band_ui = "/com/github/wwmm/easyeffects/ui/crystalizer_band.ui"; + +inline constexpr auto deesser_ui = "/com/github/wwmm/easyeffects/ui/deesser.ui"; + +inline constexpr auto delay_ui = "/com/github/wwmm/easyeffects/ui/delay.ui"; + +inline constexpr auto echo_canceller_ui = "/com/github/wwmm/easyeffects/ui/echo_canceller.ui"; + +inline constexpr auto effects_box_ui = "/com/github/wwmm/easyeffects/ui/effects_box.ui"; + +inline constexpr auto equalizer_band_ui = "/com/github/wwmm/easyeffects/ui/equalizer_band.ui"; + +inline constexpr auto equalizer_ui = "/com/github/wwmm/easyeffects/ui/equalizer.ui"; + +inline constexpr auto exciter_ui = "/com/github/wwmm/easyeffects/ui/exciter.ui"; + +inline constexpr auto filter_ui = "/com/github/wwmm/easyeffects/ui/filter.ui"; + +inline constexpr auto gate_ui = "/com/github/wwmm/easyeffects/ui/gate.ui"; + +inline constexpr auto limiter_ui = "/com/github/wwmm/easyeffects/ui/limiter.ui"; + +inline constexpr auto loudness_ui = "/com/github/wwmm/easyeffects/ui/loudness.ui"; + +inline constexpr auto maximizer_ui = "/com/github/wwmm/easyeffects/ui/maximizer.ui"; + +inline constexpr auto multiband_compressor_ui = "/com/github/wwmm/easyeffects/ui/multiband_compressor.ui"; + +inline constexpr auto multiband_compressor_band_ui = "/com/github/wwmm/easyeffects/ui/multiband_compressor_band.ui"; + +inline constexpr auto multiband_gate_ui = "/com/github/wwmm/easyeffects/ui/multiband_gate.ui"; + +inline constexpr auto pipe_manager_box_ui = "/com/github/wwmm/easyeffects/ui/pipe_manager_box.ui"; + +inline constexpr auto pitch_ui = "/com/github/wwmm/easyeffects/ui/pitch.ui"; + +inline constexpr auto plugin_row_ui = "/com/github/wwmm/easyeffects/ui/plugin_row.ui"; + +inline constexpr auto plugins_box_ui = "/com/github/wwmm/easyeffects/ui/plugins_box.ui"; + +inline constexpr auto plugins_menu_ui = "/com/github/wwmm/easyeffects/ui/plugins_menu.ui"; + +inline constexpr auto preferences_general_ui = "/com/github/wwmm/easyeffects/ui/preferences_general.ui"; + +inline constexpr auto preferences_spectrum_ui = "/com/github/wwmm/easyeffects/ui/preferences_spectrum.ui"; + +inline constexpr auto preferences_window_ui = "/com/github/wwmm/easyeffects/ui/preferences_window.ui"; + +inline constexpr auto preset_row_ui = "/com/github/wwmm/easyeffects/ui/preset_row.ui"; + +inline constexpr auto presets_menu_ui = "/com/github/wwmm/easyeffects/ui/presets_menu.ui"; + +inline constexpr auto reverb_ui = "/com/github/wwmm/easyeffects/ui/reverb.ui"; + +inline constexpr auto rnnoise_ui = "/com/github/wwmm/easyeffects/ui/rnnoise.ui"; + +inline constexpr auto shortcuts_ui = "/com/github/wwmm/easyeffects/ui/shortcuts.ui"; + +inline constexpr auto stereo_tools_ui = "/com/github/wwmm/easyeffects/ui/stereo_tools.ui"; + +} // namespace tags::resources diff --git a/include/tags_schema.hpp b/include/tags_schema.hpp new file mode 100644 index 0000000..25bc4ed --- /dev/null +++ b/include/tags_schema.hpp @@ -0,0 +1,280 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +namespace tags::schema { + +inline constexpr auto id_input = "com.github.wwmm.easyeffects.streaminputs"; + +inline constexpr auto id_output = "com.github.wwmm.easyeffects.streamoutputs"; + +} // namespace tags::schema + +namespace tags::schema::autogain { + +inline constexpr auto id = "com.github.wwmm.easyeffects.autogain"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/autogain/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/autogain/"; + +} // namespace tags::schema::autogain + +namespace tags::schema::bass_enhancer { + +inline constexpr auto id = "com.github.wwmm.easyeffects.bassenhancer"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/bassenhancer/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/bassenhancer/"; + +} // namespace tags::schema::bass_enhancer + +namespace tags::schema::bass_loudness { + +inline constexpr auto id = "com.github.wwmm.easyeffects.bassloudness"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/bassloudness/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/bassloudness/"; + +} // namespace tags::schema::bass_loudness + +namespace tags::schema::compressor { + +inline constexpr auto id = "com.github.wwmm.easyeffects.compressor"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/compressor/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/compressor/"; + +} // namespace tags::schema::compressor + +namespace tags::schema::convolver { + +inline constexpr auto id = "com.github.wwmm.easyeffects.convolver"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/convolver/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/convolver/"; + +} // namespace tags::schema::convolver + +namespace tags::schema::crossfeed { + +inline constexpr auto id = "com.github.wwmm.easyeffects.crossfeed"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/crossfeed/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/crossfeed/"; + +} // namespace tags::schema::crossfeed + +namespace tags::schema::crystalizer { + +inline constexpr auto id = "com.github.wwmm.easyeffects.crystalizer"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/crystalizer/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/crystalizer/"; + +} // namespace tags::schema::crystalizer + +namespace tags::schema::deesser { + +inline constexpr auto id = "com.github.wwmm.easyeffects.deesser"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/deesser/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/deesser/"; + +} // namespace tags::schema::deesser + +namespace tags::schema::delay { + +inline constexpr auto id = "com.github.wwmm.easyeffects.delay"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/delay/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/delay/"; + +} // namespace tags::schema::delay + +namespace tags::schema::echo_canceller { + +inline constexpr auto id = "com.github.wwmm.easyeffects.echocanceller"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/echocanceller/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/echocanceller/"; + +} // namespace tags::schema::echo_canceller + +namespace tags::schema::equalizer { + +inline constexpr auto id = "com.github.wwmm.easyeffects.equalizer"; + +inline constexpr auto channel_id = "com.github.wwmm.easyeffects.equalizer.channel"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/equalizer/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/equalizer/"; + +inline constexpr auto input_path_left = "/com/github/wwmm/easyeffects/streaminputs/equalizer/leftchannel/"; + +inline constexpr auto input_path_right = "/com/github/wwmm/easyeffects/streaminputs/equalizer/rightchannel/"; + +inline constexpr auto output_path_left = "/com/github/wwmm/easyeffects/streamoutputs/equalizer/leftchannel/"; + +inline constexpr auto output_path_right = "/com/github/wwmm/easyeffects/streamoutputs/equalizer/rightchannel/"; + +} // namespace tags::schema::equalizer + +namespace tags::schema::exciter { + +inline constexpr auto id = "com.github.wwmm.easyeffects.exciter"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/exciter/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/exciter/"; + +} // namespace tags::schema::exciter + +namespace tags::schema::filter { + +inline constexpr auto id = "com.github.wwmm.easyeffects.filter"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/filter/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/filter/"; + +} // namespace tags::schema::filter + +namespace tags::schema::gate { + +inline constexpr auto id = "com.github.wwmm.easyeffects.gate"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/gate/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/gate/"; + +} // namespace tags::schema::gate + +namespace tags::schema::limiter { + +inline constexpr auto id = "com.github.wwmm.easyeffects.limiter"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/limiter/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/limiter/"; + +} // namespace tags::schema::limiter + +namespace tags::schema::loudness { + +inline constexpr auto id = "com.github.wwmm.easyeffects.loudness"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/loudness/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/loudness/"; + +} // namespace tags::schema::loudness + +namespace tags::schema::maximizer { + +inline constexpr auto id = "com.github.wwmm.easyeffects.maximizer"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/maximizer/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/maximizer/"; + +} // namespace tags::schema::maximizer + +namespace tags::schema::multiband_compressor { + +inline constexpr auto id = "com.github.wwmm.easyeffects.multibandcompressor"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/multibandcompressor/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/multibandcompressor/"; + +} // namespace tags::schema::multiband_compressor + +namespace tags::schema::multiband_gate { + +inline constexpr auto id = "com.github.wwmm.easyeffects.multibandgate"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/multibandgate/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/multibandgate/"; + +} // namespace tags::schema::multiband_gate + +namespace tags::schema::output_level { + +inline constexpr auto id = "com.github.wwmm.easyeffects.outputlevel"; + +} + +namespace tags::schema::pitch { + +inline constexpr auto id = "com.github.wwmm.easyeffects.pitch"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/pitch/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/pitch/"; + +} // namespace tags::schema::pitch + +namespace tags::schema::reverb { + +inline constexpr auto id = "com.github.wwmm.easyeffects.reverb"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/reverb/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/reverb/"; + +} // namespace tags::schema::reverb + +namespace tags::schema::rnnoise { + +inline constexpr auto id = "com.github.wwmm.easyeffects.rnnoise"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/rnnoise/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/rnnoise/"; + +} // namespace tags::schema::rnnoise + +namespace tags::schema::stereo_tools { + +inline constexpr auto id = "com.github.wwmm.easyeffects.stereotools"; + +inline constexpr auto input_path = "/com/github/wwmm/easyeffects/streaminputs/stereotools/"; + +inline constexpr auto output_path = "/com/github/wwmm/easyeffects/streamoutputs/stereotools/"; + +} // namespace tags::schema::stereo_tools + +namespace tags::schema::spectrum { + +inline constexpr auto id = "com.github.wwmm.easyeffects.spectrum"; + +} // namespace tags::schema::spectrum \ No newline at end of file diff --git a/include/test_signals.hpp b/include/test_signals.hpp new file mode 100644 index 0000000..cba4d06 --- /dev/null +++ b/include/test_signals.hpp @@ -0,0 +1,96 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include "pipe_manager.hpp" + +enum class TestSignalType { sine_wave, gaussian, pink }; + +class TestSignals { + public: + TestSignals(PipeManager* pipe_manager); + TestSignals(const TestSignals&) = delete; + auto operator=(const TestSignals&) -> TestSignals& = delete; + TestSignals(const TestSignals&&) = delete; + auto operator=(const TestSignals&&) -> TestSignals& = delete; + virtual ~TestSignals(); + + struct data; + + struct port { + struct data* data; + }; + + struct data { + struct port* out_left = nullptr; + struct port* out_right = nullptr; + + TestSignals* ts = nullptr; + }; + + pw_filter* filter = nullptr; + + uint n_samples = 0U; + + uint rate = 0U; + + bool create_left_channel = true; + + bool create_right_channel = true; + + float sine_phase = 0.0F; + + float sine_frequency = 1000.0F; + + TestSignalType signal_type = TestSignalType::sine_wave; + + void set_state(const bool& state); + + void set_frequency(const float& value); + + [[nodiscard]] auto get_node_id() const -> uint; + + void set_active(const bool& state) const; + + void set_signal_type(const TestSignalType& value); + + auto white_noise() -> float; + + private: + PipeManager* pm = nullptr; + + spa_hook listener{}; + + data pf_data = {}; + + uint node_id = 0U; + + std::vector list_proxies; + + std::random_device rd{}; + + std::mt19937 random_generator; + + std::normal_distribution normal_distribution{0.0F, 0.3F}; +}; diff --git a/include/ui_helpers.hpp b/include/ui_helpers.hpp new file mode 100644 index 0000000..6f3d6eb --- /dev/null +++ b/include/ui_helpers.hpp @@ -0,0 +1,165 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "string_literal_wrapper.hpp" +#include "tags_app.hpp" +#include "util.hpp" + +namespace ui { + +void show_fixed_toast(AdwToastOverlay* toast_overlay, + const std::string& text, + const AdwToastPriority& priority = ADW_TOAST_PRIORITY_HIGH); +void show_autohiding_toast(AdwToastOverlay* toast_overlay, + const std::string& text, + const uint& timeout = 5U, + const AdwToastPriority& priority = ADW_TOAST_PRIORITY_HIGH); + +void show_simple_message_dialog(GtkWidget* parent, const std::string& title, const std::string& descr); + +auto parse_spinbutton_output(GtkSpinButton* button, const char* unit) -> bool; + +auto parse_spinbutton_input(GtkSpinButton* button, double* new_value) -> int; + +auto get_new_filter_serial() -> uint; + +void set_ignore_filter_idle_add(const uint& serial, const bool& state); + +auto get_ignore_filter_idle_add(const uint& serial) -> bool; + +void save_user_locale(); + +auto get_user_locale() -> std::locale; + +void update_level(GtkLevelBar* w_left, + GtkLabel* w_left_label, + GtkLevelBar* w_right, + GtkLabel* w_right_label, + const float& left, + const float& right); + +void append_to_string_list(GtkStringList* string_list, const std::string& name); + +void remove_from_string_list(GtkStringList* string_list, const std::string& name); + +template +void prepare_spinbutton(GtkSpinButton* button) { + if (button == nullptr) { + util::warning("Null pointer provided: Spinbutton widget not prepared."); + + return; + } + + g_signal_connect(button, "output", G_CALLBACK(+[](GtkSpinButton* button, gpointer user_data) { + return parse_spinbutton_output(button, sl_wrapper.msg.data()); + }), + nullptr); + + g_signal_connect(button, "input", G_CALLBACK(+[](GtkSpinButton* button, gdouble* new_value, gpointer user_data) { + return parse_spinbutton_input(button, new_value); + }), + nullptr); +} + +template +void prepare_scale(GtkScale* scale) { + /* + The sanitizer caught a "use after free" inside this function. As the problem happens randomly and is hard to + reproduce I am not sure about what could be the cause yet. So for now I am just checking for null pointers. + */ + + if (scale == nullptr) { + util::warning("Null pointer provided: Scale widget not prepared."); + + return; + } + + gtk_scale_set_format_value_func( + scale, + (GtkScaleFormatValueFunc) + + [](GtkScale* scale, double value, gpointer user_data) { + if (scale == nullptr) { + return g_strdup(""); + } + + auto precision = gtk_scale_get_digits(scale); + auto unit = sl_wrapper.msg.data(); + + using namespace std::string_literals; + + auto text = fmt::format(ui::get_user_locale(), "{0:.{1}Lf}{2}", value, precision, + ((unit != nullptr) ? " "s + unit : "")); + + return g_strdup(text.c_str()); + }, + nullptr, nullptr); +} + +template +void prepare_spinbuttons(Targs... button) { + (prepare_spinbutton(button), ...); +} + +template +void prepare_scales(Targs... scale) { + (prepare_scale(scale), ...); +} + +template +void gsettings_bind_widget(GSettings* settings, + const char* key, + T widget, + GSettingsBindFlags flags = G_SETTINGS_BIND_DEFAULT) { + static_assert(std::is_same_v || std::is_same_v || + std::is_same_v || std::is_same_v || std::is_same_v); + + if constexpr (std::is_same_v) { + g_settings_bind(settings, key, gtk_spin_button_get_adjustment(widget), "value", flags); + } + + if constexpr (std::is_same_v) { + g_settings_bind(settings, key, gtk_range_get_adjustment(GTK_RANGE(widget)), "value", flags); + } + + if constexpr (std::is_same_v || std::is_same_v) { + g_settings_bind(settings, key, widget, "active", flags); + } + + if constexpr (std::is_same_v) { + g_settings_bind(settings, key, widget, "active-id", flags); + } +} + +template +void gsettings_bind_widgets(GSettings* settings, Targs... widget) { + (gsettings_bind_widget(settings, key_wrapper.msg.data(), widget), ...); +} + +} // namespace ui diff --git a/include/util.hpp b/include/util.hpp new file mode 100644 index 0000000..42180a1 --- /dev/null +++ b/include/util.hpp @@ -0,0 +1,151 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace util { + +const float minimum_db_level = -100.0F; +const double minimum_db_d_level = -100.0; +const float minimum_linear_level = 0.00001F; +const double minimum_linear_d_level = 0.00001; + +void debug(const std::string& s, std::source_location location = std::source_location::current()); +void error(const std::string& s, std::source_location location = std::source_location::current()); +void critical(const std::string& s, std::source_location location = std::source_location::current()); +void warning(const std::string& s, std::source_location location = std::source_location::current()); +void info(const std::string& s, std::source_location location = std::source_location::current()); + +auto normalize(const float& x, const float& min, const float& max) -> float; + +auto logspace(const float& start, const float& stop, const uint& npoints) -> std::vector; +auto linspace(const float& start, const float& stop, const uint& npoints) -> std::vector; + +auto linear_to_db(const float& amp) -> float; +auto linear_to_db(const double& amp) -> double; + +auto db_to_linear(const float& db) -> float; +auto db_to_linear(const double& db) -> double; + +auto db20_gain_to_linear(GValue* value, GVariant* variant, gpointer user_data) -> gboolean; + +auto linear_gain_to_db20(const GValue* value, const GVariantType* expected_type, gpointer user_data) -> GVariant*; + +auto db10_gain_to_linear(GValue* value, GVariant* variant, gpointer user_data) -> gboolean; + +auto double_to_float(GValue* value, GVariant* variant, gpointer user_data) -> gboolean; + +auto db20_gain_to_linear_double(GValue* value, GVariant* variant, gpointer user_data) -> gboolean; + +auto linear_double_gain_to_db20(const GValue* value, const GVariantType* expected_type, gpointer user_data) + -> GVariant*; + +auto double_x10_to_int(GValue* value, GVariant* variant, gpointer user_data) -> gboolean; + +auto ms_to_ns(GValue* value, GVariant* variant, gpointer user_data) -> gboolean; + +auto remove_filename_extension(const std::string& basename) -> std::string; + +void print_thread_id(); + +auto gchar_array_to_vector(gchar** gchar_array, const bool free_data = true) -> std::vector; + +auto make_gchar_pointer_vector(const std::vector& input) -> std::vector; + +auto gsettings_get_color(GSettings* settings, const char* key) -> GdkRGBA; + +auto gsettings_get_string(GSettings* settings, const char* key) -> std::string; + +auto add_new_blocklist_entry(GSettings* settings, const std::string& name) -> bool; + +void remove_blocklist_entry(GSettings* settings, const std::string& name); + +void idle_add(std::function cb); + +void generate_tags(const int& N, const std::string& start_string, const std::string& end_string); + +auto get_files_name(std::filesystem::path dir_path, const std::string& ext) -> std::vector; + +void reset_all_keys_except(GSettings* settings, const std::vector& blocklist = std::vector()); + +auto str_contains(const std::string& haystack, const std::string& needle) -> bool; + +template +void print_type(T v) { + warning(typeid(v).name()); +} + +template +auto str_to_num(const std::string& str, T& num) -> bool { + // This is a more robust implementation of `std::from_chars` + // so that we don't have to do every time with `std::from_chars_result` structure. + // We don't care of error types, so a simple bool is returned on success/fail. + // A left trim is performed on strings so that the conversion could success + // even if there are leading whitespaces and/or the plus sign. + + auto first_char = str.find_first_not_of(" +\n\r\t"); + + if (first_char == std::string::npos) { + return false; + } + + const auto result = std::from_chars(str.data() + first_char, str.data() + str.size(), num); + + return (result.ec == std::errc()); +} + +template +auto to_string(const T& num, const std::string def = "0") -> std::string { + // This is used to replace `std::to_string` as a locale independent + // number conversion using `std::to_chars`. + // An additional string parameter could be eventually provided with a + // default value to return in case the conversion fails. + + // Max buffer lenght: + // number of base-10 digits that can be represented by the type T without change + + // number of base-10 digits that are necessary to uniquely represent all distinct + // values of the type T (meaningful only for real numbers) + + // room for other characters such as "+-e,." + const size_t max = std::numeric_limits::digits10 + std::numeric_limits::max_digits10 + 10u; + + std::array buffer; + + const auto p_init = buffer.data(); + + const auto result = std::to_chars(p_init, p_init + max, num); + + return (result.ec == std::errc()) ? std::string(p_init, result.ptr - p_init) : def; +} + +} // namespace util diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..373bb1b --- /dev/null +++ b/meson.build @@ -0,0 +1,39 @@ +project( + 'easyeffects', + 'c', + 'cpp', + default_options : ['cpp_std=c++20','buildtype=debugoptimized'], + version: '6.2.8', + meson_version: '>= 0.57.0' +) + +add_global_arguments('-DG_LOG_DOMAIN="easyeffects"', language : 'c') +add_global_arguments('-DG_LOG_DOMAIN="easyeffects"', language : 'cpp') +add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()), + language:'c') + +gnome_mod = import('gnome') +i18n_mod = import('i18n') + +prefix = get_option('prefix') +bindir = join_paths(prefix, get_option('bindir')) +datadir = join_paths(prefix, get_option('datadir')) +localedir = join_paths(prefix, get_option('localedir')) +include_dir = include_directories('include') +config_h_dir = include_directories('.') + +# Configuration +conf = configuration_data() + +conf.set_quoted('GETTEXT_PACKAGE', meson.project_name()) +conf.set_quoted('LOCALE_DIR', localedir) +conf.set_quoted('VERSION', meson.project_version()) + +configure_file(output: 'config.h', configuration: conf) + +subdir('data') +subdir('po') +subdir('help') +subdir('src') + +meson.add_install_script('meson_post_install.py') diff --git a/meson_post_install.py b/meson_post_install.py new file mode 100644 index 0000000..2021294 --- /dev/null +++ b/meson_post_install.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import os +import subprocess + +prefix = os.environ.get('MESON_INSTALL_PREFIX', '/usr/local') +datadir = os.path.join(prefix, 'share') + +# Packaging tools define DESTDIR and this isn't needed for them +if 'DESTDIR' not in os.environ: + print('Compiling gsettings schemas...') + subprocess.call( + ['glib-compile-schemas', os.path.join(datadir, 'glib-2.0', 'schemas')]) + + print('Updating icon cache...') + subprocess.call(['gtk4-update-icon-cache', '-qtf', + os.path.join(datadir, 'icons', 'hicolor')]) + + print('Updating desktop database...') + subprocess.call(['update-desktop-database', '-q', + os.path.join(datadir, 'applications')]) diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..6a76c49 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,27 @@ +cs +de +fr_FR +gl +hr +id_ID +it_IT +nl +pl +pt_BR +ru +sk +sv +da +nb_NO +es_MX +es_CO +tr +zh_CN +ro +es_VE +ja +ko +es +km +af +th diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..669d35e --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,68 @@ +data/com.github.wwmm.easyeffects.desktop.in +data/schemas/com.github.wwmm.easyeffects.gschema.xml +data/ui/app_info.ui +data/ui/application_window.ui +data/ui/apps_box.ui +data/ui/autogain.ui +data/ui/autoload_row.ui +data/ui/bass_enhancer.ui +data/ui/bass_loudness.ui +data/ui/blocklist_menu.ui +data/ui/chart.ui +data/ui/compressor.ui +data/ui/convolver.ui +data/ui/convolver_menu_combine.ui +data/ui/convolver_menu_impulses.ui +data/ui/crossfeed.ui +data/ui/crystalizer.ui +data/ui/crystalizer_band.ui +data/ui/deesser.ui +data/ui/delay.ui +data/ui/echo_canceller.ui +data/ui/effects_box.ui +data/ui/equalizer.ui +data/ui/equalizer_band.ui +data/ui/exciter.ui +data/ui/factory_clients_listview.ui +data/ui/factory_input_device_dropdown.ui +data/ui/factory_modules_listview.ui +data/ui/factory_output_device_dropdown.ui +data/ui/factory_presets_dropdown.ui +data/ui/factory_rnnoise_listview.ui +data/ui/filter.ui +data/ui/gate.ui +data/ui/limiter.ui +data/ui/loudness.ui +data/ui/maximizer.ui +data/ui/multiband_compressor.ui +data/ui/multiband_compressor_band.ui +data/ui/multiband_gate.ui +data/ui/pipe_manager_box.ui +data/ui/pitch.ui +data/ui/plugin_row.ui +data/ui/plugins_box.ui +data/ui/plugins_menu.ui +data/ui/preferences_general.ui +data/ui/preferences_spectrum.ui +data/ui/preferences_window.ui +data/ui/preset_row.ui +data/ui/presets_menu.ui +data/ui/reverb.ui +data/ui/rnnoise.ui +data/ui/shortcuts.ui +data/ui/stereo_tools.ui +src/app_info.cpp +src/application.cpp +src/application_ui.cpp +src/convolver_menu_impulses.cpp +src/convolver_ui.cpp +src/effects_box.cpp +src/equalizer_band_box.cpp +src/equalizer_ui.cpp +src/pipe_manager_box.cpp +src/plugins_box.cpp +src/plugins_menu.cpp +src/presets_menu.cpp +src/rnnoise_ui.cpp +src/tags_plugin_name.cpp +src/ui_helpers.cpp diff --git a/po/af.po b/po/af.po new file mode 100644 index 0000000..1aeb725 --- /dev/null +++ b/po/af.po @@ -0,0 +1,2524 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-05-23 08:18+0000\n" +"Last-Translator: Ebert Matthee \n" +"Language-Team: Afrikaans \n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.13-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Oudio-effekte vir PipeWire toepassing" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "" + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "" + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects is 'n gevorederde oudio manipilasie toepassing. Dit sluit in " +#~ "'n gelykmaker, beperker, kompressor en nagalminstrument, net om 'n paar " +#~ "te noem. Om die te komplementeer is daar ook 'n spektrum ontleder." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects is die opvolger van PulseEffects. EasyEffects ondersteun " +#~ "slegs PipeWire se klankbediener. PulseAudio-gebruikers moet eerder " +#~ "PulseEffects gebruik." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Omdat EasyEffects die verstek PipeWire-klankbediener gebruik, sal dit met " +#~ "die meeste, indien nie alle toepassings wat jy gebruik nie, werk. Alle " +#~ "ondersteunde toepassings word in die hoofskerm aangebied, waar elkeen " +#~ "individueel geaktiveer kan word." diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..00cb447 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,3257 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Pavel Fric , 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2019-08-25 21:29+0200\n" +"Last-Translator: Mlocik97\n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 19.04.0\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +#, fuzzy +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ekvalizér, kompresor a jiné zvukové efekty" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Zvukové efekty pro programy využívající PulseAudio" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "omezovač (limiter);kompresor;dozvuk;ekvalizér;automatická hlasitost;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Přednastavení\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Povolit" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Programy" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Programy" + +#: data/ui/application_window.ui:6 +#, fuzzy +msgid "_Preferences" +msgstr "Referenční Signál" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +#, fuzzy +msgid "_Shortcuts" +msgstr "Jednorázové" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Nastavení" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Přednastavení" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Přednastavení" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Přepustení" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Programy" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Prázdné zdi" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Programy" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Cíl" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Největší zesílení" + +#: data/ui/autogain.ui:86 +#, fuzzy +msgid "Reference" +msgstr "Referenční Signál" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Chvilkové" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Jednorázové" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Sjednocené" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Použít přechod" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Použít přechod" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Použít přechod" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Použít přechod" + +#: data/ui/autogain.ui:119 +#, fuzzy +msgid "Reset History" +msgstr "Vymazat Historii" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativní" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rozsah" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Hlasitost" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Vstupní zesílení" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Vstup" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Vstupní zesílení" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Výstup" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Vstupní zesílení" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Vrátit na výchozí" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +#, fuzzy +msgid "Device" +msgstr "Omezovač vstupu" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Název" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Přednastavení" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Odstranit tento soubor s přednastavením" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Poslouchat" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Míchat harmonické kmity" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3." + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2." + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Množství" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonické kmity" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Rozsah" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Spodní mez" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Spodní mez" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Programy" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Zobrazit Aplikace z Blocklistu na Hlavní Kartě" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Programy" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Zobrazit Aplikace z Blocklistu na Hlavní Kartě" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Režim" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Dolů" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Nahoru" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Kompresní režim" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Práh" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Množství" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Náběh" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Ve skutečném čase" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Práh" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Náběh" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Práh" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Uvolnění" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Uvolnění" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Relativní Práh Uvolnění" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Poměr" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Přechod" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Pozvednutí" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Postranní řetězec" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Vrchol" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Dolní pásmo" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Rovnoměrný" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Postranní řetězec" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Zdroj" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Střední" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Postranní" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Levý" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Pravý" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Postranní řetězec" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Typ" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Kanál-vpřed" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Kanál-zpět" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Postranní řetězec" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Omezovač vstupu" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Předzesílení" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reaktivita" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Výhled" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Postranní řetězec" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Horní pásmo" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Kmitočet" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Vypnuto" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +#, fuzzy +msgid "12 dB/oct" +msgstr "Nízká pásmová propust 12 dB/okt" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +#, fuzzy +msgid "24 dB/oct" +msgstr "Nízká pásmová propust 24 dB/okt" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +#, fuzzy +msgid "36 dB/oct" +msgstr "Nízká pásmová propust 36 dB/okt" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Vysokopásmový filtr" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Tlumení vysokého kmitočtu" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Vysokopásmový filtr" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Zesílení" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Sklon" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Křivka" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Kanály" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "P" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Rozdělit kanály" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Odpověď impulsu" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Šířka sterea" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +#, fuzzy +msgid "Log Scale" +msgstr "Měřítko" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Automatické zesílení" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Kmitočet" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Vzorky" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Doba trvání" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Odpověď impulsu" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Výstup" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Zavést impuls" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Zavést soubor s impulsem" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Zavést soubor s impulsem" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Výchozí" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Useknutí" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Kanál" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Překlenutí" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Ztlumit" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Zjištění" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Rozšířit" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Rozdělit" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Rozdělit" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Kmitočet" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Vrchol" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Kmitočet" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Zesílení" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Kmitočet" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Úroveň" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Kmitočet" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Vrchol Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Kmitočet" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Nedbalost" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Zjištěno" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Snížení" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Rozměry rámečku" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filtr" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Pásma" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Rozdělit kanály" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Uhladit" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Vypočítat Kmitočty" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "APO Přednastavení" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Zvonek" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Horní pásmo" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Horní práh" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Dolní pásmo" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Dolní práh" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Vroubek" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Rezonance" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Dolní pásmo" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Překlenutí" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Pásma" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Sklon" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Sklon" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Šířka" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Jakost" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Sólo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Strop" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Zjištění" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Odstranit tento soubor s přednastavením" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "Nízká pásmová propust 12 dB/okt" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "Nízká pásmová propust 24 dB/okt" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "Nízká pásmová propust 36 dB/okt" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "Vysoká pásmová propust 12 dB/okt" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "Vysoká pásmová propust 24 dB/okt" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "Vysoká pásmová propust 36 dB/okt" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "Pásmová propustnost 6 dB/okt" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "Pásmová propustnost 12 dB/okt" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "Pásmová propustnost 18 dB/okt" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "Vyloučení pásma 6 dB/okt" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "Vyloučení pásma 12 dB/okt" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "Vyloučení pásma 18 dB/okt" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Setrvačnost" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Brána" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Uvolnění" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Sjednocené" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Hradlo" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Převzorkování" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Rozšířit" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Rozšířit" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Šířka čáry" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Šířka čáry" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Šířka čáry" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Žádný" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Předzesílení" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Spojení sterea" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Postranní řetězec" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Automatické Úrovně" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Automatické Úrovně" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Automatické Úrovně" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Automatické Úrovně" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Levý" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Pravý" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Postranní řetězec" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Postranní řetězec" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standardní" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Rovný" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Rozměry rámečku" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Výstup" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Strop" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Zavést impuls" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Režim" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Postranní řetězec" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Pásma" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Pásma" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Kompresní režim" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Překlenutí" + +#: data/ui/multiband_compressor_band.ui:431 +#, fuzzy +msgid "Band Sidechain Options" +msgstr "Postranní řetězec" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Nízkopropustný Mód Filtru" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Nízkopropustný Mód Filtru" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Vysokopásmový filtr" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Vysokopásmový filtr" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Vstupní zesílení" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Křivka" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Rozdělit" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Rozdělit 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Kmitočet" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Rozdělit 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Kmitočet" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Rozdělit 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Kmitočet" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Spodní pásmo" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Překlenutí" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Zmenšení zesílení" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Náběh" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Uvolnění" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Práh" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Pozvednutí" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Snížení" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Zmenšení zesílení" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Nízké pásmo" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Překlenutí" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Zmenšení zesílení" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Náběh" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Uvolnění" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Práh" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Pozvednutí" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Zmenšení zesílení" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Střední pásmo" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Překlenutí" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Zmenšení zesílení" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Náběh" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Uvolnění" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Práh" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Pozvednutí" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Zmenšení zesílení" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Vysoké pásmo" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Překlenutí" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Zmenšení zesílení" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Náběh" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Uvolnění" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Práh" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Pozvednutí" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Zmenšení zesílení" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Obecné" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Použít Výchozí" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Omezovač vstupu" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Použít Výchozí" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Vstupní zesílení" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Dozvuk" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Verze" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Verze" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Vzorkování" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Minimální Kmitočet" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Největší zesílení" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Výchozí zeslabení" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Vstupní zesílení" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Výstupní přednastavení:" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Výstupní přednastavení:" + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Omezovač vstupu" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Vstupní přednastavení:" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Vstupní přednastavení:" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Moduly" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Moduly" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Klienti" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Klienti" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Zkušební signály" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Stav" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Povolit" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanály" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Kanály" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Sinusová tabulka" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Bílý šum" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Horní práh" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Jakost" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formát" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Přednastavení" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Křehkost" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Zjištění" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Komprese" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Softclip" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Centy" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Půltóny" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktávy" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Odstranit tento soubor s přednastavením" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Vstupní efekty" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "Obecné" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Omezovač vstupu" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Zpracovat všechny výstupy" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Zpracovat všechny vstupy" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Použít tmavý vzhled" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Pruhy" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Čáry" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Body" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Výška" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Šířka čáry" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Výplň" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Kmitočet" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Nejvýše" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Nejvýše" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Načíst" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Uložit nynější nastavení do tohoto souboru s přednastavením" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Odstranit tento soubor s přednastavením" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Výstupní přednastavení:" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Vytvořit přednastavení" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Zavést přednastavení" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Výstupní přednastavení:" + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Výstupní přednastavení:" + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Vstupní přednastavení:" + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Vstupní přednastavení:" + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Vstupní přednastavení:" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Tlumení vysokého kmitočtu" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Velikost prostoru" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Malý" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Střední" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Velký" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Chodba" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Velký/plynulý" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Pokusný" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Rozptylování" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Předzpoždění" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Čas dozvuku" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Množství" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Úroveň cíle" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Množství" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Úroveň" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Ořezání hloubek" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Ořezání výšek" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Okolní prostředí" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Prázdné zdi" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Pokoj" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Velký prázdný sál" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disko" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Velký obsazený sál" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Zavést impuls" + +#: data/ui/rnnoise.ui:40 +#, fuzzy +msgid "Models" +msgstr "Režim" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +#, fuzzy +msgid "Standard Model" +msgstr "Standardní" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +#, fuzzy +msgid "Active Model" +msgstr "Agresivní režim" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +#, fuzzy +msgid "Overview" +msgstr "Omezovač vstupu" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Vynulovat EasyEffects." + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +#, fuzzy +msgid "Close the Window" +msgstr "Skrýt Okno" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Vyvážení" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Vyvážení" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matrice sterea" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LP > LP (výchozí stereo)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LP > SS (stereo ke střední straně)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "SS > LP (střední strana ke stereu)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LP > LL (mono levý kanál)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LP > PP (mono pravý kanál)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LP > L+P (mono součet L+P)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (stereo obrácení kanálů)" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Základ sterea" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Obrátit fázi" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Postranní úroveň" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Postranní vyvážení" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Prostřední úroveň" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Prostřední panorama" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Vstupní zesílení" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Zpoždění L/P" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Zpoždění L/P" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Základ sterea" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fáze sterea" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "Hradlo" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Kanály" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Výstupní přednastavení:" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Vstupní přednastavení:" + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Zvukové efekty pro programy využívající PulseAudio" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Ukončit EasyEffects. Užitečné, když běži ve služebním režimu." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Nahrát přednastavení. Příklad: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Vynulovat EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Skrýt Okno" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "Globální propuštění. 1 pro zapnutí, 2 pro vypnutí, 3 pro získání stavu" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Ukázat dostupná přednastavení." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Zavést soubor s impulsem" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Zavést soubor s impulsem" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Otevřít" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Zrušit" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Odpověď impulsu" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Odpověď impulsu" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Zavést impuls" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Zavést soubor s impulsem" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Nepodařilo se nahrát soubor s impulsem" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +#, fuzzy +msgid "Recorders" +msgstr "Okraj" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "nekonečno" + +#: src/equalizer_ui.cpp:351 +#, fuzzy +msgid "Import APO Preset File" +msgstr "Zavést APO přednastavení" + +#: src/equalizer_ui.cpp:357 +#, fuzzy +msgid "APO Presets" +msgstr "APO Přednastavení" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Odstranit tento soubor s přednastavením" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Vstupní zesílení" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Zavést přednastavení" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "Zavést soubor s impulsem" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Agresivní režim" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Zlepšovač hloubek" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Hlasitost" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Svinovač" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Prolínání kanálů" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Krystalizátor" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Odstraňovač sykotu" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Zpoždění" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Potlačovač echa" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ekvalizér" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Zvukový budič" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtr" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Omezovač" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Zvětšovač" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Vícepásmový kompresor" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Vícepásmová brána" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Výška tónu" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Dozvuk" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Zmenšení zesílení" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Nástroje sterea" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#, fuzzy +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects je pokročilým nástrojem pro zacházení se zvukem. Obsahuje " +#~ "mimo jiné nástroj ekvalizéru, omezovače (limiter), kompresoru a dozvuku. " +#~ "Na doplnění je také vestavěn analyzátor spektra." + +#, fuzzy +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Protože EasyEffects používá výchozí zvukový server PulseAudio, bude " +#~ "pracovat s většinou, pokud už ne se všemi vámi používanými programy. " +#~ "Všechny podporované programy jsou ukázány v hlavním okně, v němž je možné " +#~ "kterýkoli z nich ručně povolit." + +#, fuzzy +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Vedle práce se zvukovým výstupem dokáže EasyEffects efekty použít i na " +#~ "vstupní zařízení, jako je mikrofon. To je užitečné mimo jiné při " +#~ "nahrávání zvuku, pracuje to ale dobře během hlasových hovorů." + +#, fuzzy +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Když je EasyEffects spuštěn, zapamatuje si příhodně nastavení používané " +#~ "při posledním sezení. Je možné i uložení všech nynějších nastavení jako " +#~ "profilů." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Pásma" + +#~ msgid "Average" +#~ msgstr "Průměr" + +#~ msgid "Failed" +#~ msgstr "Nepodařilo se" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Použít Výchozí" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Odstranit tento soubor s přednastavením" + +#~ msgid "Import Presets" +#~ msgstr "Zavést přednastavení" + +#~ msgid "Start Service at Login" +#~ msgstr "Spustit službu při přihlášení" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Agresivní režim" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Černá listina" + +#~ msgid "Blocklist" +#~ msgstr "Černá listina" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibrace mikrofonu" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Povolit" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Povolit" + +#~ msgid "Format" +#~ msgstr "Formát" + +#~ msgid "Latency" +#~ msgstr "Prodleva" + +#~ msgid "Faster" +#~ msgstr "Rychleji" + +#~ msgid "Preserve Formant" +#~ msgstr "Zachovat složku rozhodující o barvě zvuku" + +#~ msgid "Cmoy" +#~ msgstr "Sluchátkový zesilovač (CMoy)" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Vstupní zesílení" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Spodní mez" + +#~ msgid "Output Effects" +#~ msgstr "Výstupní efekty" + +#~ msgid "Settings" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Doba trvání" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Zkušební signály" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Zkušební signály" + +#~ msgid "Show Spectrum" +#~ msgstr "Ukázat spektrum" + +#~ msgid "Border" +#~ msgstr "Okraj" + +#~ msgid "Spectrum Type" +#~ msgstr "Typ spektra" + +#~ msgid "Spectrum Color" +#~ msgstr "Barva spektra" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Agresivní režim" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Zmenšení zesílení" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Váhy" + +#~ msgid "Dry" +#~ msgstr "Zkušební" + +#~ msgid "S/C Level" +#~ msgstr "Úroveň S/C" + +#~ msgid "Short Term" +#~ msgstr "Jednorázové" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Dolní pásmo" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Nastavit hlasitost a zapnout/vypnout efekty" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Zahrnuje ekvalizér s vestavěnými přednastaveními" + +#~ msgid "Input Limiter" +#~ msgstr "Omezovač vstupu" + +#~ msgid "Calibration" +#~ msgstr "Kalibrace" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatické Vyhlazení" + +#~ msgid "Limit" +#~ msgstr "Omezení" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Tlumení" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Zvukové efekty pro programy využívající PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Zvukové efekty pro programy PulseAudio" + +#~ msgid "Help" +#~ msgstr "Nápověda" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrace mikrofonu" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automaticky použít toto přednastavení, když je nyní používané zařízení " +#~ "zapojeno v systému" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Verze" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Čtverec" + +#~ msgid "Saw" +#~ msgstr "Pila" + +#~ msgid "Triangle" +#~ msgstr "Trojúhelník" + +#~ msgid "Silence" +#~ msgstr "Ticho" + +#~ msgid "Pink Noise" +#~ msgstr "Růžový šum" + +#~ msgid "Ticks" +#~ msgstr "Tiknutí" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussovský šum" + +#~ msgid "Red Noise" +#~ msgstr "Červený šum" + +#~ msgid "Blue Noise" +#~ msgstr "Modrý šum" + +#~ msgid "Violet Noise" +#~ msgstr "Fialový šum" + +#~ msgid "Volume" +#~ msgstr "Hlasitost" + +#~ msgid "Window" +#~ msgstr "Okno" + +#~ msgid "Measure Noise" +#~ msgstr "Změřit šum" + +#~ msgid "Subtract Noise" +#~ msgstr "Odečíst šum" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Provided by" +#~ msgstr "Poskytuje" + +#~ msgid "Extended Filter" +#~ msgstr "Rozšířený filtr" + +#~ msgid "Low" +#~ msgstr "Nízký" + +#~ msgid "Moderate" +#~ msgstr "Střední" + +#~ msgid "High" +#~ msgstr "Vysoký" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Úroveň potlačení" + +#~ msgid "Delay Agnostic" +#~ msgstr "Zpozdit absolutní" + +#~ msgid "Very High" +#~ msgstr "Velmi vysoký" + +#~ msgid "Noise Suppressor" +#~ msgstr "Potlačovač šumu" + +#~ msgid "Adaptive Digital" +#~ msgstr "Přizpůsobivý digitální" + +#~ msgid "Fixed Digital" +#~ msgstr "Pevný digitální" + +#~ msgid "Gain Controller" +#~ msgstr "Ovladač zesílení" + +#~ msgid "Detection Likelihood" +#~ msgstr "Pravděpodobnost zjištění" + +#~ msgid "Very Low" +#~ msgstr "Velmi nízká" + +#~ msgid "Voice Detector" +#~ msgstr "Zjišťovatel hlasu" + +#~ msgid "Use Custom Color" +#~ msgstr "Použít vlastní barvu" + +#~ msgid "Use Gradient" +#~ msgstr "Použít přechod" + +#~ msgid "Gradient Color" +#~ msgstr "Barva přechodu" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Zavést soubor s odpovědí impulsu" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Vybrat soubor s odpovědí impulsu" + +#~ msgid "Aggressive Mode" +#~ msgstr "Agresivní režim" + +#~ msgid "Before" +#~ msgstr "Před" + +#~ msgid "After" +#~ msgstr "Po" + +#~ msgid "Loudness Range" +#~ msgstr "Rozsah hlasitosti" + +#~ msgid "Loudness Compensator" +#~ msgstr "Kompenzace Hlasitosti" + +#~ msgid "Apply" +#~ msgstr "Použít" + +#~ msgid "Based on" +#~ msgstr "Na základě" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Výchozí rychlost vzorkování" + +#~ msgid "Default Source" +#~ msgstr "Výchozí zdroj" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "File" +#~ msgstr "Soubor" + +#~ msgid "Configuration" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Based on a" +#~ msgstr "Na základě" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Spočítat kmitočty" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "APO Přednastavení" + +#~ msgid "Auto Gain" +#~ msgstr "Automatické zesílení" + +#~ msgid "Detect Silence" +#~ msgstr "Zjištění Ticha" + +#~ msgid "Muted" +#~ msgstr "Ztlumeno" + +#~ msgid "Distant Headphones" +#~ msgstr "Vzdálená sluchátka" + +#~ msgid "Priority Type" +#~ msgstr "Typ přednosti" + +#~ msgid "Niceness" +#~ msgstr "Přívětivost" + +#~ msgid "Priority" +#~ msgstr "Přednost" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Minimální Kmitočet" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Maximální Kmitočet" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "Znovu připojit mikrofon pro použití změn provedených v Blocklistu" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "Restartovat přehrávač pro použití změn provedených v Blocklistu" + +#~ msgid "About" +#~ msgstr "O programu" + +#~ msgid "Protocol" +#~ msgstr "Protokol" + +#~ msgid "Default Sample Format" +#~ msgstr "Výchozí formát vzorku" + +#~ msgid "Channel Mapping" +#~ msgstr "Přiřazení kanálu" + +#~ msgid "Resamplers" +#~ msgstr "Převzorkovače" + +#~ msgid "Buffer" +#~ msgstr "Vyrovnávací paměť" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Ekvalizér - výstup" + +#~ msgid "Block Size" +#~ msgstr "Velikost Bloku" + +#~ msgid "Resampler" +#~ msgstr "Převzorkovač" + +#~ msgid "paused" +#~ msgstr "Pozastaveno" + +#~ msgid "playing" +#~ msgstr "Přehrává se" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "Import APO Presets" +#~ msgstr "Zavést APO Přednastavení" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Zmenšení zesílení" + +#~ msgid "Exponent" +#~ msgstr "Exponent" diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..c763625 --- /dev/null +++ b/po/da.po @@ -0,0 +1,2800 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-05-23 08:18+0000\n" +"Last-Translator: Grooty12 \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.13-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "Easyeffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Equalizer, Kompressor og Andre Lydeffekter" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Lyd Effekter for PipeWire Applikationer" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "begrænser;kompressor;efterklang;equalizer;autovolume;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Forindstillinger\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Aktiveret" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Stum applikation" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Applikationvolume" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Præferencer" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Manuel" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Nulstil Indstillinger" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Om EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Forindstillinger" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Forindstillinger Menu" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Global Omgåelse" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Primær Menu" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects-vindue" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Applikationsliste" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Tomme Vægge" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Applikationvolume" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Mål" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Maksimum" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Hanvisning" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Øjeblikkelig" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Kortfristet" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integreret" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Geometrisk Gennemsnit" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Geometrisk Gennemsnit" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Geometrisk Gennemsnit" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Geometrisk Gennemsnit" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Nustil historie" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativ" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rækkevidde" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Hørestyrke" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Udgangsforstærkning" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Indgang" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Plugin-Indgangsforstærkning" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Udgang" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Plugin-Udgangsforstærkning" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Nustil" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Bruger" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Enhed" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Navn" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Profil" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Forindstilling" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Fjern Autoindlæst Forudindstilling" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Lyt" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Bland Harmonik" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "Tredje" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "Anden" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Mængde" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonik" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Omfang" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Gulv" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Gulvværdi" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Applikationvolume" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Liste over Blokerede Applikationer" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Liste over Blokerede Applikationer" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Liste over Blokerede Applikationer" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompressor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Tilstand" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Nedadrettet" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Opadrettet" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Øge" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Kompressortilstand" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Øg Grænseværdi" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Øgningsbeløb" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Angreb" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Tid" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Grænseværdi" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "Angrebstid" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "Angreb Grænseværdi" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Frigør" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "Frigøringstid" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "Grænseværdi af Frigivelse" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Forhold" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Knæ" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Makeup" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Sidekæde" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Top" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Lavpas" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Ensartet" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Sidekæde-tilstand" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Kilde" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Midte" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Side" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Venstre" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Højre" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Sidekæde Kilde" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Type" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Fremadrettet" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Tilbagemelding" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Ekstern" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Sidekæde Type" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Input-enhed" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "Forforstærkning" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reaktivitet" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Fremadskuen" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Sidekæde Filter" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Højpas" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frekvens" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Slukket" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Højpasfiltertilstand" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Højpasfilterfrekvens" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Lavpasfiltertilstand" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Gain" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "Konvolut" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Kurve" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Venstre Kanal" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Højre Kanal" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Impulser" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Kombiner" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Stereo-bredde" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Rate" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Prøver" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Varighed" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "Kombiner Impulsresponser" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "Første Kerne" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "Anden Kerne" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Udgang Filnavn" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "Kombineret Kernenavn" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Import Impulser" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Søg" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "Søg Impulsfiler" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "Impulsfiler liste" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Standard" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Afskæring" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Foder" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Omgåelse" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Stum" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Opsporing" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Bred" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Opdeling" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "F1 Opdeling" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "Frekvens 1 Opdeling" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2 Top" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "Frekvens 2 Top" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1 Gain" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "Frekvens 1 Gain" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2 Niveau" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "Frekvens 2 Niveau" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2 Top Q" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "Frekvens 2 Top Q" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Lakshed" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detektet" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Reduktion" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Rammestørrelse" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Filterlængde" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bånd" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Opdel kanaler" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Flad Respons" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Beregn Frekvenser" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "Indlæs APO-Forindstilling" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Klokke" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Højpas" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Høj Hylde" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Lavpas" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Lav Hylde" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Indhak" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonans" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Alle Pas" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Båndtype" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Båndtilstand" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Hældning" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Båndhældning" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Bredde" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kvalitet" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "Ceil" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "Ceil Værdi" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Adgang" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Beskrivelse" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Fjern denne modelfil" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Lavpas" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Lavpas" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Lavpas" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Højpas" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Højpas" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Højpas" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Båndpas" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Båndpas" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Båndpas" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Båndafvise" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Båndafvise" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct Båndafvise" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inerti" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Frigøringstid" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Ekstern" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Gating" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Oversampling" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "Tøve" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "Herm Tynd" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "Herm Bred" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "Herm Hale" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "Herm Duck" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "Exp Tynd" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "Exp Bred" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "Exp Hale" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "Exp Duck" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Linje Tynd" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Linje Bred" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "Linje Hale" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "Linje Duck" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Ingen" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "Halv x2(2L)" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "Halv x2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "Halv x3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "Halv x3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "Halv x4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "Halv x4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "Halv x6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "Halv x6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "Halv x8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "Halv x8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "Fuld x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "Fuld x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "Fuld x3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "Fuld x3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "Fuld x4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "Fuld x4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "Fuld x6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "Fuld x6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "Fuld x8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "Fuld x8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "SC PræAmp" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Sidekæde Forforstærkning" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Boost" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Stereoforbindelse" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Ekstern Sidekæde" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "Ekstern Sidekæde Kilde" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "Auto-Nivellering" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "Auto-Nivelleringsangreb" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "Auto-Nivelleringsudløse" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "Auto-Nivellering Knæ" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "Gain Venstre" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "Gain Højre" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Sidekæde Venstre" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Sidekæde Højre" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standard" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Flad" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "FFT Størrelse" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "Fast Fourier Transform Størrelse" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Udgang Volume" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Loft" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Driftstilstand" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Klassik" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Moderne" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Sidekæde Boost" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "Pink BT" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "Pinkt MT" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "Brun BT" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "Brun MT" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Båndsliste" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Bånd 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Bånd 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Bånd 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Bånd 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Bånd 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Bånd 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Bånd 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Bånd 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Bånd start" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Bånd Slut" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Bånd Kompressionstilstand" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Bånd Omgåelse" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Bånd Sidekæde Valgmuligheder" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Lavskåret Filter" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Lavskåret Filter Frekvens" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Højskåret Filter" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Højskåret Filter Frekvens" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "PræAmp" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Bånd Gain" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "Bånd Konvolut" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "Bånd Kurve" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "Opdelt Tilstand" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Opdel 1/2" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "Opdelt Frekvens 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Opdel 2/3" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "Opdel Frekvens 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Opdelt 3/4" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "Opdel Frekvens 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Underbånd" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "Bånd 1 Omgåelse" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "Bånd 1 Solo" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "Bånd 1 Opsporing" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "Bånd 1 Angreb" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "Bånd 1 Frigivelse" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "Bånd 1 Grænseværdi" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "Bånd 1 Forhold" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "Bånd 1 Knæ" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "Bånd 1 Makeup" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Max Reduktion" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "Bånd 1 Max Reduktion" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Lavbånd" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "Bånd 2 Omgåelse" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "Bånd 2 Solo" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "Bånd 2 Opsporing" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "Bånd 2 Angreb" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "Bånd 2 Frigivelse" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "Bånd 2 Grænseværdi" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "Bånd 2 Forhold" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "Bånd 2 Knæ" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "Bånd 2 Makeup" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "Bånd 2 Max Reduktion" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Mellembånd" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "Bånd 3 Omgåelse" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "Bånd 3 Solo" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "Bånd 3 Opsporing" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "Bånd 3 Angreb" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "Bånd 3 Frigivelse" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "Bånd 3 Grænseværdi" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "Bånd 3 Forhold" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "Bånd 3 Knæ" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "Bånd 3 Makeup" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "Bånd 3 Max Reduktion" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Højbånd" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "Bånd 4 Omgåelse" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "Bånd 4 Solo" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "Bånd 4 Opsporing" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "Bånd 4 Angreb" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "Bånd 4 Frigivelse" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "Bånd 4 Grænseværdi" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "Bånd 4 Forhold" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "Bånd 4 Knæ" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "Bånd 4 Makeup" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "Bånd 4 Max Reduktion" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Generelt" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Brug Standard Input" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "Brugerdefineret Input-Enhed" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Brug Standard Udgang" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "Brugerdefineret Udgangs-Enhed" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Serveroplysninger" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Overskriftsversion" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Bibloteksversion" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Prøvetagningsfrekvens" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "Minimumsantal" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "Maksimumantal" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "Standard Antal" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "Forindstil Autolæsning" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Udgangsenheder" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Udgangsforindstillinger" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Skab Associering" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "Tilføj Autolæsning Udgangsforindstilling" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Udgangsautolæsingsforindstillinger Liste" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Indgangsenheder" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Indgangsforindstillinger" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "Tilføj Autolæsning Indgangsforindstilling" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "Indgangsautolæsingsforindstillinger Liste" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Moduler" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "Liste over moduler" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Klienter" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "Liste over klienter" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Test-Signal" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Tilstand" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Aktiveret" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanaler" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Begge" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Begge Kanaler" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Bølgeform" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Sinusbølge" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Hvid Støj" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Høj Hylde" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Kvalitet" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formater" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Forindstilling" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Sprødhed" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Opsporing" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Softclip" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Cent" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitoner" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktaver" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Fjern denne modelfil" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "Liste over Anvendte Plugins" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "Easyeffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "Søgeplugin" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Plugins-liste" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Generelt" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Tjeneste" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +#, fuzzy +msgid "Shutdown on Window Closing" +msgstr "Luk helt ved vinduelukning" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Lyd" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Behandle Alle Udgange" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Behandle Alle Indgange" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "Brug Kubisk Volumen" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Stil" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Brug Mørk-tilstand" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Form" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Bjælke" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Linjer" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Point" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Højde" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Linje Bredde" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Fil" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "Vis Bjælkerammer" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Farve" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Linjer og Bjælker" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Etiketter på akserne" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Frekvens Rækkevidde" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Minimum" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maksimum" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Indlæs" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Gem nuværende indstillinger til denne forindstillingsfil" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Fjern denne forindstillingsfil" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Ny Udgangsforindstillingsnavn" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Opret Forindstilling" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Import Forudindstilling" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Søg Udgangeforindstillinger" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Liste af Udgangeforindstillinger" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Ny Indgangsforindstillingsnavn" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Søg Indgangsforindstillinger" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Liste Af Indgangsforindstillinger" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Højfrekvensdæmpning" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Størrelse af Værelse" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Lille" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Mellem" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Stor" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Stor/Glat" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Eksperimentelt" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Diffusion" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pre Forsinkelse" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Nedbrydningstime" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Vådmængde" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Vådniveau" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Tørmængde" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "TørNiveau" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Bas Snit" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Diskant Snit" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Stemning" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Tomme Vægge" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Værelse" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Stor Tom Hal" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Large Optaget Hal" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Import Model" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modeller" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Standard Model" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "Liste over RNNoise-Modeller" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Aktive Modeller" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Standard RNNoise-Model" + +#: data/ui/shortcuts.ui:11 +#, fuzzy +msgid "Overview" +msgstr "Tjeneste" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Nustli EasyEffects." + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +#, fuzzy +msgid "Close the Window" +msgstr "Skjul Vinduet." + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "_Om EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Indgangsbalance" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Softclip-niveau" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Stereo-matrix" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Stereo-Standard)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Stereo til Midtside)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Midtside til Stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (Mono Venstre Kanal)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Mono Højre Kanal)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Mono sum L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Stereo Vend Kanaler)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Stereotilstand" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inverter Fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Side Niveau" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Side Balance" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Mellem-Niveau" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Mellem-Panorama" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Udgangsbalance" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Forsinkelse L/R" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Forsinkelse Venstre Højre" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Stereo-Base" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Stereo-Fase" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "Gating" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Kanaler" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Udgangsforindstillinger:" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Indgangsforindstillinger:" + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Lydeffekter for PipeWire applikationer" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Afslut EasyEffects. Nyttigt når man kører i servicetilstand." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Indlæs en forindstilling. Eksempelvis: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Nustli EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Skjul Vinduet." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Global Omgåelse. 1 for at aktivere, 2 for at deaktivere og 3 for at få status" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Vis tilgængelige forindstillinger." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Impulsfiler liste" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Import Impulsfil" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Åben" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Annuller" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Impulsrespons" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Indlæs Impuls" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Fjern Impuls" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Impulsfiler liste" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Kunne Ikke Indlæse Impulsfilen" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Optagere" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Spillere" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "Easyeffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "uendelighed" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Import APO Forindstillingsfil" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "APO-Forindstillinger" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Fjern Autoindlæst Forudindstilling" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Fjern" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Udgangsenhed" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Tilføj" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Import Forudindstilling" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Import Modelfil" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "RNNoise-modeller" + +#: src/tags_plugin_name.cpp:26 +#, fuzzy +msgid "Bass Enhancer" +msgstr "Balance" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Hørestyrke" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +#, fuzzy +msgid "Delay" +msgstr "Pre Forsinkelse" + +#: src/tags_plugin_name.cpp:34 +#, fuzzy +msgid "Echo Canceller" +msgstr "Annuller" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +#, fuzzy +msgid "Filter" +msgstr "Filterlængde" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "" + +#: src/tags_plugin_name.cpp:41 +#, fuzzy +msgid "Maximizer" +msgstr "Maksimum" + +#: src/tags_plugin_name.cpp:42 +#, fuzzy +msgid "Multiband Compressor" +msgstr "Kompressor" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Serveroplysninger" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Reduktion" + +#: src/tags_plugin_name.cpp:47 +#, fuzzy +msgid "Stereo Tools" +msgstr "Stereotilstand" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects er en advanceret lydmanipuleringsværktøj. Det inkluderer en " +#~ "equalizer, begrænser, kompressor og et efterklangsværktøj, for blot at " +#~ "nævne nogle få. For at supplere til dette er der også en indbygget " +#~ "spektrumanalysator." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects er efterfølgeren til PulseEffects. EasyEffects understøtter " +#~ "kun PipeWires lydserver. PulseAudio brugere bør i stedet bruge " +#~ "PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Da EasyEffects bruger PipeWires standard lydserver, vil den virke med de " +#~ "fleste, hvis ikke alle, progammer du bruger." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Ud over manipulering af lydudgange, er EasyEffects i stand til at anvende " +#~ "effekter på en input-enhed, f.eks. en mikrofon. Dette er f.eks. nyttigt i " +#~ "lydoptagelse, men det virker også godt under samtaler." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Når EasyEffects startes, husker den automatisk den konfiguration, der " +#~ "blev brugt i sidste session. Det er også muligt at gemme alle nuværende " +#~ "indstillinger som profiler." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "Hovedsiden viser to lydoutput apps" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "Basforstærkersiden, der viser lydkontroller" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "Convolver-siden, der viser lydkontrolelementer" + +#~ msgid "This release adds the following features:" +#~ msgstr "Denne udgivelse tilføjer følgende funktioner:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bånd 1" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Der er en ny indstilling, der giver brugeren mulighed for at vælge en " +#~ "inaktivitetstimeout for pipelinen. Når ingen klient spiller" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "til eller optagelse fra vores enheder vil filtrene blive fjernet, når " +#~ "timeout er nået. Dette gøres for at sikre" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "vi spilder ikke CPU-kraft på at processerer tavshed." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "Autogain-pluginet giver nu brugeren mulighed for at vælge, hvilken af de " +#~ "tre lydstyrker der bruges til at beregne den geometriske" + +#~ msgid "mean." +#~ msgstr "middel." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "Autogain-pluginet tillader nu at indstille den maksimale historik og " +#~ "bruger ikke længere `libebur128` histogramtilstand." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Dette bør undgå de tilfælde, hvor den 'Integrerede' lydstyrke bliver " +#~ "hængende for evigt i den samme værdi." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "EasyEffects-ikonet er blevet opdateret på en måde, der burde gøre det " +#~ "synligt i QT-skriveborde." + +#~ msgid "Average" +#~ msgstr "Gennemsnitlig" + +#~ msgid "Failed" +#~ msgstr "Fejlede" + +#~ msgid "Use Default" +#~ msgstr "Brug Standard" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Fjern denne modelfil" + +#~ msgid "Import Presets" +#~ msgstr "Importer Forindstillinger" + +#~ msgid "Start Service at Login" +#~ msgstr "Start Tjeneste ved Login" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktive Modeller" + +#~ msgid "Add to Blocklist" +#~ msgstr "Tilføj til Blokliste" + +#~ msgid "Blocklist" +#~ msgstr "Blockliste" + +#~ msgid "Add Plugin" +#~ msgstr "Tilføj Plugin" + +#~ msgid "Speakers" +#~ msgstr "Højtalerer" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Plugins" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Aktiveret" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Aktiveret" + +#~ msgid "Format" +#~ msgstr "Formater" + +#~ msgid "Latency" +#~ msgstr "Forsinkelse" + +#~ msgid "Faster" +#~ msgstr "Hurtigere" + +#~ msgid "Preserve Formant" +#~ msgstr "Bevar Formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Player Name" +#~ msgstr "Spillernavn" + +#~ msgid "Show Blocklisted Players" +#~ msgstr "Vis Bloklistede Spillere" + +#~ msgid "RLC (BT)" +#~ msgstr "BLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "7bit" +#~ msgstr "7bit" + +#~ msgid "8bit" +#~ msgstr "8bit" + +#~ msgid "11bit" +#~ msgstr "11bit" + +#~ msgid "12bit" +#~ msgstr "12bit" + +#~ msgid "15bit" +#~ msgstr "15bit" + +#~ msgid "16bit" +#~ msgstr "16bit" + +#~ msgid "23bit" +#~ msgstr "23bit" + +#~ msgid "24bit" +#~ msgstr "24bit" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Output Channel" +#~ msgstr "Udgangskanal" + +#~ msgid "Channel" +#~ msgstr "Kanal" + +#~ msgid "Value" +#~ msgstr "Værdi" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..ffd0217 --- /dev/null +++ b/po/de.po @@ -0,0 +1,3610 @@ +# German translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the EasyEffects package. +# Bleuzen , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-15 14:19+0000\n" +"Last-Translator: Florian Schaupp \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Equalizer, Kompressor und andere Audioeffekte" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Audio Effekte für PipeWire Anwendungen" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "Limiter;Kompressor;Hall;Equalizer;Autovolumen;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Voreinstellungen\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "Aktiviert" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "Ausschließen" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Anwendung stummschalten" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Anwendungs-Lautstärke" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Einstellungen" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Handbuch" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Tastenkürzel" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Einstellungen zurücksetzen" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Über EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Voreinstellungen" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Voreinstellungs-Menü" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Globale Umleitung" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Hauptmenü" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects Fenster" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Anwendungs-Liste" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "Leere Liste" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "Keine Audio-Anwendungen verfügbar" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Ziel" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "Gesamter Verlauf" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Referenz" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentan" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Kurzzeitig" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integriert" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "Geometrisches Mittel (MSI)" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "Geometrisches Mittel (MS)" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "Geometrisches Mittel (MI)" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "Geometrisches Mittel (SI)" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Verlauf löschen" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativ" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Umfang" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Lautstärke" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Ausgangsverstärkung" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Eingabe" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Eingangsverstärkungs-Plugin" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Ausgang" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Ausgangsverstärkungs-Plugin" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Zurücksetzen" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Nutze" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Gerät" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Name" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Profil" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Voreinstellung" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "automatisch geladene Voreinstellung entfernen" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Zuhören" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Oberwellen mischen" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "Dritte" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "Zweite" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Betrag" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Obertöne" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Bereich" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Boden" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "untere Grenze" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Link" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Anwendungen" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "Zu ausgeschlossenen Anwendungen hinzufügen" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "Liste der ausgeschlossenen Anwendungen" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "Ausgeschlossene Anwendungen anzeigen" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompressor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modus" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Abwärts" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Aufwärts" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Boosten" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Kompressionsmodus" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Verstärkungsschwelle" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Verstärkung" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Ansprechzeit" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Zeit" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Schwelle" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "Ansprechzeit" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "Anprech-Schwelle" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Freigabe" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Ausklingzeit" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "Abkling-Schwelle" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Verhältnis" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Übergang" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Hebung" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Sidechain" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Hochpunkt" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Tiefpass" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Einheitlich" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Sidechain-Modus" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Quelle" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Mitte" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Seite" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Links" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Rechts" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Sidechain-Quelle" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Typ" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Feedforward" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Feedback" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Extern" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Sidechain-Typ" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Eingabegerät" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "Vorverstärkung" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reaktivität" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Ausblick" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Sidechain-Filter" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Hochpass" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frequenz" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Aus" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/okt" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/okt" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/okt" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Hochpassfilter-Modus" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Hochpassfilter-Frequenz" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Tiefpassfilter-Modus" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Verstärkung" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Steigung" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Kurve" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Linker Kanal" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Rechter Kanal" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Impulse" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Stereo-Breite" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "logarithmische Skala" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Automatische Verstärkungsregelung" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Rate" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Probenahme" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Dauer" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "Impulsantworten kombinieren" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Name der Ausgabedatei" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Impuls importieren" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Suche" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "Impulsdatei suchen" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "Impulsfilter-Liste" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Standard" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Abgrenzung" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Speisung" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Umleiten" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Stummschalten" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Erkennung" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Breit" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Teilen" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "F1 Teilen" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "Teilfrequenz 1" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2 Peak" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "Frequenz 2 Peak" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1 Verstärkung" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "Frequenz 1 Verstärkung" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2 Level" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "Frequenz 2 Level" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2 Peak Q" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "Frequenz 2 Peak Q" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Nachgiebigkeit" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Erkannt" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Senkung" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Rahmengröße" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filter" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "Ausgeschlossene Anwendungen" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bereiche" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Kanäle trennen" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Flacher Frequenzgang" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Frequenzen berechnen" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "APO Preset laden" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Glocke" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Hochpass" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Höhen-Kuhschwanzfilter" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Tiefpass" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Tiefen-Kuhschwanzfilter" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Badewannenfilter" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonanz" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Allpass" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Band Typ" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Band Modus" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Steigung" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Band Kurve" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Breite" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Qualität" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "obere Grenze" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Zugriff" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Beschreibung" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "diese Modell-Datei entfernen" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/okt Tiefpass" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/okt Tiefpass" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/okt Tiefpass" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/okt Hochpass" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/okt Hochpass" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/okt Hochpass" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/okt Bandpass" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/okt Bandpass" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/okt Bandpass" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/okt Bandsperre" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/okt Bandsperre" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/okt Bandsperre" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Trägheit" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Gate" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Ausklingzeit" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Extern" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Gating" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Überabtastung" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "Herm Breit" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "Exp Breit" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Line Thin" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Line Wide" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Line Tail" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Keine" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "Halb x2(2L)" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "Halb x2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "Halb x3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "Halb x3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "Halb x4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "Halb x4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "Halb x6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "Halb x6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "Halb x8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "Halb x8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "Voll x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "Voll x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "Voll x3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "Voll x3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "Voll x4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "Voll x4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "Voll x6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "Voll x6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "Voll x8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "Voll x8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "SC Vorverstärker" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Sidechain Vorverstärkung" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Boost" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Stereoverbindung" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Externe Sidechain" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "Externe Sidechain-Quelle" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "Auto Leveling" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "Auto Leveling Attack" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "Auto Leveling Release" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "Auto Leveling Knee" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "Verstärkung Links" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "Verstärkung Rechts" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Sidechain Links" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Sidechain Rechts" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standard" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Flach" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "FFT-Größe" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "Auflösung der schnellen Fourier-Transformation" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Ausgangslautstärke" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Grenze" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Betriebsmodus" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Klassisch" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Modern" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Sidechain Boost" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Band-Liste" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Band 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Band 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Band 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Band 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Band 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Band 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Band 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Band 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Band Beginn" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Band Ende" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Band Kompressionsmodus" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Band Umleitung" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Band Sidechain Einstellungen" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Hochpass-Filter" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Tiefpassfilter-Frequenz" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Tiefpass-Filter" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Tiefpassfilter-Frequenz" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "Vorverstärker" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Bereichs-Verstärkung" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "Band Bereich" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "Band-Kurve" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "Teilungsmodus" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "1/2 Teilen" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "Teilfrequenz 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "2/3 Teilen" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "Teilfrequenz 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "3/4 Teilen" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "Teilfrequenz 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Subband" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "Band 1 Umleitung" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "Nur Band 1" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "Band 1 Erkennung" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "Band 1 Ansprechzeit" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "Band 1 Freigabe" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "Band 1 Schwelle" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "Band 1 Verhältnis" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "Band 1 Knie" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "Band 1 Hebung" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Senkung" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "maximale Band 1 Reduktion" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Tiefband" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "Band 2 Umleitung" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "Nur Band 2" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "Band 2 Erkennung" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "Band 2 Ansprechzeit" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "Band 2 Freigabe" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "Band 2 Schwelle" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "Band 2 Verhältnis" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "Band 2 Knie" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "Band 2 Hebung" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "maximale Band 2 Reduktion" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Mittelband" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "Band 3 Umleitung" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "Nur Band 3" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "Band 3 Erkennung" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "Band 3 Ansprechzeit" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "Band 3 Freigabe" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "Band 3 Schwelle" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "Band 3 Verhältnis" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "Band 3 Knie" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "Band 3 Hebung" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "maximale Band 3 Reduktion" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Hochband" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "Band 4 Umleitung" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "Nur Band 4" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "Band 4 Erkennung" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "Band 4 Ansprechzeit" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "Band 4 Freigabe" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "Band 4 Schwelle" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "Band 4 Verhältnis" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "Band 4 Knie" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "Band 4 Hebung" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "Maximale Band 4 Reduktion" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Allgemein" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Standardeingang nutzen" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "benutzerdefiniertes Eingabegerät" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Standardausgang nutzen" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "benutzerdefiniertes Ausgabegerät" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Serverinformation" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Header-Version" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Bibliotheksversion" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Abtastrate" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "Minimales Quantum" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "Maximales Quantum" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "Standard Quantum" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "automatisch geladene Voreinstellungen" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Ausgabegeräte" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Ausgabe-Voreinstellungen" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Assoziation erstellen" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "automatische Ausgabe-Voreinstellung hinzufügen" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "automatisch geladene Ausgabe-Voreinstellungen" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Eingabegeräte" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Eingabe-Voreinstellungen" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "automatische Eingangs-Voreinstellung hinzufügen" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "automatisch geladene Eingang-Voreinstellungen" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Module" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "Modulliste" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clienten" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "Client-Liste" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Testsignal" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Status" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Aktiviert" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Eigenschaften" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanäle" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Beide" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Beide Kanäle" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Schwingungsverlauf" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Sinuswelle" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Weißes Rauschen" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "Schnell" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "Hohe Qualität" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "Hohe Konsistenz" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "Format" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "Verschoben" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "Beibehalten" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "Transient" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "Klar" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "Gemischt" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "Sanft" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "Erkennung" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "Verbindung" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "Hart" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "Weich" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "Phase" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "Laminar" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "Unabhängig" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Cent" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Halbtöne" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktaven" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Diese Preset-Datei entfernen" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "Effekt hinzufügen" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "Benutzte Plugins" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "Keine Effekte" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "Audio Stream nicht verändert" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "Plugin suchen" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Pluginliste" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Allgemein" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Dienst" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "Dienst beim Systemstart starten" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "Beim Schließen des Fensters beenden" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Audio" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "Alle Ausgänge verarbeiten" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "Alle Eingänge verarbeiten" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "Streams von Monitor-Geräten ignorieren" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "Verwende kubische Lautstärke" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "Lautstärke von virtuellen EasyEffects Geräten beim Start zurücksetzen" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "Timeout durch Inaktivität" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Stil" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Benutze dunkles Thema" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "Menüs beim Rausklicken schließen" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Form" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Balken" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Linien" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Punkte" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Punkte" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Höhe" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Linienbreite" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Ausfüllen" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "Balkenbegrenzung anzeigen" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "Abgerundete Ecken" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Farbe" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Linien und Leisten" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Achsentitel" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Frequenzspanne" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Minimum" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maximum" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Laden" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Aktuelle Einstellungen in dieser Preset-Datei speichern" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Diese Preset-Datei entfernen" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Neuer Ausgabe-Presetname" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Preset erstellen" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Preset importieren" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Ausgabe-Preset suchen" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Liste der Ausgabe-Voreinstellungen" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Neuer Eingabe-Presetname" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Eingabe-Preset suchen" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Eingabe-Voreinstellungen" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Hochfrequenz-Dämpfung" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Raumgröße" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Klein" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Mittel" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Groß" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Groß/sanft" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimentell" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Verbreitung" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Vorverzögerung" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Abklingzeit" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Feuchtigkeits-Anteil" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Feuchtigkeit" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Trockenheits-Anteil" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "Trockenheit" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Bassschnitt" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Höhenschnitt" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Atmosphäre" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Leere Wände" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Raum" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Große leere Halle" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Große besetzte Halle" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Modell importieren" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modelle" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Standard-Modell" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "RNNoise-Modell Liste" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Aktives Modell" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Standard RNNoise-Modell" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Übersicht" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Öffne die EasyEffects Bedinungsanleitung" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Vollbildschirm/Vom Vollbildschirm wiederherstellen" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Fenster schließen" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "EasyEffects beenden" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Eingangsverstärkung" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Softclip-Stufe" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Stereo-Matrix" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Stereo Standard)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Stereo zu Mittelseite)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Mittelseite zu Stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (Linker Monokanal)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Rechter Monokanal)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Monosumme L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Stereo Kanäle tauschen)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Stereo Modus" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Phase umkehren" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Seitenebene" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Seitenausgleich" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Mittlere Ebene" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Mittleres Panorama" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Ausgabe-Balance" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Verzögerung L/R" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Verzögerung L/R" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Stereo Basis" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Stereo Phase" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "läuft" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "pausiert" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Untätig" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "Erstellen" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Fehler" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Unbekannt" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "Kanäle" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Ausgabe-Voreinstellungen: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Eingabe-Voreinstellungen: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Audioeffekte für PipeWire Anwendungen" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Beende EasyEffects. Nützlich bei der Ausführung als Service." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Lade ein Preset. Beispiel: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "EasyEffects zurücksetzen." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Fenster verstecken." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Globale Umleitung. 1 zum Aktivieren, 2 zum Deaktivieren und 3 zum Erhalten " +"des Status" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Verfügbare Voreinstellungen anzeigen." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Impulsfilter-Liste" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Impulsdatei importieren" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Öffnen" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Abbrechen" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Impulsantwort" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Impuls laden" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Impuls entfernen" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Impulsfilter-Liste" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Die Impulsdatei konnte nicht geladen werden" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Rekorder" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Spieler" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "Effekte" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "unendlich" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "APO Preset-Datei importieren" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "APO Voreinstellungen" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Voreinstellung automatisch laden" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Entfernen" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Ausgabegerät" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Hinzufügen" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Preset importieren" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Modell-Datei importieren" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "RNNoise-Modelle" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Bassverstärker" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Bass Lautheit" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Crystalizer" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Verzögerung" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Echounterdrückung" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Equalizer" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Exciter" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filter" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limiter" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximierer" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Multiband-Kompressor" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Multiband Gate" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Tonhöhe" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Nachhall" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Rauschreduzierung" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Stereowerkzeuge" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects ist ein fortgeschrittenes Audio-Manipulations-Tool. Es " +#~ "enthält einen Equalizer, Limiter, Kompressor, einen Hall und viele " +#~ "weitere. Dies wird zudem mit einem eingebauten Spektrumanalysator ergänzt." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects ist der Nachfolger von PulseEffects. EasyEffects unterstützt " +#~ "nur den Audioserver von PipeWire. PulseAudio-Nutzer sollte stattdessen " +#~ "PulseEffects verwenden." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Da EasyEffects den Standard PulseAudio Sound Server benutzt, funktioniert " +#~ "es mit so ziemlich allen Anwendungen. Alle unterstützten Anwendungen " +#~ "werden im Hauptfenster angezeigt, wo diese individuell ein-/ausgeschaltet " +#~ "werden können." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Neben der Audiomanipulation des Ausgangs kann EasyEffects auch Effekte " +#~ "auf Eingabegeräte, z.B. Mikrofone, anwenden. Dies ist sinnvoll für z.B. " +#~ "Audioaufnahmen oder VOIP Anwendungen." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Wenn EasyEffects startet, stellt es die Konfiguration der letzten Sitzung " +#~ "wieder her. Es ist auch möglich, die aktuellen Einstellungen als Profile " +#~ "zu speichern." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "Die Hauptseite mit zwei Audioausgabe-Apps" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "Die Bassverstärkerseite mit den Audiosteuerelementen" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "Die Convolverseite mit den Audiosteuerelementen" + +#~ msgid "This release adds the following features:" +#~ msgstr "Dieser Release fügt die folgenden Features hinzu:" + +#~ msgid "" +#~ "When effects are disable to an application we now set its target metadata " +#~ "to null. This will allow the media session" +#~ msgstr "" +#~ "Wenn jetzt Effekte einer Anwendung deaktiviert werden, setzen wir dessen " +#~ "Ziel-Metadaten auf null. Dies ermöglicht der Medien Session" + +#~ msgid "manager" +#~ msgstr "Manager" + +#~ msgid "" +#~ "A new configuration option was added. It allows EasyEffects to ignore " +#~ "streams whose purpose is to monitor sink" +#~ msgstr "" +#~ "Es wurde eine neue Einstellungsmöglichkeit hinzugefügt. Diese erlaubt " +#~ "EasyEffects überwachende Eingänge zu ignorieren" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr ". Dies sollte einige Probleme in Verbindung mit OBS beheben." + +#~ msgid "The code that shows the stream sample format has been improved" +#~ msgstr "Der Code zum Anzeigen des Stream-Auflösungsformats wurde verbessert" + +#~ msgid "" +#~ "The rnnoise library is now optional. This should help package maintainers " +#~ "to build" +#~ msgstr "" +#~ "Die rnnoise-Bibliothek ist jetzt optional. Dadurch sollten Paket-" +#~ "Maintainer einfacher" + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "" +#~ "Debian Pakete bauen können. Siehe Problem #1000 für weiter Informationen." + +#~ msgid "" +#~ "Our logs now show the source code line where the messages are being " +#~ "printed" +#~ msgstr "" +#~ "In den Logs werden jetzt die Sourcecode-Zeilen angezeigt, welche die " +#~ "Nachricht ausgelöst hat" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Dieser Release behebt die folgenden Fehler:" + +#~ msgid "" +#~ "The \"enable effects\" checkbox in our window was not being updated when " +#~ "third party programs like pavucontrol" +#~ msgstr "" +#~ "Die \"Effekte aktivieren\" Checkbox im Fenster wurde nicht aktualisiert, " +#~ "wenn Programme wie Pavucontrol" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "den Stream von unserem virtuellem Gerät entfernt haben. Dies sollte jetzt " +#~ "behoben sein." + +#~ msgid "" +#~ "Fixed a crash that could happen when the maximum autogain history was " +#~ "changed." +#~ msgstr "" +#~ "Ein Absturz-Problem wurde behoben, wenn der Verlauf der automatischen " +#~ "Verstärkungsregelung verändert wurde." + +#~ msgid "Avoid crashes when pw-mididump is running" +#~ msgstr "Absturz-Probleme durch pw-mididump wurden behoben" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "Die Benutzer-Oberfläche der Tonhöhe-Erweiterung wurde verbessert" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "" +#~ "Unser App-Symbol ist jetzt auch mit QT-basierten Desktops kompatibel" + +#~ msgid "" +#~ "Our blocklist code will use the `application.id` tag if the stream sets it" +#~ msgstr "" +#~ "Unser Blocklist-Code berücksichtigt jetzt den `application.id` Tag, " +#~ "sofern dieser gesetzt ist" + +#~ msgid "" +#~ "In order to avoid problems with the mouse scroll the entries in the " +#~ "applications list shown in our `Players/Recorders`" +#~ msgstr "" +#~ "Um Probleme beim Maus-Scrollen zu vermeiden, werden Einträge in der " +#~ "Anwendungen-Liste jetzt unter `Spieler` angezeigt" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "Tab ohne Lautstärke-Skala angezeigt. Weitere Details zu dem Problem und " +#~ "dessen Lösung kann bei Ticket #1211" + +#~ msgid "and #1427" +#~ msgstr "und #1427 nachgelesen werden" + +#~ msgid "" +#~ "When no application is available for display in the `Players/Recorders` a " +#~ "message will be shown to the user" +#~ msgstr "" +#~ "Wenn keine Anwendungen verfügbar sind, wird in `Spieler` eine Nachricht " +#~ "dem Nutzer angezeigt" + +#~ msgid "Many translation updates" +#~ msgstr "Unzählige Übersetzungen aktualisiert" + +#~ msgid "" +#~ "Fixed a bug where EasyEffects crashed when the number of points displayed " +#~ "in the spectrum was changed while" +#~ msgstr "" +#~ "Es wurde ein Fehler behoben, der EasyEffects zum Absturz brachte, wenn " +#~ "die Anzahl der angezeigten Punkte im Spektrum geändert wurde, während" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "die Pipeline aktiv und das Spektrum-Widget sichtbar war" + +#~ msgid "" +#~ "The pipeline latency value displayed in our window could be wrong in some " +#~ "situations. This was fixed." +#~ msgstr "" +#~ "Der angezeigte Pipeline-Latenz-Wert war in bestimmten Situationen falsch. " +#~ "Dies wurde behoben." + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Es gibt eine neue Einstellung, die es den BenutzerInnen erlaubt, einen " +#~ "Timeout nach Inaktivität für den Audioeffekt festzulegen. Wenn kein " +#~ "Client spielt" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "oder von einem Geräte aufnimmt, werden die Filter getrennt, nachdem der " +#~ "Timeout erreicht ist. Dies wird getan um sicherzustellen," + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "" +#~ "dass keine CPU-Leistung für das Verarbeiten von Stille verschwendet wird." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "Das Autogain-Plugin erlaubt es dem Benutzer nun auszuwählen, welche der " +#~ "drei Lautstärken für die Berechnung der geometrischen Werte verwendet " +#~ "werden sollen" + +#~ msgid "mean." +#~ msgstr "gemein." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "Das Autogain-Plugin erlaubt nun die Einstellung des maximalen Verlaufs " +#~ "und verwendet nicht mehr den Histogramm-Modus `libebur128`." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Dies sollte verhindern, dass die \"Integrierte\" Lautheit für immer auf " +#~ "demselben Wert stehen bleibt." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "Das EasyEffects-Symbol wurde aktualisiert, damit es auf QT-Desktops " +#~ "sichtbar ist." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Diese Version behebt den folgenden Fehler:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "Die Kommandozeilen-Option, welche den globalen `bypass`-Status " +#~ "zurückliefert, funktioniert wieder." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Dieser Release fügt die folgenden Features hinzu:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Der Crossfeed-Filter sollte nun besser mit PipeWire's dynamischem Wechsel " +#~ "der Latenz klarkommen. Unstetigkeiten in der Lautstärke sollten in diesen " +#~ "Situationen nicht mehr auftreten." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Es wurde ein Fehler behoben, der verhinderte, dass Monomikrofone " +#~ "ordnungsgemäß mit EasyEffects funktionierten" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Unterstützung für die nächste PipeWire Version '0.3.44'" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Der Autogain-Filter sollte nun besser mit den dynamischen Latenzschaltern " +#~ "von PipeWire umgehen. Lautstärke-Sprünge sollten in diesen Situationen " +#~ "nicht mehr auftreten." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Wir haben eine Option hinzugefügt, mit der die Lautstärke und die " +#~ "Stummschaltung der virtuellen Geräte beim Start von EasyEffects " +#~ "zurückgesetzt werden können. Das sollte in den Fällen helfen, in denen " +#~ "die Geräte aus unbekannten Gründen vom Audioserver selbst stummgeschaltet " +#~ "werden." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Computer in Bereitschaft werden nun besser unterstützt." + +#~ msgid "Updated translations" +#~ msgstr "Übersetzungen wurden aktualisiert" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Es wurde ein Fehler behohen, der die Anwendung zum Absturz brachte, wenn " +#~ "versucht wurde, automatisch ein Profil ohne Voreinstellungen anzulegen." + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "Es wurde ein Fehler behoben, der beim Setzen der Equalizer " +#~ "Flankensteilheit (Q-Wert) auf `Null`die Anwendung zum Abstürzen brachte." + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita wird verwendet in manchen Teilen unseres Fensters und um " +#~ "zwischen dunklem und hellem Farbschema umzuschalten." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "Das Einstellungs-Menü wurde auf LibAdwaita-Komponenten umgebaut." + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "Der Import von Equalizer APO Vorlagen wurde verbessert, sodass dieses " +#~ "nicht mehr nur auf Glocken-Filter, sondern auch auf andere unterstützte " +#~ "angewendet werden kann" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "Die `alle Einstellungen zurücksetzen`-Funktion sollte jetzt auch für " +#~ "Flatpak funktionieren." + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "Jetzt gibt es eine Möglichkeit das automatische Verstecken des Menüs zu " +#~ "deaktivieren. Dies könnte bei einigen Problemen mit den GTK 4.0 Popover-" +#~ "Menüs helfen." + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "APO Voreinstellungen parsen ist jetzt robuster dank Komma als " +#~ "Tausendertrennzeichen im mittleren Frequenzbereich." + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "Die fmt Bibliothek ist eine neue Abhängigkeit; zumindest solange der C++ " +#~ "Kompiler dies nicht unterstützt. Dies sollte in den kommenden Jahren der " +#~ "Fall sein." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM und GLIBMM sind jetzt keine Abhängigkeiten mehr. Jetzt verwenden " +#~ "wir GTK 4.0 direkt." + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "Jetzt ist es möglich Impulsantworten im Convolver zu kombinieren. Eine " +#~ "neue Impuls-Datei wird generiert und sollte in der Impuls-Liste sichtbar " +#~ "sein." + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "X-Achsen-Anzeige in unseren Graphen verbessert. Jetzt wird die Anzahl der " +#~ "Beschriftungen dynamisch an die Fensterbreite angepasst." + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "Die Dokumentation wurde um die neuen EasyEffects-Funktionen erweitert. " +#~ "PulseEffects-Referenzen wurden entfernt. Ein Button zur Dokumentation " +#~ "wurde dem Menü hinzugefügt." + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "Wenn ein Drehknopf einen Wertebereich außerhalb des möglichen Bereichs " +#~ "hat, wird dieser jetzt an die Grenzen angepasst - statt den vorherigen " +#~ "Wert zu verwenden." + +#~ msgid "" +#~ "The application window now remembers the maximized state and restores it " +#~ "on the next opening event." +#~ msgstr "" +#~ "Das Anwengungsfenster speichert sich jetzt den Maximiert-Status und " +#~ "stellt diesen beim nächsten Öffnen wieder her." + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "Die `tbb`-Bibliothek ist jetzt eine neue Abhängigkeit" + +#~ msgid "" +#~ "The Limiter and the Multiband Compressor plugins can now use an optional " +#~ "external sidechain." +#~ msgstr "" +#~ "Die Begrenzer- und Multiband-Kompressor-Plugins können jetzt optional " +#~ "eine externe Sidechain verwenden." + +#~ msgid "" +#~ "The Autogain plugin now allows the user to select which Loudness is used " +#~ "as reference for the volume correction." +#~ msgstr "" +#~ "Der Benutzer kann jetzt im Autogain-Plugin auswählen, welche Loudness als " +#~ "Referenz zur Lautstärken-Korrektur verwendet werden soll." + +#~ msgid "" +#~ "The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +#~ "Amplification\" parameter." +#~ msgstr "" +#~ "Das APO-Profile-Import-Feature des Equalizer-Plugins parst jetzt auch den " +#~ "\"Pre Amplification\" Parameter." + +#~ msgid "Optional Cubic Volume can be enabled in General Settings." +#~ msgstr "" +#~ "Kubische Lautstärke kann jetzt optional in den allgemeinen Einstellungen " +#~ "aktiviert werden." + +#~ msgid "" +#~ "PipeWire monitor streams are now excluded and removed from the " +#~ "applications list." +#~ msgstr "" +#~ "PipeWire Monitor-Streams werden jetzt von der Applikaitonsliste " +#~ "ausgeschlossen." + +#~ msgid "Hopefully crashes like the one reported at [1172]( are fixed." +#~ msgstr "Hoffentlich sind jetzt Abstürze, wie in [1172] gemeldet, behoben." + +#~ msgid "Prevented a case in which Spectrum was crashing." +#~ msgstr "Ein Absturz durch die Spektrum-Anzeige wurde verindert." + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "Pavucontrol wird jetzt nicht mehr in der Liste der Aufnahme-Anwendungen " +#~ "auf nicht-englischen Systemen angezeigt." + +#~ msgid "" +#~ "Improved compatibility with WirePlumber. This is needed to run on systems " +#~ "that decided to use it instead of the" +#~ msgstr "" +#~ "Kompatibilität mit WirePlumber verbesser. Dies ist notwendig, um auf " +#~ "Systemen zu laufen, die sich dazu entschieden haben, es statt" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "dem mitgelieferten PipeWire-Sitzungsmanager zu verwenden. Weitere " +#~ "Informationen bei Fehlerticket [1144](" + +#~ msgid "" +#~ "When trying to add an autoloading profile for a device already in the " +#~ "list its target preset will be updated. This way we can change the " +#~ "profile preset without having to remove and recreating it." +#~ msgstr "" +#~ "Die Ziel-Voreinstellung für Geräte in der Liste werden aktualisiert, wenn " +#~ "ein Standardprofil hinterlegt wird. So kann die Profil-Voreinstellung " +#~ "angepasst werden, ohne das es komplett neu angelegt werden muss." + +#~ msgid "" +#~ "The preset autoloading support implementation was redesigned again. It " +#~ "should work on more hardware now. For more information see issue [1051](" +#~ msgstr "" +#~ "Das Laden von Standard-Voreinstellungen wurde wieder verändert. Jetzt " +#~ "sollten mehr Geräte damit funktionieren. Für weitere Informationen siehe " +#~ "Ticket [1051](" + +#~ msgid "" +#~ "If the Limiter or the Maximizer are set in the last position of the " +#~ "plugin stack, new plugins are added at the second to last position in " +#~ "order to prevent hardware damage on eventually high output level." +#~ msgstr "" +#~ "Wenn der Begrenzer oder Maximierer an der letzten Position der Plugin-" +#~ "Kette stehen, werden weitere Plugins an der zweitletzen Position " +#~ "hinzugefügt, um eventuelle Schäden an den Geräten durch zu hohe Laustärke " +#~ "zu vermeiden." + +#~ msgid "" +#~ "Removing an application from the blocklist, its previous enabled state is " +#~ "restored." +#~ msgstr "" +#~ "Wird eine Anwendung von der Blockliste entfernt, so werden die zuvor " +#~ "aktivierten Einstellungen wiederhergestellt." + +#~ msgid "" +#~ "Sometimes when removing imported models from the noise reduction plugin " +#~ "the current used model was not properly updated. This should be fixed now." +#~ msgstr "" +#~ "Manchmal wurde beim Entfernen von importierten Rauschreduzierungs-" +#~ "Modellen das aktuelle Modell nicht korrekt gesetzt. Dies sollte nun " +#~ "behoben sein." + +#~ msgid "" +#~ "When editing presets files in an external editor, duplicated entries " +#~ "won't be shown in our presets menu." +#~ msgstr "" +#~ "Wenn Voreinstellungs-Datein in einem externen Editor verändert wurden, " +#~ "konnten duplizierte Einträge nicht mehr in dem Menü für Voreinstellungen " +#~ "angezeigt werden." + +#~ msgid "Now the blocklist is correctly set when switching presets." +#~ msgstr "" +#~ "Jetzt wird die Blockliste korrekt gesetzt, wenn Voreinstellungen " +#~ "gewechselt werden." + +#~ msgid "" +#~ "Now the status of the global bypass button is correctly updated when " +#~ "changing plugin stack." +#~ msgstr "" +#~ "Jetzt wird der Status der Knopfes für die globalen Umleitung korrekt " +#~ "aktualisiert, wenn die Plugin-Liste verändert wird." + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Fehlende Symbole des Systems sollten jetzt nicht mehr in der " +#~ "Applikationsinfo-Oberfläche angezeigt werden" + +#~ msgid "" +#~ "Some icons not showing in Plasma DE with Breeze icon theme should appear " +#~ "now." +#~ msgstr "" +#~ "Manche Symbole, die auf der Plasma-Desktopoberfläche gefehlt haben, " +#~ "sollten jetzt wieder angezeigt werden." + +#~ msgid "Updated Chinese translation." +#~ msgstr "Die chinesische Übersetzung wurde aktualisiert." + +#~ msgid "Updated Italian translation." +#~ msgstr "Die italienische Übersetzung wurde aktualisiert." + +#~ msgid "Added support for the compressor parameter `Boost Amount`" +#~ msgstr "Der Kompressor-Parameter `Boost Amount`wird jetzt unterstützt" + +#~ msgid "" +#~ "The multiband compressor plugin now uses the stereo multiband compressor " +#~ "plugin from Linux Studio Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Das Multiband-Kompressor Plugin verwendet jetzt das Stereo Multiband-" +#~ "Kompressor Plugin von Linux Studio anstatt des Plugins von Calf Studio." + +#~ msgid "" +#~ "The limiter plugin now uses the stereo limiter plugin from Linux Studio " +#~ "Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Das Begrenzer Plugin verwendet jetzt das Begrenzer Plugin von Linux " +#~ "Studio Plugins statt das von Calf Studio." + +#~ msgid "" +#~ "LV2 filters now are spawned in PipeWire graph only when loaded the first " +#~ "time. Once loaded, they remain connected until EasyEffects shutdown." +#~ msgstr "" +#~ "LV2 Filter werden jetzt in der PipeWire nur beim ersten Mal eingehängt. " +#~ "Jetzt bleiben diese eingehängt, bis EasyEffects beendet wird." + +#~ msgid "The echo canceller sampling rate is now properly set." +#~ msgstr "Die Abtastrate der Echounterdrückung wird jetzt korrekt gesetzt." + +#~ msgid "" +#~ "The threshold parameter from the deesser plugin is now saved to the " +#~ "preset file." +#~ msgstr "" +#~ "Der Grenz-Parameter des Deesser Plugins wird jetzt in der Voreinstellungs-" +#~ "Datei gespeichert." + +#~ msgid "" +#~ "Depending on the input gain or output gain values the corresponding level " +#~ "bars could not be aligned." +#~ msgstr "" +#~ "Die Balkenvisualisierung konnte nicht abhängig von der Eingangs- oder " +#~ "Ausgangsverstäkung angepasst werden." + +#~ msgid "" +#~ "When adding more equalizer bands they are set to `Bell` instead of `Off`." +#~ msgstr "" +#~ "Beim Hinzufügen von Equalizer-Bereichen, werden diese jetzt mit `Glocke` " +#~ "statt `Aus` vorbesetzt." + +#~ msgid "" +#~ "Equalizer APO presets loading is now working properly on locales " +#~ "different than C." +#~ msgstr "" +#~ "Laden der Equalizer APO Voreinstellungen funktioniert jetzt auch in " +#~ "anderen Sprachen korrekt." + +#~ msgid "Improved linking management between port filter nodes in PipeWire." +#~ msgstr "" +#~ "Verbessertes Verknüfungs-Management zwischen Schnittstellenfilter-Knoten " +#~ "in PipeWire." + +#~ msgid "" +#~ "The crystalizer plugin signal amplification was too high before. It " +#~ "should be within more reasonable levels now." +#~ msgstr "" +#~ "Die Signalverstärkung des Crystalizer Plugins war zuvor zu hoch. Jetzt " +#~ "sollte es mit sinnvolleren Werten vorbelegt sein." + +#~ msgid "" +#~ "Improved the resampler used in the plugins that require one(like the " +#~ "rnnoise plugin)" +#~ msgstr "" +#~ "Der Resampler, der in verschiedenen Plugins (z.B. der " +#~ "Rauschunterdrückung) verwendet wird, wurde verbessert" + +#~ msgid "Setting multiple autoloading presets should be fine now" +#~ msgstr "" +#~ "Setzen von mehreren Standard-Voreinstellungen sollte jetzt funktionieren" + +#~ msgid "Transient windows are now properly set for some plugins dialogs" +#~ msgstr "Die Dialog-Fenster mancher Plugins werden jetzt korrekt dargestellt" + +#~ msgid "" +#~ "The application and its repository have been renamed from PulseEffects to " +#~ "`EasyEffects`" +#~ msgstr "" +#~ "Die Anwendung und dessen Repository wurde von PulseEffects zu " +#~ "`EasyEffects` umbenannt" + +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "GStreamer wurde durch PipeWire-Filter ersetzt." + +#~ msgid "Average" +#~ msgstr "Durchschnitt" + +#~ msgid "Failed" +#~ msgstr "Gescheitert" + +#~ msgid "Use Default" +#~ msgstr "Standard verwenden" + +#~ msgid "Remove this plugin" +#~ msgstr "Dieses Plugin entfernen" + +#~ msgid "Import Presets" +#~ msgstr "Presets importieren" + +#~ msgid "Start Service at Login" +#~ msgstr "Dienst beim Login starten" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktives Modell" + +#~ msgid "Add to Blocklist" +#~ msgstr "Zur Sperrliste hinzufügen" + +#~ msgid "Blocklist" +#~ msgstr "Sperrliste" + +#~ msgid "Add Plugin" +#~ msgstr "Plugin hinzufügen" + +#~ msgid "Speakers" +#~ msgstr "Lautsprecher" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Plugins" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Aktiviert" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Aktiviert" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latenz" + +#~ msgid "idle" +#~ msgstr "inaktiv" + +#~ msgid "Faster" +#~ msgstr "Schneller" + +#~ msgid "Preserve Formant" +#~ msgstr "Formant erhalten" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Player Name" +#~ msgstr "Spielername" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Ausgangsverstärkung" + +#~ msgid "Channel" +#~ msgstr "Kanal" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Boden" + +#~ msgid "Output Effects" +#~ msgstr "Ausgabeeffekte" + +#~ msgid "Settings" +#~ msgstr "Einstellungen" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Einstellungen" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Dauer" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Testsignal" + +#~ msgid "Signal" +#~ msgstr "Signal" + +#~ msgid "Show Spectrum" +#~ msgstr "Spektrum anzeigen" + +#~ msgid "Border" +#~ msgstr "Grenze" + +#~ msgid "Spectrum Type" +#~ msgstr "Spektrumstyp" + +#~ msgid "Spectrum Color" +#~ msgstr "Spektrumfarbe" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Aktives Modell" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Maximale Amplitudenreduktion" + +#~ msgid "Wet" +#~ msgstr "Nass" + +#~ msgid "Dry" +#~ msgstr "Trocken" + +#~ msgid "S/C Level" +#~ msgstr "S/C-Level" + +#~ msgid "Phase Correlation" +#~ msgstr "Phasenkorrelation" + +#~ msgid "Short Term" +#~ msgstr "Kurzfristig" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Low-pass" +#~ msgstr "Tiefpass" + +#~ msgid "Run in Background" +#~ msgstr "Im Hintergrund ausführen" + +#~ msgid "ceil" +#~ msgstr "Begrenzen" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Setze die Lautstärke und schalte Effekte ein/aus" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Enthält einen Equalizer mit integrierten Presets" + +#~ msgid "Input Limiter" +#~ msgstr "Eingabe-Limiter" + +#~ msgid "Calibration" +#~ msgstr "Kalibrierung" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatische Glättungsregelung" + +#~ msgid "Limit" +#~ msgstr "Grenze" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Dämpfung" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Audio-Effekte für Pulseaudio Anwendungen" + +#~ msgid "using" +#~ msgstr "nutzt" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Audioeffekte für Pulseaudio-Anwendungen" + +#~ msgid "Help" +#~ msgstr "Hilfe" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrationsmikrofon" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Dieses Preset automatisch anwenden, wenn das aktuell verwendete Gerät an " +#~ "das System angeschlossen ist" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Version" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Rechteck" + +#~ msgid "Saw" +#~ msgstr "Sägezahn" + +#~ msgid "Triangle" +#~ msgstr "Dreieck" + +#~ msgid "Silence" +#~ msgstr "Ruhe" + +#~ msgid "Pink Noise" +#~ msgstr "Rosa Rauschen" + +#~ msgid "Ticks" +#~ msgstr "Ticken" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaußsches Rauschen" + +#~ msgid "Red Noise" +#~ msgstr "Rotes Rauschen" + +#~ msgid "Blue Noise" +#~ msgstr "Blaues Rauschen" + +#~ msgid "Violet Noise" +#~ msgstr "Violettes Rauschen" + +#~ msgid "Volume" +#~ msgstr "Lautstärke" + +#~ msgid "Window" +#~ msgstr "Fenster" + +#~ msgid "Measure Noise" +#~ msgstr "Rauschen messen" + +#~ msgid "Subtract Noise" +#~ msgstr "Rauschen reduzieren" + +#~ msgid "Extended Filter" +#~ msgstr "Erweiterter Filter" + +#~ msgid "Low" +#~ msgstr "Tief" + +#~ msgid "Moderate" +#~ msgstr "Mäßig" + +#~ msgid "High" +#~ msgstr "Hoch" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Unterdrückungsgrad" + +#~ msgid "Delay Agnostic" +#~ msgstr "Verzögerungsagnostisch" + +#~ msgid "Very High" +#~ msgstr "Sehr hoch" + +#~ msgid "Noise Suppressor" +#~ msgstr "Rauschunterdrücker" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptiv Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Fixiert Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Verstärkungsregler" + +#~ msgid "Detection Likelihood" +#~ msgstr "Erkennungswahrscheinlichkeit" + +#~ msgid "Very Low" +#~ msgstr "Sehr Tief" + +#~ msgid "Voice Detector" +#~ msgstr "Spracherkennung" + +#~ msgid "Use Custom Color" +#~ msgstr "Benutzerdefinierte Farbe benutzen" + +#~ msgid "Use Gradient" +#~ msgstr "Farbverlauf nutzen" + +#~ msgid "Gradient Color" +#~ msgstr "Verlaufsfarbe" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Impulsantwortdatei importieren" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Auswahl der Impulsantwortdatei" + +#~ msgid "Aggressive Mode" +#~ msgstr "Aggressiver Modus" + +#~ msgid "Before" +#~ msgstr "Vorher" + +#~ msgid "After" +#~ msgstr "Nachher" + +#~ msgid "Loudness Range" +#~ msgstr "Lautstärkebereich" + +#~ msgid "Apply" +#~ msgstr "Anwenden" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Standard Samplingrate" + +#~ msgid "Default Source" +#~ msgstr "Standard Audioquelle" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "File" +#~ msgstr "Datei" + +#~ msgid "Configuration" +#~ msgstr "Konfiguration" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Frequenz zurücksetzen" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Einstellungen" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Presets" + +#~ msgid "Auto Gain" +#~ msgstr "Automatische Verstärkungsregelung" + +#~ msgid "Detect Silence" +#~ msgstr "Stille erkennen" + +#~ msgid "Muted" +#~ msgstr "Stumm" + +#~ msgid "Distant Headphones" +#~ msgstr "Entfernte Kopfhörer" + +#~ msgid "Priority Type" +#~ msgstr "Prioritätstyp" + +#~ msgid "Niceness" +#~ msgstr "Qualität" + +#~ msgid "Priority" +#~ msgstr "Priorität" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frequenz" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frequenz" + +#~ msgid "About" +#~ msgstr "Über" + +#~ msgid "Protocol" +#~ msgstr "Protokoll" + +#~ msgid "Default Sample Format" +#~ msgstr "Standard Samplingformat" + +#~ msgid "Channel Mapping" +#~ msgstr "Kanalzuordnung" + +#~ msgid "Resamplers" +#~ msgstr "Resampler" + +#~ msgid "Pipeline Input" +#~ msgstr "Pipeline-Eingang" + +#~ msgid "Buffer" +#~ msgstr "Puffer" + +#~ msgid "Pipeline Output" +#~ msgstr "Pipeline-Ausgang" + +#~ msgid "Block Size" +#~ msgstr "Blockgröße" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#~ msgid "paused" +#~ msgstr "Pausiert" + +#~ msgid "playing" +#~ msgstr "Spielt" + +#~ msgid "Pulseaudio" +#~ msgstr "PulseAudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Presets importieren" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Amplitudenreduktion" + +#~ msgid "Exponent" +#~ msgstr "Exponent" diff --git a/po/easyeffects.pot b/po/easyeffects.pot new file mode 100644 index 0000000..0c0bf92 --- /dev/null +++ b/po/easyeffects.pot @@ -0,0 +1,2492 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "" + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "" + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..1848c94 --- /dev/null +++ b/po/es.po @@ -0,0 +1,3193 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-05-06 00:14+0000\n" +"Last-Translator: fjsevilla \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.12.1\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ecualizador, compresor y otros efectos de sonido" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de sonido para las aplicaciones PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Perfiles\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "Habilitar" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "Excluir" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Silenciar la aplicación" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Volumen de aplicación" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Preferencias" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Manual" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Atajos de teclado" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Restablecer ajustes" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Acerca de EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Perfiles" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Menú de perfiles" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Bypass global" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Menú principal" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "Ventana de EasyEffects" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Lista de aplicaciones" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "Lista vacía" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "Ninguna aplicación de audio disponible" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Objetivo" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "Historial máximo" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Referencia" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentánea" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Corto plazo" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integral" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "Media geométrica (MSI)" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "Media geométrica (MS)" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "Media geométrica (MI)" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "Media geométrica (SI)" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Restablecer el historial" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativa" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rango" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Sonoridad" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Ganancia de salida" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Entrada" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Ganancia de entrada del plugin" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Salida" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Ganancia de salida del plugin" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Restablecer" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Usando" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Dispositivo" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nombre" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Perfil" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Perfil" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Eliminar perfil de carga automática" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Escuchar" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mezclar armónicos" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3ª" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2ª" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Cantidad" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmónicos" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Umbral" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Límite inferior" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Valor del límite inferior" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Enlace" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Nombre de la aplicación" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "Añadir a las aplicaciones excluidas" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "Lista de aplicaciones excluidas" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "Mostrar aplicaciones excluidas" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modo" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Descendente" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Ascendente" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Refuerzo" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Modo de compresión" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Umbral de refuerzo" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Cantidad de refuerzo" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Ataque" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Tiempo" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Umbral" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "Tiempo de ataque" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "Umbral de ataque" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Decaimiento" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "Tiempo de decaimiento" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "Umbral de decaimiento" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Ratio (n:1)" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Rótula" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Ganancia de compensación" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Cadena lateral" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Pico" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS (media cuadrática)" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Paso bajo" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Modo cadena lateral" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Fuente" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Medio" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Lateral" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Izquierdo" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Derecho" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Fuente de la cadena lateral" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipo" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Feed-forward" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Feed-back" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Externa" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Tipo de cadena lateral" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Dispositivo de entrada" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "Preamplificación" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reactividad" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Anticipación" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Filtros de cadena lateral" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Paso alto" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frecuencia" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Desactivado" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Modo filtro de paso alto" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Frecuencia del filtro de paso alto" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Modo filtro de paso bajo" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Ganancia" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "Envolvente" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Canal izquierdo" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Canal derecho" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Respuestas a impulsos" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Combinar" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Amplitud estéreo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Espectro" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "Escala logarítmica" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Ganancia automática" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Tasa" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Muestras" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Duración" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "Combinar las respuestas a impulsos" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "Primer núcleo" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "Segundo núcleo" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Nombre del archivo de salida" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "Nombre del núcleo combinado" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importar archivo de respuesta a impulsos" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Buscar" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "Buscar archivo de respuesta a impulsos" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "Lista de archivos de respuesta a impulsos" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Predeterminado" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Corte" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Alimentación" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Bypass" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Silenciar" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detección" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Banda ancha" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Banda dividida" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "División F1" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "División de la frecuencia 1" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "Pico F2" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "Pico de la frecuencia 2" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "Ganancia F1" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "Ganancia de la frecuencia 1" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "Nivel F2" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "Nivel de la frecuencia 2" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "Pico Q F2" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "Pico Q de la frecuencia 2" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Laxitud" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detectado" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Reducción" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Tamaño del cuadro" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Longitud del filtro" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "Aplicaciones excluidas" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bandas" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Dividir canales" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Respuesta plana" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calcular frecuencias" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "Cargar el perfil APO" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Campana" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Paso alto" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Shelving de agudos" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Pase bajo" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Shelving de graves" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Rechazo de banda" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonancia" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Paso total" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Tipo de banda" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Modo de banda" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pendiente" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Pendiente de la banda" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Anchura" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Calidad" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "Límite superior" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "Valor del límite superior" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Acceder" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Descripción" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Borrar este perfil" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "Paso bajo 12dB/oct" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "Paso bajo 24dB/oct" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "Paso bajo 36dB/oct" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "Paso alto 12dB/oct" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "Paso alto 24dB/oct" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "Paso alto 36dB/oct" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "Paso banda 6dB/oct" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "Paso banda 12dB/oct" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "Paso banda 18dB/oct" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "Rechazo de banda 6dB/oct" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "Rechazo de banda 12dB/oct" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "Rechazo de banda 18dB/oct" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inercia" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Puerta de ruido" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Tiempo de decaimiento" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Externa" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Actividad de la puerta" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Sobremuestreo" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "Dither" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "Herm Thin" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "Herm Wide" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "Herm Tail" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "Herm Duck" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "Exp Thin" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "Exp Wide" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "Exp Tail" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "Exp Duck" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Line Thin" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Line Wide" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "Line Tail" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "Line Duck" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Ninguno" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "Parcial x2(2L)" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "Parcial x2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "Parcial x3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "Parcial x3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "Parcial x4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "Parcial x4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "Parcial x6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "Parcial x6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "Parcial x8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "Parcial x8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "Completo x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "Completo x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "Completo x3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "Completo x3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "Completo x4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "Completo x4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "Completo x6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "Completo x6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "Completo x8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "Completo x8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "SC PreAmp" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Preamplificaión de la cadena lateral" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Refuerzo" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Enlace estéreo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Cadena lateral externa" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "Fuente de la cadena lateral externa" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "Nivelación automática" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "Ataque de nivelación automática" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "Decaimiento de nivelación automática" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "Rótula (transición) de nivelación automática" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "Ganancia izquierda" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "Ganancia derecha" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Cadena lateral izquierda" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Cadena lateral derecha" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Estándar" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Plano" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Tamaño de la FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "Tamaño de la transformada rápida de Fourier" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Volumen de salida" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Límite superior" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Modo de funcionamiento" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Clásico" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Moderno" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Refuerzo de la cadena lateral" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "Rosa BT" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "Rosa MT" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "Marrón BT" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "Marrón MT" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Lista de bandas" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Banda 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Banda 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Banda 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Banda 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Banda 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Banda 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Banda 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Banda 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Inicio de la banda" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Fin de la banda" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Modo de compresión de banda" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Bypass de banda" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Opciones de la cadena lateral de la banda" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Filtro paso bajo" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Frecuencia del filtro paso bajo" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Filtro paso alto" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Frecuencia del filtro paso alto" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "PreAmp" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Ganancia de banda" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "Envolvente de banda" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "Curva de la banda" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "Modo de división" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Dividir 1/2" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "Dividir frecuencia 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Dividir 2/3" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "Dividir frecuencia 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Dividir 3/4" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "Dividir frecuencia 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sub-banda" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "Bypass de banda 1" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "Solo de la banda 1" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "Método de detección de la banda 1" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "Ataque de la banda 1" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "Tiempo de decaimiento de la banda 1" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "Umbral de la banda 1" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "Ratio de la banda 1" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "Rótula (transición) de la banda 1" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "Ganancia de compensación de la banda 1" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Atenuación máxima" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "Reducción máx. de la banda 1" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Banda baja" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "Bypass de la banda 2" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "Solo de la banda 2" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "Método de detección de la banda 2" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "Ataque de la banda 2" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "Tiempo de decaimiento de la banda 2" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "Umbral de la banda 2" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "Ratio de la banda 2" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "Rótula (transición) de la banda 2" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "Ganancia de compensación de la banda 2" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "Reducción máx. de la banda 2" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Banda media" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "Bypass de la banda 3" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "Solo de la banda 3" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "Método de detección de la banda 3" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "Ataque de la banda 3" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "Tiempo de decaimiento de la banda 3" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "Umbral de la banda 3" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "Ratio de la banda 3" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "Rótula (transición) de la banda 3" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "Ganancia de compensación de la banda 3" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "Reducción máx. de la banda 3" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Banda alta" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "Bypass de la banda 4" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "Solo de la banda 4" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "Método de detección de la banda 4" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "Ataque de la banda 4" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "Tiempo de decaimiento de la banda 4" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "Umbral de la banda 4" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "Ratio de la banda 4" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "Rótula (transición) de la banda 4" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "Ganancia de compensación de la banda 4" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "Reducción máx. de la banda 4" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "General" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Usar entrada predeterminada" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "Dispositivo de entrada personalizado" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Usar salida predeterminada" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "Dispositivo de salida personalizado" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Información del servidor" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Versión principal" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Versión de la biblioteca" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Tasa de muestreo" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "Quantum mínimo" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "Quantum máximo" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "Quantum por defecto" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "Carga automática de perfiles" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Dispositivos de salida" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Perfiles de salida" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Crear asociación" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "Agregar un perfil de salida de carga automática" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Lista de perfiles de salida de carga automática" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Dispositivos de entrada" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Perfiles de entrada" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "Agregar un perfil de entrada de carga automática" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "Lista de perfiles de entrada de carga automática" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "Lista de los módulos" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "Lista de los clientes" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Señal de prueba" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Estado" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Habilitado" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Propiedades" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canales" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Ambos" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Ambos canales" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Forma de onda" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Onda sinusoidal" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Ruido blanco" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "Alta velocidad" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "Alta calidad" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "Alta consistencia" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "Formato" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "Alterado" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "Preservado" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "Transitorios" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "Nítidos" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "Intermedios" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "Suavizados" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "Detección" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "Compuesto" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "Percusivo" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "Suave" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "Fase" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "Laminar" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "Independiente" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Cents" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitonos" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Octavas" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Borrar este perfil" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "Agregar efecto" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "Lista de plugins utilizados" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "Sin efectos" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "Flujo de audio no modificado" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "Buscar plugin" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Lista de plugins" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_General" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Servicio" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +#, fuzzy +msgid "Shutdown on Window Closing" +msgstr "Apagar al cerrar la ventana" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Audio" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Procesar todas las salidas" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Procesar todas las entradas" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "Usar volumen cúbico" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "Tiempo de inactividad" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Estilo" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Usar tema oscuro" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "Ocultar los menús al hacer click fuera" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Espectro" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Forma" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barras" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Líneas" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Puntos" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Puntos" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Altura" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Ancho de la línea" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Rellenar" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "Mostrar los bordes de las barras" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "Redondear las esquinas" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Color" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Lineas y barras" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Etiquetas del eje" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Rango de frecuencia" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Mínima" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Máximo" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Cargar" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Guardar la configuración actual en este perfil" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Eliminar este perfil" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Nombre del nuevo perfil de salida" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Crear perfil" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importar perfil" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Buscar perfil de salida" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Lista de perfiles de salida" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Nombre del nuevo perfil de entrada" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Buscar perfil de entrada" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Lista de perfiles de entrada" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Atenuación de alta frecuencia" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Tamaño de la sala" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Pequeña" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Mediana" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Túnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/suave" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difusión" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pre retraso" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Tiempo de decaimiento" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Cantidad de señal con efectos" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Nivel de señal con efectos" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Cantidad de señal sin efectos" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "Nivel de señal sin efectos" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Corte de graves" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Corte de agudos" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiente" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Paredes vacías" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Sala" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Sala grande vacía" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Discoteca" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Sala grande ocupada" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importar modelo" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modelos" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Modelo estándar" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "Lista de modelos de RNNoise" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Modelo activo" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Modelo RNNoise estándar" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Resumen" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Abrir el manual de EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Pantalla completa/restaurar desde pantalla completa" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Cerrar la ventana" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "Cerrar EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Balance de entrada" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Recorte suave" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Nivel del recorte suave (soft clipping)" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matriz estéreo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Estéreo predeterminado)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Estéreo a medio-lateral)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Medio-lateral a estéreo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "R > LL (Mono usando el canal izquierdo)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Mono usando el canal derecho)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Mono sumando los canales izq. y dcho.)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Estéreo invirtiendo los canales)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Modo estéreo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Invertir la fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Nivel lateral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balance lateral" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Nivel medio" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panoramización media" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Balance de salida" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Retraso L/R" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Retardo izquierdo/derecho" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base estéreo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fase estéreo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "En ejecución" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "Suspendido" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Inactivo" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "En creación" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Error" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Desconocido" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "canales" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Perfiles de salida: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Perfiles de entrada: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Efectos de audio para aplicaciones que utilizan PipeWire" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Salir de EasyEffects. Útil cuando se está ejecutando en modo servicio." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Cargar un perfil. Por ejemplo: easyeffects -l musica" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Restablecer EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Ocultar la ventana." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Bypass global. 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +"estado actual" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Mostrar los perfiles disponibles." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Lista de archivos de respuesta a impulsos" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importar archivo de respuesta a impulsos" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Abrir" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Cancelar" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Respuesta a impulsos" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Cargar archivo de respuesta a impulsos" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Eliminar archivo de respuesta a impulsos" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Lista de archivos de respuesta a impulsos" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "No se pudo cargar el archivo de respuesta a impulsos" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Gravadores" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Reproductores" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "Efectos" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinito" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Importar archivo de perfil APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Perfiles APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Eliminar perfil de carga automática" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Eliminar" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Dispositivo de salida" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Agregar" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Importar perfil" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importar archivo de modelo" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "Modelos RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Refuerzo de graves" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Sonoridad de graves" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolucinador" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Alimentación cruzada" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristalizador" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Retraso" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Cancelación de eco" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ecualizador" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitador" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtro" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limitador" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizador" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compresor multibanda" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Puerta de ruido multibanda" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Tono" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Reverberación" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Reducción de ruido" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Herramientas estéreo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects es una herramienta avanzada de manipulación de audio. Entre " +#~ "sus útiles incluye un ecualizador, un limitador, un compresor y una " +#~ "herramienta de reverberación , solo por mencionar algunos. Para " +#~ "complementar lo anterior, viene con un analizador de espectro incluido." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects es el sucesor de PulseEffects. EasyEffects solo soporta el " +#~ "servidor de audio PipeWire. Los usuarios de PulseAudio deben usar " +#~ "PulseEffects en su lugar." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Debido a que EasyEffects usa por defecto el servidor de audio PipeWire, " +#~ "funcionará con la mayoría, sino todas, las aplicaciones que uses. Todas " +#~ "las aplicaciones son mostradas en la ventana principal, donde pueden ser " +#~ "habilitadas individualmente." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Además de manipular el sonido de salida, EasyEffects también puede " +#~ "aplicar efectos a dispositivos de entrada, como micrófonos. Esto es útil " +#~ "en la grabación de audio, por poner un ejemplo, pero también funciona " +#~ "correctamente durante las conversaciones de voz." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Cuando se inicie EasyEffects, este recordará convenientemente la " +#~ "configuración utilizada en la última sesión. También es posible guardar " +#~ "todos los ajustes actuales en un perfil." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "La página principal mostrando dos aplicaciones de salida de audio" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "" +#~ "La página del potenciador de graves mostrando los controles de audio" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "La página del convolucionador mostrando los controles de audio" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta versión añade las siguientes características:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Esta versión corrige los siguientes errores:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Banda 1" + +#, fuzzy +#~ msgid "Many translation updates" +#~ msgstr "Traducciones actualizadas" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Hay disponible un nuevo ajuste que permite al usuario seleccionar un " +#~ "tiempo de inactividad para la tubería. Cuando ningún cliente está " +#~ "reproduciendo" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "o grabando desde nuestros dispositivos, los filtros se desconectarán una " +#~ "vez alcanzado el tiempo de espera. Esto se hace para asegurarse de que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "no desperdiciamos la potencia de la CPU procesando silencio." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "El plugin de ganancia automática ahora permite al usuario seleccionar " +#~ "cuál de los tres tipos de sonoridad se utiliza para calcular" + +#~ msgid "mean." +#~ msgstr "la media geométrica." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "El plugin de ganancia automática ahora permite establecer el historial " +#~ "máximo y ya no utiliza el modo histograma `libebur128`." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Esto debería evitar los casos en los que la sonoridad `Integrada` se " +#~ "quedaba bloqueada indefinidamente en el mismo valor." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "El icono de EasyEffects ha sido actualizado de forma que debería ser " +#~ "visible en los escritorios QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta versión corrige el siguiente error:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "La opción de línea de comandos que retorna el estado de bypass global " +#~ "vuelve a funcionar." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esta versión añade la siguiente funcionalidad:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "El filtro de alimentación cruzada debería lidiar mejor con la gestión de " +#~ "latencia dinámica de PipeWire. Ya no deberían producirse cambios bruscos " +#~ "en el nivel de volumen en estas situaciones." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Se ha corregido un error que impedía que los micrófonos mono funcionaran " +#~ "correctamente con EasyEffects" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Soporte para la próxima versión `0.3.44` de PipeWire" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "El filtro de alimentación cruzada debería lidiar mejor con la gestión de " +#~ "latencia dinámica de PipeWire. Ya no deberían producirse cambios bruscos " +#~ "en el nivel de volumen en estas situaciones." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Hemos añadido una opción que permite restablecer el volumen y el estado " +#~ "de silencio de nuestros dispositivos virtuales cuando se inicia " +#~ "EasyEffects. Esto debería ayudar en los casos en que nuestros " +#~ "dispositivos son silenciados por el servidor de audio por razones " +#~ "desconocidas." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Se ha mejorado el soporte para la suspensión del ordenador." + +#~ msgid "Updated translations" +#~ msgstr "Traducciones actualizadas" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Se ha corregido un error que causaba que la aplicación se bloqueara al " +#~ "intentar crear un perfil de carga automática que no disponía de " +#~ "preajustes." + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "Se ha corregido un error por el que el ajuste de la `calidad` de una " +#~ "banda del ecualizador a `cero` provocaba un bloqueo de la aplicación." + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "Se hace uso de LibAdwaita para crear algunas partes de nuestra ventana y " +#~ "para manejar el cambio entre temas oscuros y claros." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "" +#~ "El menú de ajustes ha sido rediseñado utilizando widgets de LibAdwaita." + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "Se ha mejorado la función de importación de perfiles del ecualizador APO " +#~ "para aplicar no sólo el filtro Bell, sino también otros compatibles" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "La función `Restablecer todos los ajustes` de nuestro menú debería " +#~ "funcionar ahora en Flatpak." + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "Tenemos una nueva opción `ocultar automáticamente`que permite al usuario " +#~ "desactivar nuestros menús . Esto puede ayudar a solucionar algunos " +#~ "errores que los menús Popover tienen actualmente en gtk4." + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "Un análisis más robusto para importar perfiles APO guardados con una coma " +#~ "como separador de miles en la banda de frecuencia central." + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "La biblioteca fmt es una nueva dependencia, al menos mientras los " +#~ "compiladores de c++ no implementen sus características. Se espera que " +#~ "esto ocurra en los próximos años." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM y GLIBMM ya no son dependencias. Ahora usamos gtk4 directamente." + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "Ahora es posible combinar respuestas a impulsos en la interfaz del " +#~ "convolucionador. Un nuevo archivo de respuesta a impulsos es generado y " +#~ "debe ser visible en la lista de respuestas a impulsos." + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "Se ha mejorado el diseño del `eje x`en nuestros gráficos. Ahora el número " +#~ "de etiquetas se ajusta dinámicamente en función del ancho de la ventana." + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "La documentación se ha actualizado para reflejar las nuevas " +#~ "características de EasyEffects. Se han eliminado las antiguas referencias " +#~ "sobre PulseEffects. Se ha añadido al menú el botón de documentación." + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "Cuando se introduce un valor fuera de rango a un spinbutton, ahora se " +#~ "actualiza con el valor más bajo o más alto en lugar de restablecerse al " +#~ "valor previo." + +#~ msgid "" +#~ "The application window now remembers the maximized state and restores it " +#~ "on the next opening event." +#~ msgstr "" +#~ "La ventana principal ahora recuerda el estado maximizado y lo restaura " +#~ "cuando se abre de nuevo." + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "La biblioteca `tbb` es una nueva dependencia" + +#~ msgid "" +#~ "The Limiter and the Multiband Compressor plugins can now use an optional " +#~ "external sidechain." +#~ msgstr "" +#~ "Los plugins Limitador y Compresor multibanda ahora pueden utilizar una " +#~ "cadena lateral externa opcional." + +#~ msgid "" +#~ "The Autogain plugin now allows the user to select which Loudness is used " +#~ "as reference for the volume correction." +#~ msgstr "" +#~ "El plugin de ganancia automática ahora permite al usuario seleccionar el " +#~ "tipo de sonoridad a usar como referencia en la corrección de volumen." + +#~ msgid "" +#~ "The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +#~ "Amplification\" parameter." +#~ msgstr "" +#~ "La función de importación de perfiles APO del plugin Ecualizador ahora " +#~ "analiza el parámetro \"PreAmplificación\"." + +#~ msgid "Optional Cubic Volume can be enabled in General Settings." +#~ msgstr "" +#~ "El volumen cúbico puede activarse de forma opcional en la configuración " +#~ "general." + +#~ msgid "" +#~ "PipeWire monitor streams are now excluded and removed from the " +#~ "applications list." +#~ msgstr "" +#~ "Los flujos de monitorización de PipeWire están ahora excluidos y " +#~ "eliminados de la lista de aplicaciones." + +#~ msgid "Hopefully crashes like the one reported at [1172]( are fixed." +#~ msgstr "" +#~ "Esperamos que los fallos como el reportado en [1172]( se han solucionado." + +#~ msgid "Prevented a case in which Spectrum was crashing." +#~ msgstr "" +#~ "Se ha corregido un caso en el que el visualizador de espectro se " +#~ "bloqueaba." + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "Pavucontrol ya no se añade a la lista de aplicaciones de entrada en los " +#~ "sistemas con localización diferente a la inglesa." + +#~ msgid "" +#~ "Improved compatibility with WirePlumber. This is needed to run on systems " +#~ "that decided to use it instead of the" +#~ msgstr "" +#~ "Se ha mejorado la compatibilidad con WirePlumber. Esto es necesario para " +#~ "que funcione en los sistemas que decidieron utilizarlo en lugar del" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "gestor de sesiones de PipeWire integrado. Más información en [1144](" + +#~ msgid "" +#~ "When trying to add an autoloading profile for a device already in the " +#~ "list its target preset will be updated. This way we can change the " +#~ "profile preset without having to remove and recreating it." +#~ msgstr "" +#~ "Al intentar añadir un perfil de carga automática para un dispositivo que " +#~ "ya está en la lista se actualizará su perfil de destino. De esta manera " +#~ "podemos modificar los ajustes del perfil sin tener que eliminarlo y " +#~ "volver a crearlo." + +#~ msgid "" +#~ "The preset autoloading support implementation was redesigned again. It " +#~ "should work on more hardware now. For more information see issue [1051](" +#~ msgstr "" +#~ "Se ha rediseñado de nuevo la implementación del soporte de carga " +#~ "automática de perfiles. Ahora debería funcionar en un conjunto mayor de " +#~ "hardware. Consultar [1051]( para más información" + +#~ msgid "" +#~ "If the Limiter or the Maximizer are set in the last position of the " +#~ "plugin stack, new plugins are added at the second to last position in " +#~ "order to prevent hardware damage on eventually high output level." +#~ msgstr "" +#~ "Si el Limitador o el Maximizador se colocan en la última posición de la " +#~ "pila de plugins, los nuevos plugins se añaden en la penúltima posición " +#~ "con el fin de evitar la posibilidad de que el hardware se dañe por un " +#~ "nivel de salida eventualmente alto." + +#~ msgid "" +#~ "Removing an application from the blocklist, its previous enabled state is " +#~ "restored." +#~ msgstr "" +#~ "Al eliminar una aplicación de la lista de aplicaciones bloqueadas, se " +#~ "restablece su estado anterior de activación." + +#~ msgid "" +#~ "Sometimes when removing imported models from the noise reduction plugin " +#~ "the current used model was not properly updated. This should be fixed now." +#~ msgstr "" +#~ "En ocasiones, al eliminar los modelos importados del plugin de reducción " +#~ "de ruido, el modelo en uso no se actualizaba correctamente. Esto debería " +#~ "estar solucionado ahora." + +#~ msgid "" +#~ "When editing presets files in an external editor, duplicated entries " +#~ "won't be shown in our presets menu." +#~ msgstr "" +#~ "Al editar archivos de perfiles en un editor externo, las entradas " +#~ "duplicadas no se mostrarán en el menú de perfiles." + +#~ msgid "Now the blocklist is correctly set when switching presets." +#~ msgstr "" +#~ "Ahora la lista de aplicaciones bloqueadas se ajusta correctamente al " +#~ "cambiar de perfil." + +#~ msgid "" +#~ "Now the status of the global bypass button is correctly updated when " +#~ "changing plugin stack." +#~ msgstr "" +#~ "Ahora el estado del botón de bypass global se actualiza correctamente al " +#~ "modificarse la pila de plugins." + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Los iconos no disponibles en el sistema no deberían mostrarse en la " +#~ "interfaz de información de la aplicación" + +#~ msgid "" +#~ "Some icons not showing in Plasma DE with Breeze icon theme should appear " +#~ "now." +#~ msgstr "" +#~ "Algunos iconos que no se mostraban en el escritorio Plasma con el tema de " +#~ "iconos Breeze deberían ser visibles ahora." + +#~ msgid "Updated Chinese translation." +#~ msgstr "Traducción al chino actualizada." + +#~ msgid "Updated Italian translation." +#~ msgstr "Traducción al italiano actualizada." + +#~ msgid "Added support for the compressor parameter `Boost Amount`" +#~ msgstr "" +#~ "Se ha añadido soporte para el parámetro del compresor `Cantidad de " +#~ "refuerzo`" + +#~ msgid "" +#~ "The multiband compressor plugin now uses the stereo multiband compressor " +#~ "plugin from Linux Studio Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "El plugin de compresión multibanda ahora utiliza el plugin de compresión " +#~ "multibanda estéreo de Linux Studio Plugins, en lugar del de Calf Studio." + +#~ msgid "" +#~ "The limiter plugin now uses the stereo limiter plugin from Linux Studio " +#~ "Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "El plugin del limitador ahora utiliza el plugin del limitador estéreo de " +#~ "Linux Studio Plugins, en lugar del de Calf Studio." + +#~ msgid "" +#~ "LV2 filters now are spawned in PipeWire graph only when loaded the first " +#~ "time. Once loaded, they remain connected until EasyEffects shutdown." +#~ msgstr "" +#~ "Los filtros LV2 ahora se generan en el diagrama de PipeWire sólo cuando " +#~ "se cargan por primera vez. Una vez cargados, permanecen conectados hasta " +#~ "el cierre de EasyEffects." + +#~ msgid "The echo canceller sampling rate is now properly set." +#~ msgstr "" +#~ "La tasa de muestreo del plugin de cancelación de eco está ahora " +#~ "correctamente ajustada." + +#~ msgid "" +#~ "The threshold parameter from the deesser plugin is now saved to the " +#~ "preset file." +#~ msgstr "" +#~ "El parámetro umbral del plugin deesser se guarda ahora en el archivo de " +#~ "perfil." + +#~ msgid "" +#~ "Improved band splitting for crystalizer with new default intensity values." +#~ msgstr "" +#~ "Mejorada la división de bandas para el cristalizador con nuevos valores " +#~ "de intensidad por defecto." + +#~ msgid "" +#~ "Depending on the input gain or output gain values the corresponding level " +#~ "bars could not be aligned." +#~ msgstr "" +#~ "Dependiendo de los valores de la ganancia de entrada y de salida, las " +#~ "barras de nivel correspondientes podrían no alinearse correctamente." + +#~ msgid "" +#~ "When adding more equalizer bands they are set to `Bell` instead of `Off`." +#~ msgstr "" +#~ "Cuando se añaden nuevas bandas de ecualización se les asigna la modalidad " +#~ "`Campana` en lugar de `Apagado`." + +#~ msgid "" +#~ "Equalizer APO presets loading is now working properly on locales " +#~ "different than C." +#~ msgstr "" +#~ "La carga de los perfiles del ecualizador APO ahora funciona correctamente " +#~ "en localizaciones diferentes a C." + +#~ msgid "Improved linking management between port filter nodes in PipeWire." +#~ msgstr "" +#~ "Se ha mejorado la gestión de las conexiones entre puertos de nodos en " +#~ "PipeWire." + +#~ msgid "" +#~ "The crystalizer plugin signal amplification was too high before. It " +#~ "should be within more reasonable levels now." +#~ msgstr "" +#~ "La amplificación de la señal del plugin del cristalizador era demasiado " +#~ "alta antes. Ahora debería estar dentro de niveles más razonables." + +#~ msgid "" +#~ "Improved the resampler used in the plugins that require one(like the " +#~ "rnnoise plugin)" +#~ msgstr "" +#~ "Se ha mejorado el remuestreador (resampler) utilizado en los plugins que " +#~ "lo requieren (como el plugin rnnoise)" + +#~ msgid "Setting multiple autoloading presets should be fine now" +#~ msgstr "" +#~ "La configuración de múltiples perfiles de autocarga debería funcionar " +#~ "ahora correctamente" + +#~ msgid "Transient windows are now properly set for some plugins dialogs" +#~ msgstr "" +#~ "Las ventanas transitorias están ahora correctamente configuradas para " +#~ "algunos diálogos de plugins" + +#~ msgid "" +#~ "The convolver impulse response menu was improved to workaround an issue " +#~ "where the impulse files was not loaded when only one was available in the " +#~ "menu" +#~ msgstr "" +#~ "Se ha mejorado el menú de respuesta a impulsos del convolucionador. Esto " +#~ "tiene como fin solucionar un problema que causaba que no se cargaran los " +#~ "archivos de respuesta a impulsos cuando sólo había uno disponible en el " +#~ "menú" + +#~ msgid "" +#~ "Fixed a bug that could make the pitch plugin to not be properly " +#~ "initialized" +#~ msgstr "" +#~ "Se ha corregido un error que podía hacer que el plugin de tonalidad " +#~ "(pitch) no se inicializara correctamente" + +#~ msgid "" +#~ "The saturation warning should not displace its neighbor widgets anymore" +#~ msgstr "El aviso de saturación ahora no desplaza a los widgets adyacentes" + +#~ msgid "Fixed the locale in a few widgets" +#~ msgstr "Se ha corregido la configuración regional en algunos widgets" + +#~ msgid "Fixed wrong alignment in a few widgets" +#~ msgstr "Se ha corregido la alineación incorrecta de algunos widgets" + +#~ msgid "" +#~ "The Loudness plugin is being used again for the reasons described at This " +#~ "means that is an optional dependency again." +#~ msgstr "" +#~ "El plugin Loudness es usado de nuevo por las razones descritas. Esto " +#~ "implica que es una dependencia opcional de nuevo." + +#~ msgid "" +#~ "Fixed a segmentation fault that happened when optional dependencies were " +#~ "not installed" +#~ msgstr "" +#~ "Se ha corregido un fallo de segmentación que ocurría cuando no se " +#~ "instalaban las dependencias opcionales" + +#~ msgid "Improved equalizer interface." +#~ msgstr "Se ha mejorado la interfaz del ecualizador." + +#~ msgid "" +#~ "Now we use a sidechain LSP compressor that allows the user to select and " +#~ "external source as the sidechain input." +#~ msgstr "" +#~ "Ahora se hace uso de un compresor LSP de cadena lateral que permite al " +#~ "usuario seleccionar una fuente externa como entrada para la cadena " +#~ "lateral." + +#~ msgid "We now support the LSP compressor `Boosting` mode." +#~ msgstr "" +#~ "Agregado soporte para el nuevo modo`Refuerzo` (`Boosting`) del compresor " +#~ "LSP." + +#~ msgid "" +#~ "When `split-channels` is enabled in the equalizer the imported APO preset " +#~ "will be applied only to the channel being visualized in the window. This " +#~ "will allow to import different presets for each channel instead of just " +#~ "settings the same values to both." +#~ msgstr "" +#~ "Cuando se activa la opción de \"dividir canales\" del ecualizador, el " +#~ "perfil APO importado se aplicará sólo al canal que se visualiza " +#~ "actualmente en la ventana. Esto permite importar diferentes perfiles para " +#~ "cada canal, en lugar de asignar los mismos valores para ambos." + +#~ msgid "" +#~ "Fixed some segmentation faults that could happen when creating a preset " +#~ "autoloading profile or removing presets" +#~ msgstr "" +#~ "Se han corregido algunos fallos de segmentación que podían producirse al " +#~ "crear o eliminar un perfil de carga automática" + +#~ msgid "" +#~ "This is one of the biggest releases that I have ever made. The amount of " +#~ "changes is so big that it is hard to talk about everything here." +#~ msgstr "" +#~ "Este es uno de los mayores lanzamientos que he hecho. El número de " +#~ "cambios es tan grande que es difícil describirlos todos aquí." + +#~ msgid "" +#~ "The following are just the most import ones. People interested on the " +#~ "journey that got us here can take" +#~ msgstr "" +#~ "A continuación se indican sólo los más importantes. Quien esté interesado " +#~ "en profundizar más puede echar" + +#~ msgid "a look at and" +#~ msgstr "un vistazo y" + +#~ msgid "" +#~ "The application and its repository have been renamed from PulseEffects to " +#~ "`EasyEffects`" +#~ msgstr "" +#~ "La aplicación y su repositorio han sido renombrados de PulseEffects a " +#~ "`EasyEffects`" + +#~ msgid "gtkmm3 was replaced by gtkmm4" +#~ msgstr "Se ha sustituido gtkmm3 por gtkmm4" + +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "Se ha sustituido Gstreamer por filtros nativos de PipeWire." + +#~ msgid "" +#~ "Many features were reimplemented from scratch. The preset autoloading is " +#~ "one example. Another remarkable change will be seen in the plugins " +#~ "selection menu. Now the user can show in the window only the plugins that " +#~ "he/she wants to use." +#~ msgstr "" +#~ "Muchas características se han reimplementado desde cero. La carga " +#~ "automática de perfiles es un ejemplo. Otro cambio notable se observa en " +#~ "el menú de selección de plugins. Ahora el usuario puede mostrar en la " +#~ "ventana sólo los plugins que desea utilizar." + +#~ msgid "" +#~ "Boost is no longer a dependency. The price paid for that was a little " +#~ "change in our presets structures. With some patience it is possible to " +#~ "edit PulseEffects presets in a text editor and make them work in " +#~ "EasyEffects. Hopefully someone will come up with a script for this in the " +#~ "feature." +#~ msgstr "" +#~ "Boost ya no es una dependencia. El precio a pagar por esto es un pequeño " +#~ "cambio en la estructura de nuestros perfiles. Con algo de paciencia, es " +#~ "posible editar los perfiles de PulseEffects en un editor de texto y " +#~ "hacerlos funcionar en EasyEffects. Con un poco de suerte puede que " +#~ "alguien cree un script para automatizar esto." + +#~ msgid "" +#~ "New libraries are being used and some of the librarires that were " +#~ "optional before are now required" +#~ msgstr "" +#~ "Se utilizan nuevas bibliotecas y algunas de las que antes eran opcionales " +#~ "ahora son requeridas" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar predeterminado" + +#~ msgid "Remove this plugin" +#~ msgstr "Eliminar este plugin" + +#~ msgid "Import Presets" +#~ msgstr "Importar perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar el servicio en el inicio de sesión" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Restablecer el volumen de los dispositivos de EasyEffect al inicio" diff --git a/po/es_CO.po b/po/es_CO.po new file mode 100644 index 0000000..6dea773 --- /dev/null +++ b/po/es_CO.po @@ -0,0 +1,3318 @@ +# Spanish (CO) translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Pulseeffects package. +# CCaroV , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-18 18:11+0000\n" +"Last-Translator: Santiago José Gutiérrez Llanos \n" +"Language-Team: Spanish (Colombia) \n" +"Language: es_CO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ecualizador, Compresor y Otros Efectos de Sonido" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de audio paras las aplicaciones PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Perfiles\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Habilitar" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplicaciones" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplicaciones" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Ajustes" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Perfiles" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Perfiles" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Bypass Global" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Aplicaciones" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Paredes Vacías" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplicaciones" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Objetivo" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Máximo" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentáneo" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Corto Plazo" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrado" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Restablecer Historial" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Reativo" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rango" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Volumen" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Entrada" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Salida" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Caudal de Salida" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Restablecer" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nombre" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Perfiles" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Remover preajuste de autocargar" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Escuchar" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mezclar Harmónicos" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3era" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2nda" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Cantidad" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmónicos" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Alcance" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Fondo" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Fondo" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Acoplar" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Aplicaciones" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modo" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Hacia Abajo" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Hacia Arriba" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Modo de Compresión" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Cantidad" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Ataque" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Tiempo Real" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Ataque" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Liberar" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Tiempo Real" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Radio" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Codo" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Amplificación" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Pico" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Paso Bajo" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Fuente" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Medio" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Lado" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Izquierda" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Derecha" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipo" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Adelantar" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Realimentar" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Efectos de Entrada" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Pre-amplificación" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reactividad" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Atenuación" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Pase Alto" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frecuencia" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Apagdo" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +#, fuzzy +msgid "12 dB/oct" +msgstr "12dB/oct Paso Bajo" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +#, fuzzy +msgid "24 dB/oct" +msgstr "24dB/oct Paso Bajo" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +#, fuzzy +msgid "36 dB/oct" +msgstr "36dB/oct Paso Bajo" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Ganancia" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Pendiente" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Canales" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Dividir Canales" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Respuesta de Impulse" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Amplitud Estéreo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Espectro" + +#: data/ui/convolver.ui:112 +#, fuzzy +msgid "Log Scale" +msgstr "Escala" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "AutoGain" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Tasa" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Muestras" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Duración" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Respuesta de Impulse" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importar Archivo Impulse" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Importar Archivo Impulse" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Importar Archivo Impulse" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Predeterminado" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Umbral" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Alimentar" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Derivación" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Silenciar" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detección" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Ancho" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Dividir" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Dividir" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Pico" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Ganancia" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Nivel" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Pico Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Relajamiento" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detectado" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Reducción" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Tamaño del Marco" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filtro" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bandas" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Dividir Canales" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Respuesta Plana" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calcular Frecuencias" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Timbre" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Pase Alto" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Estante Alto" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Paso Bajo" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Estante Bajo" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Muesca" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonancia" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Paso Bajo" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Tipo" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Modo" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pendiente" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Pendiente" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Anchura" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Calidad" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Límite" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Detección" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Borrar este perfil" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Paso Bajo" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Paso Bajo" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Paso Bajo" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Pase Alto" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Pase Alto" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Pase Alto" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Paso de Banda" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Paso de Banda" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Paso de Banda" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inercia" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Puerta de Ruido" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Tiempo Real" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Integrado" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Puerta" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Sobre Muestreo" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Ancho" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Ancho" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Ancho de Linea" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Ancho de Linea" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Mesa Sinusoidal" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Ninguno" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Pre-amplificación" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Acoplamiento Estéreo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Cadena Lateral" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Ganancia Automática" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Ganancia" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Derecha" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Cadena Lateral" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Cadena Lateral" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Tamaño del Marco" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Salida" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Límite" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Modo de Compresión" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Modo" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Cadena Lateral" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Modo de Compresión" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Bypass" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Filtro" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Calcular Frecuencias" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filtro de Pase Alto" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Calcular Frecuencias" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Curva" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Dividir" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Dividir 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Dividir 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Dividir 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sub Banda" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Banda Baja" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Banda Media" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Banda Alta" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Reducción" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "General" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Usar Predeterminado" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Usar Predeterminado" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Reverberación" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Tasa de Muestreo por Defecto" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Ganancia Máxima" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Profundidad Predeterminda" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Efectos de Salida" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Efectos de Entrada" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Señal de Prueba" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Estado" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Habilitar" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canales" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Canales" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Mesa Sinusoidal" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Ruido Blanco" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Estante Alto" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Calidad" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formato" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Perfiles" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Frescura" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detección" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Compresión" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Clip Suave" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Acentos" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitonos" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Octavas" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Borrar este perfil" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "Efectos" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "General" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Servidor" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Procesar Todas las Salidas" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Procesar Todas las Entradas" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Usar Tema Oscuro" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Espectro" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barras" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Lineas" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Puntos" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Altura" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Ancho de Linea" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Rellenar" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frecuencia" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Máximo" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Máximo" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Guardar esta configuración a este perfil" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Borrar este perfil" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Crear Perfil" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importar Preajuste" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Amortiguación de Alta Frecuencia" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Tamaño de la Habitación" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Pequeña" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Mediana" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Túnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/Liso" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difusión" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pre Retraso" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Tiempo de Decaimiento" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Cantidad húmeda" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Nivel húmedo" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Gran cantidad" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "nivel seco" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Corte de Bajos" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Corte de Sobreagudos" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiente" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Paredes Vacías" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Habitación" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Habitación Vacía Grande" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Habitación Ocupada Grande" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importar Modelo" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modelos" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Modelo estándar" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "RNNoise Lista de Modelos" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Modelo activo" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Modelo estándar RNNoise" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Visión general" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Abrir el manual de EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Pantalla completa/Restaurar desde pantalla completa" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Cierra la ventana" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "Salir de EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Balance de insumos" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Clip Suave" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Nivel del Clip Suave" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matriz Estéreo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Estéreo Predeterminado)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Estéreo hacia Medio Lado)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Medio Lado - Estéreo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (Canal Izquierdo Mono)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Canal Derecho Mono)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Suma Mono L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Intercambiar Canales)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Modo Estéreo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Invertir Fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Nivel Lateral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balance Lateral" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Nivel Medio" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama Medio" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Balance de producción" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Retraso L/R" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Retraso Izquierda Derecha" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base Estéreo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fase Estéreo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "Corriendo" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "Suspendido" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Inactivo" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "Creando" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Error" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Desconocido" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "canales" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Perfiles de Dispositivos de Salida: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Perfiles de Dispositivos de Entrada: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Efectos de audio para aplicaciones PipeWire" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" +"Salir de EasyEffects. Útil cuando se está ejecutando en modo de servicio." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Cargar un perfil. Ejemplo: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Restablecer EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Oculta la ventana." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Bypass global, 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +"estado" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Mostrar perfiles disponibles." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Importar Archivo Impulse" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importar impulso de archivo" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Abrir" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Cancelar" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Respuesta de Impulse" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Cargar impulso" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Remover impulso" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Importar Archivo Impulse" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "No se pudo encontrar el archivo Impulse" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "grabadoras" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Jugadores" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "Efectos" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinidad" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Importar archivo de preajuste APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Preajustes APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Remover preajuste de autocargar" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Efectos de Salida" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Añadir" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Importar Preajuste" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importar archivo modelo" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "Modelos RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "potenciador de graves" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "sonoridad de graves" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "enrevesado" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristalizador" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "DeEsser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Retraso" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Cancelador de Eco" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ecualizador" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitador" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtro" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limitador" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizador" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compresor Multibanda" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Puerta Multibanda" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Tono" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Reverberación" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Reducción de ruido" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Herramientas Estéreo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects es una herramienta avanzada de manipulación de audio. Incluye " +#~ "un ecualizador, limitador, compresor y una herramienta de reverberación, " +#~ "solo por mencionar algunos. Para complementar esto también hay un " +#~ "analizador de espectro incorporado." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects es el sucesor de PulseEffects. EasyEffects solo admite el " +#~ "servidor de audio de PipeWire. Los usuarios de PulseAudio deben usar " +#~ "PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Debido a que EasyEffects utiliza el servidor de sonido PipeWire " +#~ "predeterminado, funcionará con la mayoría, si no todas, las aplicaciones " +#~ "que utilice. Todas las aplicaciones soportadas se presentan en la ventana " +#~ "principal, donde cada una se puede habilitar individualmente." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Además de manipular el sonido de salida, EasyEffects puede aplicar " +#~ "efectos a dispositivos de entrada, como micrófonos. Esto es útil, por " +#~ "ejemplo, en la grabación de audio, pero también funciona correctamente " +#~ "durante conversaciones de voces." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Cuando EasyEffects esté activo este convenientemente recordará la " +#~ "configuración usada en la última sesión. También es posible guardar la " +#~ "configuración actual como un perfil." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "La página principal que muestra dos aplicaciones de salida de audio" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "" +#~ "La página de potenciador de graves que muestra los controles de audio" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "La página convolver que muestra los controles de audio" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta versión añade las siguientes características:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Esta versión corrige los siguientes errores:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Many translation updates" +#~ msgstr "Traducciones actualizadas" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Hay una nueva configuración que permite al usuario seleccionar un tiempo " +#~ "de inactividad para la canalización. Cuando no se reproduce ningún cliente" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "desde nuestros dispositivos, los filtros se desvincularán después de que " +#~ "se alcance el tiempo de espera. Esto se hace para asegurarse de que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "" +#~ "no desperdiciamos el silencio de procesamiento de energía de la CPU." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "El plugin autogain ahora permite al usuario seleccionar cuál de las tres " +#~ "sonoridades se utilizan para calcular la geométrica" + +#~ msgid "mean." +#~ msgstr "medida." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "El plugin autogain ahora permite establecer el historial máximo y ya no " +#~ "usa el modo `libebur128` histograma." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Esto debe evitar los casos en los que el `Integrated` loudness se queda " +#~ "atascado para siempre en el mismo valor." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "El icono de EasyEffects se ha actualizado de una manera que debería " +#~ "hacerlo visible en los escritorios QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta versión corrige el siguiente error:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "La opción de línea de comandos que devuelve el estado de derivación " +#~ "global está funcionando de nuevo." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esta versión incluye las siguientes novedades:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "El filtro de crossfeed debería tratar mejor con los interruptores de " +#~ "latencia dinámica de PipeWire. Los saltos en el nivel de volumen ya no " +#~ "deberían ocurrir en estas situaciones." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Corregido un error que impedía que los micrófonos mono funcionaran " +#~ "correctamente con EasyEffects" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Soporte para la próxima versión de PipeWire `0.3.44`" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "El filtro de autogain debe tratar mejor con los interruptores de latencia " +#~ "dinámica de PipeWire. Los saltos en el nivel de volumen ya no deberían " +#~ "ocurrir en estas situaciones." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Hemos añadido una opción que permite restablecer el volumen y el estado " +#~ "de silencio de nuestros dispositivos virtuales cuando se inicie " +#~ "EasyEffects. Debería ayudar con los casos en los que nuestros " +#~ "dispositivos son silenciados por el servidor de audio por razones " +#~ "desconocidas." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Mejor soporte para la suspensión de la computadora." + +#~ msgid "Updated translations" +#~ msgstr "Traducciones actualizadas" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Se ha corregido un error por el que al intentar crear un perfil de carga " +#~ "automática sin tener ajustes preestablecidos la aplicación se bloqueaba." + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "se ha Corregido un error donde el establecimiento de una banda de " +#~ "ecualizador `calidad` a `cero` daría lugar a un accidente de aplicación." + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita se utiliza para crear algunas partes de nuestra ventana y para " +#~ "manejar el cambio entre temas oscuros y claros." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "" +#~ "El menú de configuración ha sido rediseñado usando los widgets de " +#~ "LibAdwaita." + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "Ecualizador APO función de importación preestablecida se ha mejorado para " +#~ "aplicar no solo el filtro de Bell, sino también otros soportados" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "La función `Reiniciar todas las configuraciones` de nuestro menú debería " +#~ "funcionar ahora en Flatpak." + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "Tenemos una nueva opción que permite al usuario deshabilitar nuestros " +#~ "menús `autohide`. Esto puede ayudar a solucionar algunos errores que los " +#~ "menús Popover tienen actualmente en gtk4." + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "Análisis más robusto para importar preajustes APO guardados con coma como " +#~ "separador de miles en banda de frecuencia central." + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "La biblioteca fmt es una nueva dependencia Al menos mientras los " +#~ "compiladores de c++ no implementan sus características. Se espera que " +#~ "esto suceda en los próximos años." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM y GLIBMM ya no son una dependencia. Ahora usamos gtk4 directamente." + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "Ahora es posible combinar respuestas de impulso en la interfaz Convolver. " +#~ "Se genera un nuevo archivo de impulso y debe ser visible en la lista de " +#~ "impulsos." + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "Dibujos `x ejes` mejorados en nuestras gráficas. Ahora el número de " +#~ "etiquetas se ajusta dinámicamente dependiendo del ancho de nuestra " +#~ "ventana." + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "La documentación se ha actualizado para reflejar las nuevas " +#~ "características de EasyEffects. Se han eliminado las referencias antiguas " +#~ "sobre PulseEffects. El botón de documentación se ha añadido en la sección " +#~ "de menú." + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "Cuando un spinbutton se llena con un valor fuera de rango, ahora se " +#~ "actualiza con el valor más bajo/ más alto en lugar de reinicializar al " +#~ "anterior." + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Borrar este perfil" + +#~ msgid "Import Presets" +#~ msgstr "Importar Perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar Servicio al Iniciar Sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Lista Negra" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrar Micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "Faster" +#~ msgstr "Más Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar Formato" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Ayuda" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Color Personalizado" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Degradado" + +#~ msgid "Spectrum Color" +#~ msgstr "Color del Espectro" + +#~ msgid "Gradient Color" +#~ msgstr "Color del Degradado" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Exponent" +#~ msgstr "Exponente" + +#~ msgid "Sampling" +#~ msgstr "Muestreo" + +#~ msgid "Block Size" +#~ msgstr "Tamaño de Bloque" + +#~ msgid "Pipeline Input" +#~ msgstr "Caudal de Entrada" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Niceness" +#~ msgstr "Meticulosidad" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridad" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Priority" +#~ msgstr "Prioridad" + +# Resampler does not have an official translation +#~ msgid "Resampler" +#~ msgstr "Remuestreador" + +#~ msgid "Default Source" +#~ msgstr "Fuente Predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Muestreo Predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapa de Canales" + +#~ msgid "File" +#~ msgstr "Archivo" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +# Resamplers does not have an official translation +#~ msgid "Resamplers" +#~ msgstr "Remuestreadores" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silencio" + +#~ msgid "-23" +#~ msgstr "-23" + +#~ msgid "Weights" +#~ msgstr "Fuerza" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Silenciado" + +#~ msgid "Distant Headphones" +#~ msgstr "Audífonos a Distancia" + +#~ msgid "Reset Equalizer" +#~ msgstr "Restablecer Ecualizador" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Dry" +#~ msgstr "Secar" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar Archivo de Respuesta Impulse" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione el Archivo de Respuesta Impulse" + +#~ msgid "Loudness Range" +#~ msgstr "Rango de Sonoridad" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Después" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Extendido" + +#~ msgid "Delay Agnostic" +#~ msgstr "Retraso Agnóstico" + +#~ msgid "Suppresion Level" +#~ msgstr "Nivel de Supresión" + +#~ msgid "Low" +#~ msgstr "Bajo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Very High" +#~ msgstr "Muy Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Ruido" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptado Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Arreglo Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Regulador de Ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidad de Detección" + +#~ msgid "Very Low" +#~ msgstr "Muy Bajo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automáticamente aplicar este perfil siempre que el dispositivo actual " +#~ "esté conectado" + +#~ msgid "Volume" +#~ msgstr "Volumen" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cuadrado" + +#~ msgid "Saw" +#~ msgstr "Sierra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruido Rosa" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruido Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruido Rojo" + +#~ msgid "Blue Noise" +#~ msgstr "Ruido Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruido Violeta" + +#~ msgid "Window" +#~ msgstr "Ventana" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruido" + +#~ msgid "Subtract Noise" +#~ msgstr "Reducir Ruido" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Establecer el volumen y encender/apagar los efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Incluye un ecualizador con perfiles incluidos" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "reproduciendo" diff --git a/po/es_MX.po b/po/es_MX.po new file mode 100644 index 0000000..827159e --- /dev/null +++ b/po/es_MX.po @@ -0,0 +1,3110 @@ +# Spanish (MX) translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Pulseeffects package. +# CCaroV , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2020-01-09 18:18-0500\n" +"Last-Translator: Christian\n" +"Language-Team: \n" +"Language: es_CO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ecualizador, Compresor y Otros Efectos de Sonido" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de Sonido para las Aplicaciones de PulseAudio" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Perfiles\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Habilitar" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplicaciones" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplicaciones" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Ajustes" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Perfiles" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Perfiles" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Bypass Global" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Aplicaciones" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Paredes Vacías" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplicaciones" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Objetivo" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Máximo" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentáneo" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Corto Plazo" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrado" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Restablecer Historial" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Reativo" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rango" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Loudness" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Entrada" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Salida" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Caudal de Salida" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Restablecer" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nombre" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Perfiles" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Borrar este perfil" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Escuchar" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mezclar Harmónicos" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3era" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2nda" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Cantidad" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmónicos" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Alcance" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Fondo" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Fondo" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Acoplar" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Aplicaciones" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modo" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Hacia Abajo" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Hacia Arriba" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Modo de Compresión" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Cantidad" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Ataque" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Tiempo Real" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Ataque" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Liberar" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Tiempo Real" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Radio" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Codo" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Amplificación" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Pico" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Paso Bajo" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Fuente" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Medio" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Lado" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Izquierda" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Derecha" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipo" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Adelantar" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Realimentar" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Efectos de Entrada" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Pre-amplificación" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reactividad" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Atenuación" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Pase Alto" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frecuencia" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Apagdo" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +#, fuzzy +msgid "12 dB/oct" +msgstr "12dB/oct Paso Bajo" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +#, fuzzy +msgid "24 dB/oct" +msgstr "24dB/oct Paso Bajo" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +#, fuzzy +msgid "36 dB/oct" +msgstr "36dB/oct Paso Bajo" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Ganancia" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Pendiente" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Canales" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Dividir Canales" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Respuesta de Impulse" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Amplitud Estéreo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Espectro" + +#: data/ui/convolver.ui:112 +#, fuzzy +msgid "Log Scale" +msgstr "Escala" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Ganancia Automática" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Tasa" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Muestras" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Duración" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Respuesta de Impulse" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importar Archivo Impulse" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Importar Archivo Impulse" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Importar Archivo Impulse" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Predeterminado" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Umbral" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Alimentar" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Bypass" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Silenciar" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detección" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Ancho" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Dividir" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Dividir" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Pico" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Ganancia" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Nivel" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Pico Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Relajamiento" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detectado" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Reducción" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Tamaño del Marco" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filtro" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bandas" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Dividir Canales" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Respuesta Plana" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calcular Frecuencias" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Timbre" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Pase Alto" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Estante Alto" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Paso Bajo" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Estante Bajo" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Muesca" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonancia" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Paso Bajo" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Tipo" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Modo" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pendiente" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Pendiente" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Anchura" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Calidad" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Límite" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Detección" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Borrar este perfil" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Paso Bajo" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Paso Bajo" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Paso Bajo" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Pase Alto" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Pase Alto" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Pase Alto" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Paso de Banda" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Paso de Banda" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Paso de Banda" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inercia" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Puerta de Ruido" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Tiempo Real" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Integrado" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Puerta" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Sobre Muestreo" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Ancho" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Ancho" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Ancho de Linea" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Ancho de Linea" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Mesa Sinusoidal" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Ninguno" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Pre-amplificación" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Acoplamiento Estéreo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Cadena Lateral" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Ganancia Automática" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Ganancia" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Derecha" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Cadena Lateral" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Cadena Lateral" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Tamaño del Marco" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Salida" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Límite" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Modo de Compresión" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Modo" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Cadena Lateral" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Modo de Compresión" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Bypass" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Filtro" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Calcular Frecuencias" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filtro de Pase Alto" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Calcular Frecuencias" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Curva" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Dividir" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Dividir 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Dividir 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Dividir 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sub Banda" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Banda Baja" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Banda Media" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Banda Alta" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Reducción" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "General" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Usar Predeterminado" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Usar Predeterminado" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Reverberación" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Tasa de Muestreo por Defecto" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Ganancia Máxima" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Profundidad Predeterminda" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Efectos de Salida" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Efectos de Entrada" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Señal de Prueba" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Estado" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Habilitar" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canales" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Canales" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Mesa Sinusoidal" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Ruido Blanco" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Estante Alto" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Calidad" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formato" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Perfiles" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Frescura" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detección" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Compresión" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Clip Suave" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Acentos" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitonos" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Octavas" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Borrar este perfil" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "General" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Servidor" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Procesar Todas las Salidas" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Procesar Todas las Entradas" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Usar Tema Oscuro" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Espectro" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barras" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Lineas" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Puntos" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Altura" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Ancho de Linea" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Rellenar" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frecuencia" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Máximo" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Máximo" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Guardar esta configuración a este perfil" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Borrar este perfil" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Crear Perfil" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importar Perfiles" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Amortiguación de Alta Frecuencia" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Tamaño de la Habitación" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Pequeña" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Mediana" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Túnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/Liso" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difusión" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pre Retraso" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Tiempo de Decaimiento" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Cantidad" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Nivel Objetivo" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Cantidad" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Nivel" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Corte de Bajos" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Corte de Sobreagudos" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiente" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Paredes Vacías" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Habitación" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Habitación Vacía Grande" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Habitación Ocupada Grande" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Importar Archivo Impulse" + +#: data/ui/rnnoise.ui:40 +#, fuzzy +msgid "Models" +msgstr "Modo" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +#, fuzzy +msgid "Active Model" +msgstr "Modo Agresivo" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Restablecer EasyEffects." + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Clip Suave" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Clip Suave" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matriz Estéreo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Estéreo Predeterminado)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Estéreo hacia Medio Lado)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Medio Lado - Estéreo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (Canal Izquierdo Mono)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Canal Derecho Mono)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Suma Mono L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Intercambiar Canales)" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Base Estéreo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Invertir Fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Nivel Lateral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balance Lateral" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Nivel Medio" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama Medio" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Retraso L/R" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Retraso L/R" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base Estéreo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fase Estéreo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "Puerta" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Canales" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Perfiles de Dispositivos de Salida: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Perfiles de Dispositivos de Entrada: " + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Efectos de Sonido para las aplicaciones de PulseAudio" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" +"Salir de EasyEffects. Útil cuando se está ejecutando en modo de servicio." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Cargar un perfil. Ejemplo: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Restablecer EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Bypass global, 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +"estado" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Mostrar perfiles disponibles." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Importar Archivo Impulse" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importar Archivo Impulse" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Abrir" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Cancelar" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Respuesta de Impulse" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Importar Archivo Impulse" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Importar Archivo Impulse" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Importar Archivo Impulse" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "No se pudo encontrar el archivo Impulse" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +#, fuzzy +msgid "Recorders" +msgstr "Bordes" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinidad" + +#: src/equalizer_ui.cpp:351 +#, fuzzy +msgid "Import APO Preset File" +msgstr "Importar Perfiles" + +#: src/equalizer_ui.cpp:357 +#, fuzzy +msgid "APO Presets" +msgstr "Perfiles" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Borrar este perfil" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Efectos de Salida" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Importar Perfiles" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "Importar Archivo Impulse" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Potenciado de Graves" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Loudness" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristalizador" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Retraso" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Cancelador de Eco" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ecualizador" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitador" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtro" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limitador" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizador" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compresor Multibanda" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Puerta Multibanda" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Tono" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Reverberación" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Reducción de Ganancia" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Herramientas Estéreo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#, fuzzy +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects es una avanzada herramienta de manipulación de audio. Incluye " +#~ "un ecualizador, limitador, compresor y herramienta de reverberación , " +#~ "solo por mencionar algunos. Para complementar esto hay también incluido " +#~ "un analizador de espectro." + +#, fuzzy +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Debido a que EasyEffects usa por defecto el servicio de sonido " +#~ "PulseAudio, este funcionará con la mayoría, sino que todas, las " +#~ "aplicaciones que use. Todas las aplicaciones son mostradas en la ventana " +#~ "principal donde pueden ser habilitadas individualmente." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Además de manipular el sonido de salida, EasyEffects puede aplicar " +#~ "efectos a dispositivos de entrada, como micrófonos. Esto es útil, por " +#~ "ejemplo, en la grabación de audio, pero también funciona correctamente " +#~ "durante conversaciones de voces." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Cuando EasyEffects esté activo este convenientemente recordará la " +#~ "configuración usada en la última sesión. También es posible guardar la " +#~ "configuración actual como un perfil." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Borrar este perfil" + +#~ msgid "Import Presets" +#~ msgstr "Importar Perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar Servicio al Iniciar Sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Lista Negra" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrar Micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "Faster" +#~ msgstr "Más Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar Formato" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Ayuda" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Color Personalizado" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Degradado" + +#~ msgid "Spectrum Color" +#~ msgstr "Color del Espectro" + +#~ msgid "Gradient Color" +#~ msgstr "Color del Degradado" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Exponent" +#~ msgstr "Exponente" + +#~ msgid "Sampling" +#~ msgstr "Muestreo" + +#~ msgid "Block Size" +#~ msgstr "Tamaño de Bloque" + +#~ msgid "Pipeline Input" +#~ msgstr "Caudal de Entrada" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Niceness" +#~ msgstr "Meticulosidad" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridad" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Priority" +#~ msgstr "Prioridad" + +# Resampler does not have an official translation +#~ msgid "Resampler" +#~ msgstr "Remuestreador" + +#~ msgid "Default Source" +#~ msgstr "Fuente Predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Muestreo Predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapa de Canales" + +#~ msgid "File" +#~ msgstr "Archivo" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +# Resamplers does not have an official translation +#~ msgid "Resamplers" +#~ msgstr "Remuestreadores" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silencio" + +#~ msgid "-23" +#~ msgstr "-23" + +#~ msgid "Weights" +#~ msgstr "Fuerza" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Silenciado" + +#~ msgid "Distant Headphones" +#~ msgstr "Audífonos a Distancia" + +#~ msgid "Reset Equalizer" +#~ msgstr "Restablecer Ecualizador" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Dry" +#~ msgstr "Secar" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar Archivo de Respuesta Impulse" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione el Archivo de Respuesta Impulse" + +#~ msgid "Loudness Range" +#~ msgstr "Rango de Sonoridad" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Después" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Extendido" + +#~ msgid "Delay Agnostic" +#~ msgstr "Retraso Agnóstico" + +#~ msgid "Suppresion Level" +#~ msgstr "Nivel de Supresión" + +#~ msgid "Low" +#~ msgstr "Bajo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Very High" +#~ msgstr "Muy Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Ruido" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptado Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Arreglo Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Regulador de Ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidad de Detección" + +#~ msgid "Very Low" +#~ msgstr "Muy Bajo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automáticamente aplicar este perfil siempre que el dispositivo actual " +#~ "esté conectado" + +#~ msgid "Volume" +#~ msgstr "Volumen" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cuadrado" + +#~ msgid "Saw" +#~ msgstr "Sierra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruido Rosa" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruido Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruido Rojo" + +#~ msgid "Blue Noise" +#~ msgstr "Ruido Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruido Violeta" + +#~ msgid "Window" +#~ msgstr "Ventana" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruido" + +#~ msgid "Subtract Noise" +#~ msgstr "Reducir Ruido" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Establecer el volumen y encender/apagar los efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Incluye un ecualizador con perfiles incluidos" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "reproduciendo" diff --git a/po/es_VE.po b/po/es_VE.po new file mode 100644 index 0000000..d7c0af7 --- /dev/null +++ b/po/es_VE.po @@ -0,0 +1,3110 @@ +# Spanish (VE) translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Pulseeffects package. +# CCaroV , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2020-01-09 18:18-0500\n" +"Last-Translator: Christian\n" +"Language-Team: \n" +"Language: es_CO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ecualizador, Compresor y Otros Efectos de Sonido" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de Sonido para las Aplicaciones de PulseAudio" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Perfiles\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Habilitar" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplicaciones" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplicaciones" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Ajustes" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Perfiles" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Perfiles" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Bypass Global" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Aplicaciones" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Paredes Vacías" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplicaciones" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Objetivo" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Máximo" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentáneo" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Corto Plazo" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrado" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Usar la Media Geométrica" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Restablecer Historial" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Reativo" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rango" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Loudness" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Entrada" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Salida" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Caudal de Salida" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Restablecer" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nombre" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Perfiles" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Borrar este perfil" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Escuchar" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mezclar Harmónicos" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3era" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2nda" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Cantidad" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmónicos" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Alcance" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Fondo" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Fondo" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Acoplar" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Aplicaciones" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Aplicaciones" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modo" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Hacia Abajo" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Hacia Arriba" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Modo de Compresión" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Cantidad" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Ataque" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Tiempo Real" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Ataque" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Liberar" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Tiempo Real" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Límite" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Radio" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Codo" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Amplificación" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Pico" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Paso Bajo" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Fuente" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Medio" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Lado" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Izquierda" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Derecha" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipo" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Adelantar" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Realimentar" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Efectos de Entrada" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Pre-amplificación" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reactividad" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Atenuación" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Cadena Lateral" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Pase Alto" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frecuencia" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Apagdo" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +#, fuzzy +msgid "12 dB/oct" +msgstr "12dB/oct Paso Bajo" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +#, fuzzy +msgid "24 dB/oct" +msgstr "24dB/oct Paso Bajo" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +#, fuzzy +msgid "36 dB/oct" +msgstr "36dB/oct Paso Bajo" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Filtro de Pase Alto" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Ganancia" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Pendiente" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Canales" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Dividir Canales" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Respuesta de Impulse" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Amplitud Estéreo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Espectro" + +#: data/ui/convolver.ui:112 +#, fuzzy +msgid "Log Scale" +msgstr "Escala" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Ganancia Automática" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Tasa" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Muestras" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Duración" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Respuesta de Impulse" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importar Archivo Impulse" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Importar Archivo Impulse" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Importar Archivo Impulse" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Predeterminado" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Umbral" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Alimentar" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Bypass" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Silenciar" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detección" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Ancho" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Dividir" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Dividir" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Pico" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Ganancia" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Nivel" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Pico Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Relajamiento" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detectado" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Reducción" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Tamaño del Marco" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filtro" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bandas" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Dividir Canales" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Respuesta Plana" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calcular Frecuencias" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Timbre" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Pase Alto" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Estante Alto" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Paso Bajo" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Estante Bajo" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Muesca" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonancia" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Paso Bajo" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Tipo" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Modo" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pendiente" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Pendiente" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Anchura" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Calidad" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Límite" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Detección" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Borrar este perfil" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Paso Bajo" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Paso Bajo" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Paso Bajo" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Pase Alto" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Pase Alto" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Pase Alto" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Paso de Banda" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Paso de Banda" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Paso de Banda" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct Rechazo de Banda" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inercia" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Puerta de Ruido" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Tiempo Real" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Integrado" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Puerta" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Sobre Muestreo" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Ancho" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Ancho" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Ancho de Linea" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Ancho de Linea" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Mesa Sinusoidal" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Ninguno" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Pre-amplificación" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Acoplamiento Estéreo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Cadena Lateral" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Ganancia Automática" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Ganancia" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Derecha" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Cadena Lateral" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Cadena Lateral" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Tamaño del Marco" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Salida" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Límite" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Modo de Compresión" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Modo" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Cadena Lateral" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Modo de Compresión" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Bypass" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Filtro" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Calcular Frecuencias" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filtro de Pase Alto" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Calcular Frecuencias" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Ganancia de Entrada" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Curva" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Dividir" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Dividir 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Dividir 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Dividir 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sub Banda" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Banda Baja" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Banda Media" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Reducción" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Banda Alta" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Detección" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Liberar" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Límite" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Amplificación" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Reducción" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "General" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Usar Predeterminado" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Usar Predeterminado" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Reverberación" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Tasa de Muestreo por Defecto" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Ganancia Máxima" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Profundidad Predeterminda" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Efectos de Salida" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Efectos de Entrada" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Señal de Prueba" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Estado" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Habilitar" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canales" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Canales" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Mesa Sinusoidal" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Ruido Blanco" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Estante Alto" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Calidad" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formato" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Perfiles" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Frescura" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detección" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Compresión" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Clip Suave" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Acentos" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitonos" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Octavas" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Borrar este perfil" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "General" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Servidor" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Procesar Todas las Salidas" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Procesar Todas las Entradas" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Usar Tema Oscuro" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Espectro" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barras" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Lineas" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Puntos" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Altura" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Ancho de Linea" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Rellenar" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frecuencia" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Máximo" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Máximo" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Guardar esta configuración a este perfil" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Borrar este perfil" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Crear Perfil" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importar Perfiles" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Perfiles de Dispositivos de Salida: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Perfiles de Dispositivos de Entrada: " + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Amortiguación de Alta Frecuencia" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Tamaño de la Habitación" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Pequeña" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Mediana" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Túnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/Liso" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difusión" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pre Retraso" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Tiempo de Decaimiento" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Cantidad" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Nivel Objetivo" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Cantidad" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Nivel" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Corte de Bajos" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Corte de Sobreagudos" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiente" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Paredes Vacías" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Habitación" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Habitación Vacía Grande" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Habitación Ocupada Grande" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Importar Archivo Impulse" + +#: data/ui/rnnoise.ui:40 +#, fuzzy +msgid "Models" +msgstr "Modo" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +#, fuzzy +msgid "Active Model" +msgstr "Modo Agresivo" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Restablecer EasyEffects." + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Clip Suave" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Clip Suave" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matriz Estéreo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Estéreo Predeterminado)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Estéreo hacia Medio Lado)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Medio Lado - Estéreo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (Canal Izquierdo Mono)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Canal Derecho Mono)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Suma Mono L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Intercambiar Canales)" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Base Estéreo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Invertir Fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Nivel Lateral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balance Lateral" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Nivel Medio" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama Medio" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Retraso L/R" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Retraso L/R" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base Estéreo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fase Estéreo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "Puerta" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Canales" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Perfiles de Dispositivos de Salida: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Perfiles de Dispositivos de Entrada: " + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Efectos de Sonido para las aplicaciones de PulseAudio" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" +"Salir de EasyEffects. Útil cuando se está ejecutando en modo de servicio." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Cargar un perfil. Ejemplo: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Restablecer EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Bypass global, 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +"estado" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Mostrar perfiles disponibles." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Importar Archivo Impulse" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importar Archivo Impulse" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Abrir" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Cancelar" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Respuesta de Impulse" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Importar Archivo Impulse" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Importar Archivo Impulse" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Importar Archivo Impulse" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "No se pudo encontrar el archivo Impulse" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +#, fuzzy +msgid "Recorders" +msgstr "Bordes" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinidad" + +#: src/equalizer_ui.cpp:351 +#, fuzzy +msgid "Import APO Preset File" +msgstr "Importar Perfiles" + +#: src/equalizer_ui.cpp:357 +#, fuzzy +msgid "APO Presets" +msgstr "Perfiles" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Borrar este perfil" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Efectos de Salida" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Importar Perfiles" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "Importar Archivo Impulse" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Potenciado de Graves" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Loudness" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristalizador" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Retraso" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Cancelador de Eco" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ecualizador" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitador" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtro" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limitador" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizador" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compresor Multibanda" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Puerta Multibanda" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Tono" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Reverberación" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Reducción de Ganancia" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Herramientas Estéreo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#, fuzzy +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects es una avanzada herramienta de manipulación de audio. Incluye " +#~ "un ecualizador, limitador, compresor y herramienta de reverberación , " +#~ "solo por mencionar algunos. Para complementar esto hay también incluido " +#~ "un analizador de espectro." + +#, fuzzy +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Debido a que EasyEffects usa por defecto el servicio de sonido " +#~ "PulseAudio, este funcionará con la mayoría, sino que todas, las " +#~ "aplicaciones que use. Todas las aplicaciones son mostradas en la ventana " +#~ "principal donde pueden ser habilitadas individualmente." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Además de manipular el sonido de salida, EasyEffects puede aplicar " +#~ "efectos a dispositivos de entrada, como micrófonos. Esto es útil, por " +#~ "ejemplo, en la grabación de audio, pero también funciona correctamente " +#~ "durante conversaciones de voces." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Cuando EasyEffects esté activo este convenientemente recordará la " +#~ "configuración usada en la última sesión. También es posible guardar la " +#~ "configuración actual como un perfil." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Borrar este perfil" + +#~ msgid "Import Presets" +#~ msgstr "Importar Perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar Servicio al Iniciar Sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Lista Negra" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrar Micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "Faster" +#~ msgstr "Más Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar Formato" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Ayuda" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Color Personalizado" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Degradado" + +#~ msgid "Spectrum Color" +#~ msgstr "Color del Espectro" + +#~ msgid "Gradient Color" +#~ msgstr "Color del Degradado" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Exponent" +#~ msgstr "Exponente" + +#~ msgid "Sampling" +#~ msgstr "Muestreo" + +#~ msgid "Block Size" +#~ msgstr "Tamaño de Bloque" + +#~ msgid "Pipeline Input" +#~ msgstr "Caudal de Entrada" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Niceness" +#~ msgstr "Meticulosidad" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridad" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Priority" +#~ msgstr "Prioridad" + +# Resampler does not have an official translation +#~ msgid "Resampler" +#~ msgstr "Remuestreador" + +#~ msgid "Default Source" +#~ msgstr "Fuente Predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Muestreo Predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapa de Canales" + +#~ msgid "File" +#~ msgstr "Archivo" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +# Resamplers does not have an official translation +#~ msgid "Resamplers" +#~ msgstr "Remuestreadores" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silencio" + +#~ msgid "-23" +#~ msgstr "-23" + +#~ msgid "Weights" +#~ msgstr "Fuerza" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Silenciado" + +#~ msgid "Distant Headphones" +#~ msgstr "Audífonos a Distancia" + +#~ msgid "Reset Equalizer" +#~ msgstr "Restablecer Ecualizador" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Dry" +#~ msgstr "Secar" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar Archivo de Respuesta Impulse" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione el Archivo de Respuesta Impulse" + +#~ msgid "Loudness Range" +#~ msgstr "Rango de Sonoridad" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Después" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Extendido" + +#~ msgid "Delay Agnostic" +#~ msgstr "Retraso Agnóstico" + +#~ msgid "Suppresion Level" +#~ msgstr "Nivel de Supresión" + +#~ msgid "Low" +#~ msgstr "Bajo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Very High" +#~ msgstr "Muy Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Ruido" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptado Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Arreglo Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Regulador de Ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidad de Detección" + +#~ msgid "Very Low" +#~ msgstr "Muy Bajo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automáticamente aplicar este perfil siempre que el dispositivo actual " +#~ "esté conectado" + +#~ msgid "Volume" +#~ msgstr "Volumen" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cuadrado" + +#~ msgid "Saw" +#~ msgstr "Sierra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruido Rosa" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruido Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruido Rojo" + +#~ msgid "Blue Noise" +#~ msgstr "Ruido Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruido Violeta" + +#~ msgid "Window" +#~ msgstr "Ventana" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruido" + +#~ msgid "Subtract Noise" +#~ msgstr "Reducir Ruido" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Establecer el volumen y encender/apagar los efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Incluye un ecualizador con perfiles incluidos" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "reproduciendo" diff --git a/po/fr_FR.po b/po/fr_FR.po new file mode 100644 index 0000000..ef1d621 --- /dev/null +++ b/po/fr_FR.po @@ -0,0 +1,3556 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-18 22:44+0000\n" +"Last-Translator: Mathieu B. \n" +"Language-Team: French \n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Égaliseur, Compresseur et autres effets audio" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Effets audio pour les applications utilisant le serveur audio PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limiter;compressor;reverberation;equalizer;autovolume;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "Préréglage" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "Autoriser/Interdire cette application" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "Activer" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "Liste des applications exclues : ajouter/retirer cette application" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "Exclure" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Couper le son de l’application" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "Modifier le volume de cette application" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Volume de l’application" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Préférences" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Manuel" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Raccourcis" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Réinitialiser les paramètres" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_À propos de EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Préréglage" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Menu des préréglages" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "Activer/désactiver le contournement global" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Contournement global" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Menu principal" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "Fenêtre de EasyEffects" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Liste des applications" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "Liste vide" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "Aucune application audio disponible" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Cible" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "Historique maximum" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Référence" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Temporaire" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Court-terme" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Intégré" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "Moyenne géométrique (MSI)" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "Moyenne géométrique (MS)" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "Moyenne géométrique (MI)" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "Moyenne géométrique (SI)" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Réinitialiser l’historique" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relatif" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Intervalle" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Sonie" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Gain de sortie" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Entrée" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Gain d’entrée du plugin" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Sortie" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Gain de sortie du plugin" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Réinitialiser" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Utilise" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Périphérique" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nom" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Profil" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Préréglage" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "Supprimer ce préréglage auto-chargeant" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Écouter" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mélanger les harmoniques" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3ème" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2ème" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Quantité" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmoniques" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +#, fuzzy +msgid "Scope" +msgstr "Seuil" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Limite inférieure" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Valeur plancher" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Lien" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Nom de l’application" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "Ajouter aux applications exclues" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "Liste des applications exclues" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "Afficher les applications exclues" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compresseur" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Mode" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Descendant" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Ascendant" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Renforcement" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Mode de compression" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Seuil de renforcement" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Quantité de renforcement" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Attaque" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Temps" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Seuil" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "Temps d’attaque" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "Seuil d’attaque" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Relâ­che­ment" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "Temps de relâ­che­ment" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "Seuil de relâ­che­ment" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Ratio" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Genou" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Compensation de gain" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Chaîne latérale" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Crête" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +#, fuzzy +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Passe-bas" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Mode chaîne latérale" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Source" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Centrale" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Latérale" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Gauche" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Droite" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Source de la chaîne latérale" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Type" + +#: data/ui/compressor.ui:541 +#, fuzzy +msgid "Feed-forward" +msgstr "Feed-forward" + +#: data/ui/compressor.ui:542 +#, fuzzy +msgid "Feed-back" +msgstr "Feed-back" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Externe" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Type de chaîne latérale" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Périphérique d’entrée" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "Préamplification" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Réactivité" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Anticipation" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Filtres de chaîne latérale" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Passe-haut" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Fréquence" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Désactivé" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Mode de filtrage passe-haut" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Fréquence du filtre passe-haut" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Mode de filtre passe-bas" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Gain" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "Enveloppe" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Courbe" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "G" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Canal gauche" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "D" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Canal droit" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Réponse impulsionnelle" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Combiner" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Amplitude stéréo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spectre" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "Échelle logarithmique" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Gain automatique" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Taux" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Échantillons" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Durée" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "Combiner les réponses impulsionnelles" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "Premier noyau" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "Deuxième noyau" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Nom du fichier de sortie" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "Nom du noyau combiné" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importer une réponse impulsionnelle" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Rechercher" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "Rechercher un fichier de réponse impulsionnelle" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "Liste des fichiers de réponse impulsionnelle" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Par défaut" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Coupure" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Flux" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Contourner" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Couper le son" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Détection" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Large" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Diviser" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "Division F1" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "Division de la fréquence 1" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "Crête F2" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "Crête de la fréquence 2" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "Gain F1" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "Gain de la Fréquence 1" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "Niveau F2" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "Niveau de la fréquence 2" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "Crête Q F2" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "Crête de la fréquence 2" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Laxité" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Détecté" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Réduction" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Taille du cadre" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Longueur du filtre" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "Applications exclues" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bandes" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +#, fuzzy +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +#, fuzzy +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +#, fuzzy +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Diviser les canaux" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Réponse plate" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calculer les fréquences" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "Charger un préréglage APO" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Cloche" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Passe-haut" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Passe-bas" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Réjection de bande" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Résonance" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Toutes les passes" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Type de bande" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Mode de la bande" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pente" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Pente de la bande" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Largeur" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Qualité" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "Plafonner" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "Valeur du plafonnement" + +#: data/ui/factory_clients_listview.ui:72 +#, fuzzy +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Accéder" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Description" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Supprimer ce fichier modèle" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct passe-bas" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct passe-bas" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct passe-bas" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct passe-haut" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct passe-haut" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct passe-haut" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct passe-bande" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct passe-bande" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct passe-bande" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct coupe-bande" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct coupe-bande" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct coupe-bande" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inertie" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +#, fuzzy +msgid "Gate" +msgstr "Porte à bruits" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "Zone" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "hystérèse" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "Début de la zone d’attaque" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "Début de la zone de relâchement" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "Interne" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Suréchantillonnage" + +#: data/ui/limiter.ui:60 +#, fuzzy +msgid "Dither" +msgstr "Dither" + +#: data/ui/limiter.ui:72 +#, fuzzy +msgid "Herm Thin" +msgstr "Herm Thin" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Herm Wide" + +#: data/ui/limiter.ui:74 +#, fuzzy +msgid "Herm Tail" +msgstr "Herm Tail" + +#: data/ui/limiter.ui:75 +#, fuzzy +msgid "Herm Duck" +msgstr "Herm Duck" + +#: data/ui/limiter.ui:76 +#, fuzzy +msgid "Exp Thin" +msgstr "Exp Thin" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Exp Wide" + +#: data/ui/limiter.ui:78 +#, fuzzy +msgid "Exp Tail" +msgstr "Exp Tail" + +#: data/ui/limiter.ui:79 +#, fuzzy +msgid "Exp Duck" +msgstr "Exp Duck" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Line Thin" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Line Wide" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Line Tail" + +#: data/ui/limiter.ui:83 +#, fuzzy +msgid "Line Duck" +msgstr "Line Duck" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Aucun" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "Moitié x2(2L)" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "Moitié x2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "Moitié x3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "Moitié x3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "Moitié x4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "Moitié x4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "Moitié x6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "Moitié x6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "Moitié x8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "Moitié x8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "Complet x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "Complet x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "Complet x3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "Complet x3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "Complet x4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "Complet x4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "Complet x6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "Complet x6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "Complet x8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "Complet x8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "SC PréAmp" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Préamplification de la chaîne latérale" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Renforcer" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Lien stéréo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Chaîne latérale externe" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "Source de la chaîne latérale externe" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "Auto-nivellement" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "Auto-nivellement de l’attaque" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "Auto-nivellement du relâ­che­ment" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "Auto-nivellement du genou" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "Gain à gauche" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "Gain à droite" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Chaîne latérale gauche" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Chaîne latérale droite" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standard" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Plat" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Taille FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "Taille de la transformation de Fourier rapide" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Volume de sortie" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Plafonnement" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Mode de fonctionnement" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Classique" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Moderne" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Renforcement de la chaîne latérale" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "Rose BT" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "Rose MT" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "Marron BT" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "Marron MT" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Liste des bandes" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Bande 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Bande 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Bande 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Bande 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Bande 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Bande 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Bande 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Bande 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Début de la bande" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Fin de la bande" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Mode de compression de la bande" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Contourner bande" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Options de la chaîne latérale de la bande" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Filtre coupe-bas" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Fréquence du filtre coupe-bas" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Filtre coupe-haut" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Fréquence du filtre coupe-haut" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "PréAmp" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Gain de la bande" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "Enveloppe de la bande" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "Courbe de la bande" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "Mode de division" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Diviser 1/2" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "Diviser la fréquence 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Diviser 2/3" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "Diviser la fréquence 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Diviser 3/4" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "Diviser la fréquence 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sous-bande" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "Contournement bande 1" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "Solo de la bande 1" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "Détection de la bande 1" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "Attaque de la bande 1" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "Relâ­che­ment de la bande 1" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "Seuil de la bande 1" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "Ratio de la bande 1" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "Genou de la bande 1" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "Rattrapage de gain de la bande 1" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Atténuation maximale" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "Réduction max de la bande 1" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Bande inférieure" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "Contournement bande 2" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "Solo de la bande 2" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "Détection de la bande 2" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "Attaque de la bande 2" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "Relâ­che­ment de la bande 2" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "Seuil de la bande 2" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "Ratio de bande 2" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "Genou de la bande 2" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "Compensation de gain de la bande 2" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "Réduction max de la bande 2" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Bande centrale" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "Contournement bande 3" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "Solo de la bande 3" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "Détection de la bande 3" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "Attaque de la bande 3" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "Relâ­che­ment de la bande 3" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "Seuil de la bande 3" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "Ratio de bande 3" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "Genou de la bande 3" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "Compensation de gain de la bande 3" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "Réduction max. de la banda 3" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Bande supérieure" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "Contournement bande 4" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "Solo de la bande 4" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "Détection de la bande 4" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "Attaque de la bande 4" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "Relâ­che­ment de la bande 4" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "Seuil de la bande 4" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "Ratio de la bande 4" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "Genou de la bande 4" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "Compensation de gain de la bande 4" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "Réduction max. de la bande 4" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Général" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "Gestion des périphériques" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" +"Il est recommandé de ne PAS définir EasyEffects Sink/Source comme " +"périphérique par défaut dans les applications externes (par exemple, les " +"Paramètres de Gnome et les Paramètres de Plasma)." + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Utiliser l’entrée par défaut" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "Périphérique d’entrée personnalisé" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Utiliser la sortie par défaut" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "Périphérique de sortie personnalisé" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Information du serveur" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Version de l’en-tête" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Version de la bibliothèque" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Taux d’échantillonnage" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "Quantum minimum" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "Quantum maximum" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "Quantum par défaut" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "Chargement automatique des préréglages" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Périphériques de sortie" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Préréglages de sortie" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Créer une association" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "Ajouter un préréglage de sortie auto-chargeant" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Liste des préréglages de sortie auto-chargeant" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Périphériques d’entrée" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Préréglages d’entrée" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "Ajouter un préréglage d’entrée auto-chargeant" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "Liste des préréglages d’entrée auto-chargeant" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Modules" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "Liste des modules" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clients" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "Liste des clients" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Signal d’essai" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "État" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Activé" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Propriétés" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canaux" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Tous les deux" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Les deux canaux" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Forme d’onde" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Onde sinusoïdale" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Bruit blanc" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "Haute vélocité" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "Haute qualité" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "Haute cohérence" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "Formant" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "Altéré" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "Préservé" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "Transitoires" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "Net" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "Intermédiaire" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "Progressif" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "Détecteur" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "Composé" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "Percutant" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "Doux" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "Phase" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "Laminaire" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "Indépendante" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Cents" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Demi-tons" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Octaves" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "Supprimer cet effet" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "Activer/désactiver cet effet" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "Modifier la position de cet effet" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "Ajouter un effet" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "Liste des plugins utilisés" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "Aucun effet" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "Flux audio non modifié" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "Plugin de recherche" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Liste des plugins" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Général" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Service" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "Lancer le service au démarrage du système" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "Arrêter à la fermeture de la fenêtre" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Audio" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "Traiter tous les flux de sortie" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "Traiter tous les flux d’entrée" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "Ignorer les flux du moniteur des périphériques" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "Utiliser le volume cubique" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" +"Réinitialiser le volume des périphériques virtuels de EasyEffects au " +"démarrage" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "Délai d’inactivité" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Style" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Utiliser le thème sombre" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "Masquer les menus en cliquant en dehors" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Spectre" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Forme" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barres" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Lignes" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Points" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Points" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Hauteur" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Largeur de ligne" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Remplir" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "Afficher les bordures des barres" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "Coins arrondis" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Couleur" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Lignes et barres" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Annotation des axes" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Intervalle de fréquences" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Minimum" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maximum" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Charger" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Enregistrer les paramètres actuels dans ce préréglage" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Supprimer ce préréglage" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Nom du préréglage de sortie" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "Créer un nouveau préréglage" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "Importer un préréglage" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Rechercher un préréglage de sortie" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Liste des préréglages de sortie" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Nom du nouveau préréglage d’entrée" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Rechercher un préréglage d’entrée" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Liste des préréglages d’entrée" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Atténuation des hautes fréquences" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Taille de la salle" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Petite" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Moyenne" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/lisse" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Expérimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Diffusion" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pré-retard" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Temps de déclin" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Quantité de signaux avec effets" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Niveau des signaux avec effet" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Quantité de signaux sans effets" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "Niveau des signaux sans effets" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Atténuation des basses" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Atténuation des aigües" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiance" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Murs vides" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Salle" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Grande salle vide" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Grande salle occupée" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importer un modèle" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modèles" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Modèle standard" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "Liste des modèles RNNoise" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "Modèle non chargé" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Modèle actif" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Modèle standard RNNoise" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Vue d’ensemble" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Ouvrir le manuel de EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Plein écran/Restaurer à partir du plein écran" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Fermer la fenêtre" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "Quitter EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Balance d’entrée" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Écrêtage doux" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Niveau de l’écrêtage" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matrice stéréo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Mode stéréo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inverser la phase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Niveau latéral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balance latérale" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Niveau central" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama central" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Balance de sortie" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Retard G/D" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Retard gauche droite" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base stéréo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Phase Stéréo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "En cours" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "En pause" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Inactif" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "Génération" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Erreur" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Inconnu" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "Canaux" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Préréglages de sortie : " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Préréglages d’entrée : " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Effets audio pour les applications utilisant PipeWire" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Quitter EasyEffects. Utile en cas de fonctionnement en mode serveur." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Chargez un préréglage. Exemple : easyeffects -l musique" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Réinitialiser EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Masquer la Fenêtre." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Contournement global. 1 pour activer, 2 pour désactiver et 3 pour obtenir le " +"statut" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Afficher les préréglages disponibles." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "Le fichier est irrégulier" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "Le fichier d’impulsion peut être corrompu ou non pris en charge" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "Seuls les fichiers d’impulsion stéréo sont pris en charge" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "Fichier d’impulsion non importé" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importer un fichier d’impulsion" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Ouvrir" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Annuler" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Réponse impulsionnelle" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Charger une impulsion" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Supprimer l’impulsion" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "Aucun fichier d’impulsion chargé" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "Impossible de charger le fichier d’impulsion" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Enregistreurs" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Lecteurs" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "Effets" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infini" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Importer un fichier de préréglage APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Préréglages APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" +"Le préréglage APO n’a pas été chargé. Le format du fichier peut être erroné. " +"Veuillez vérifier son contenu." + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Supprimer le préréglage du chargement automatique" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Supprimer" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Périphérique de sortie" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Ajouter" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Importer un préréglage" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" +"Le modèle sélectionné n’a pas été chargé. Son format n’est peut-être pas " +"pris en charge. Retour au modèle standard." + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importer un modèle" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "Modèles RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Amélioration des basses" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Sonie des basses" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolueur" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Flux croisé" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristallisateur" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Déesseur" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Retard" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Annulateur d’écho" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Égaliseur" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitateur" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtre" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limiteur" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximiseur" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compresseur multibande" + +#: src/tags_plugin_name.cpp:43 +#, fuzzy +msgid "Multiband Gate" +msgstr "Porte multibande" + +#: src/tags_plugin_name.cpp:44 +#, fuzzy +msgid "Pitch" +msgstr "Hauteur" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Réverbération" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Réduction de bruit" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Outils stéréo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "Fermer (appuyez sur Échap)" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects est un outil avancé de manipulation audio. Il inclut, entre " +#~ "autres, un égaliseur, limiteur, compresseur et effet de réverbération. " +#~ "Pour compléter le tout, un analyseur de spectre est également intégré." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects est le successeur de PulseEffects. EasyEffects ne prend en " +#~ "charge que le serveur audio de PipeWire. Les utilisateurs de PulseAudio " +#~ "doivent plutôt utiliser PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Comme EasyEffects utilise le serveur audio PipeWire par défaut, il " +#~ "fonctionnera avec la plupart, sinon la totalité, des applications que " +#~ "vous utilisez. Toutes les applications prises en charge sont présentées " +#~ "dans la fenêtre principale, où chacune peut être activée individuellement." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Outre la manipulation de la sortie audio, EasyEffects est capable de " +#~ "manipuler l’entrée audio (à partir d’un microphone par exemple). Cette " +#~ "fonction est utile pour l’enregistrement audio et fonctionne bien pour " +#~ "les appels vocaux." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "EasyEffects se souvient également de la configuration utilisée lors de la " +#~ "dernière session. Il est aussi possible de sauvegarder tous les " +#~ "paramètres définis sous forme de profils." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "La page principale affichant deux applications en sortie audio" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "La page de l’amplificateur de basses affichant les commandes audio" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "La page du filtre de convolution affichant les commandes audio" + +#~ msgid "This release adds the following features:" +#~ msgstr "Cette version ajoute les fonctionnalités suivantes :" + +#~ msgid "" +#~ "When effects are disable to an application we now set its target metadata " +#~ "to null. This will allow the media session" +#~ msgstr "" +#~ "Lorsque les effets sont désactivés pour une application, nous définissons " +#~ "désormais ses métadonnées cibles comme étant nulles. Cela permettra à la " +#~ "session média" + +#~ msgid "manager" +#~ msgstr "gestionnaire" + +#~ msgid "" +#~ "A new configuration option was added. It allows EasyEffects to ignore " +#~ "streams whose purpose is to monitor sink" +#~ msgstr "" +#~ "Une nouvelle option de configuration a été ajoutée. Elle permet à " +#~ "EasyEffects d’ignorer les flux dont l’objectif est de surveiller" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr "" +#~ "les périphériques puits. Cela aidera à résoudre certains des problèmes " +#~ "rencontrés par nos utilisateurs lors de l’utilisation d’OBS." + +#~ msgid "The code that shows the stream sample format has been improved" +#~ msgstr "" +#~ "Le code qui affiche le format de l’échantillon de flux a été amélioré" + +#~ msgid "" +#~ "The rnnoise library is now optional. This should help package maintainers " +#~ "to build" +#~ msgstr "" +#~ "La bibliothèque rnnoise est désormais facultative. Cela devrait aider les " +#~ "mainteneurs de paquets à construire" + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "un paquet Debian. Voir le problème n°1000 pour plus d’informations." + +#~ msgid "" +#~ "Our logs now show the source code line where the messages are being " +#~ "printed" +#~ msgstr "" +#~ "Nos journaux (logs) indiquent maintenant la ligne de code source où les " +#~ "messages sont imprimés" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Cette version corrige les bugs suivants :" + +#~ msgid "" +#~ "The \"enable effects\" checkbox in our window was not being updated when " +#~ "third party programs like pavucontrol" +#~ msgstr "" +#~ "La case \"activer les effets\" de notre fenêtre n’était pas mise à jour " +#~ "lorsque des programmes tiers comme pavucontrol" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "déplaçait le flux loin de nos appareils virtuels. Cela devrait être " +#~ "maintenant corrigé." + +#~ msgid "" +#~ "Fixed a crash that could happen when the maximum autogain history was " +#~ "changed." +#~ msgstr "" +#~ "Correction d’un crash qui pouvait se produire lorsque l’historique " +#~ "maximum de l’autogain était modifié." + +#~ msgid "Avoid crashes when pw-mididump is running" +#~ msgstr "Éviter les plantages lorsque pw-mididump est en cours d’exécution" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "L'interface du plugin pitch a été améliorée" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "" +#~ "L'icône de notre application est maintenant compatible avec les " +#~ "ordinateurs de bureau qui utilisent QT" + +#~ msgid "" +#~ "Our blocklist code will use the `application.id` tag if the stream sets it" +#~ msgstr "" +#~ "Notre liste de blocage utilisera la balise `application.id` si le flux la " +#~ "définit" + +#~ msgid "" +#~ "In order to avoid problems with the mouse scroll the entries in the " +#~ "applications list shown in our `Players/Recorders`" +#~ msgstr "" +#~ "Afin d’éviter les problèmes de défilement de la souris, les entrées de la " +#~ "liste d’applications s’affichent dans nos `Lecteurs/Enregistreurs`" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "Les onglets n’affichent plus d’échelle de volume. Plus de détails sur le " +#~ "problème et sa solution peuvent être trouvés sur la page #1211" + +#~ msgid "and #1427" +#~ msgstr "et #1427" + +#~ msgid "" +#~ "When no application is available for display in the `Players/Recorders` a " +#~ "message will be shown to the user" +#~ msgstr "" +#~ "Lorsque aucune application n’est disponible pour l’affichage dans les " +#~ "`Lecteurs/Enregistreurs`, un message sera affiché à l’utilisateur" + +#~ msgid "Many translation updates" +#~ msgstr "Mises à jour des traductions" + +#~ msgid "" +#~ "Fixed a bug where EasyEffects crashed when the number of points displayed " +#~ "in the spectrum was changed while" +#~ msgstr "" +#~ "Correction d’un bug où EasyEffeects plantait lorsque le nombre de points " +#~ "affichés dans le spectre était modifié alors que" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "notre pipeline était active et le widget spectre était visible" + +#~ msgid "" +#~ "The pipeline latency value displayed in our window could be wrong in some " +#~ "situations. This was fixed." +#~ msgstr "" +#~ "La valeur de latence du pipeline affichée dans notre fenêtre peut être " +#~ "incorrecte dans certaines situations. Cela a été corrigé." + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Il y a une nouvelle option permettant à l’utilisateur de sélectionner un " +#~ "délai d’inactivité pour les effets audio. Quand aucun client n’émet de son" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "ou n’enregistre depuis l’un des appareils, les filtres sont déconnectés " +#~ "une fois le délai atteint. Cela permet d’assurer" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "de ne pas gâcher l’utilisation du CPU sur du silence." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "le plugin autogain permet désormais à l’utilisateur de sélectionner " +#~ "lesquelles des trois \"loudness\" sont utilisées pour calculer la moyenne" + +#~ msgid "mean." +#~ msgstr "moyenne géométrique." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "Le plugin autogain permet dorénavant d’indiquer une profondeur " +#~ "d’historique maximum et n’utilise plus le mode histogramme `libebur128`." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Cela devrait permettre d’éviter les cas où le loudness `Integrated` reste " +#~ "toujours coincé à la même valeur." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "L'icone EasyEffect a été mise à jour afin d’être visible dans les bureaux " +#~ "QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Cette version corrige les bugs suivants :" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "L'option de ligne de commande retournant l’état du bypass global " +#~ "fonctionne à nouveau." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Cette version ajoute les fonctionnalités suivantes :" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Le filtre crossfeed devrait mieux gérer les changements de latence " +#~ "dynamiques de PipeWire. Les sauts de volume ne devraient plus se produire " +#~ "dans ces situations." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Correction d’un bug qui empêchait les microphones mono de fonctionner " +#~ "correctement avec EasyEffects" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Support de la prochaine version de PipeWire `0.3.44`" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Le filtre autogain devrait mieux gérer les changements de latence " +#~ "dynamiques de PipeWire. Les sauts de volume ne devraient plus se produire " +#~ "dans ces situations." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Nous avons ajouté une option qui permet de réinitialiser le volume et " +#~ "l’état muet de nos périphériques virtuels au démarrage d’EasyEffects. " +#~ "Cela devrait aider dans les cas où nos périphériques sont mis en sourdine " +#~ "par le serveur audio pour des raisons inconnues." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Meilleure prise en charge de la mise en veille de l’ordinateur." + +#~ msgid "Updated translations" +#~ msgstr "Traductions mises à jour" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Correction d’un bogue où la tentative de créer un profil de chargement " +#~ "automatique sans avoir de préréglages entraînait le plantage de " +#~ "l’application." + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "Correction d’un bug où le réglage de la `qualité` d’une bande d’égaliseur " +#~ "sur `zéro` entraînait un plantage de l’application." + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita est utilisé pour créer certaines parties de notre fenêtre et " +#~ "pour gérer le passage entre les thèmes sombres et clairs." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "" +#~ "Le menu des paramètres a été redessiné en utilisant les widgets " +#~ "LibAdwaita." + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "La fonction d’importation de préréglages de l’égaliseur APO a été " +#~ "améliorée pour appliquer non seulement le filtre Bell, mais aussi " +#~ "d’autres filtres pris en charge" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "La fonction `Réinitialiser toutes les options` de notre menu devrait " +#~ "fonctionner dans Flatpak maintenant." + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "Nous avons une nouvelle option qui permet à l’utilisateur de désactiver " +#~ "nos menus `caché automatiquement`. Cela peut aider à contourner certains " +#~ "bugs que les menus Popover ont actuellement sur gtk4." + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "Analyse syntaxique plus robuste pour importer les préréglages APO " +#~ "enregistrés avec une virgule comme séparateur des milliers dans la bande " +#~ "de fréquence centrale." + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "La bibliothèque fmt est une nouvelle dépendance, du moins tant que les " +#~ "compilateurs c++ n’implémentent pas ses fonctionnalités. Cela devrait " +#~ "arriver dans les prochaines années." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM et GLIBMM ne sont plus des dépendances. Nous utilisons maintenant " +#~ "gtk4 directement." + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "Il est maintenant possible de combiner des réponses d’impulsions dans " +#~ "l’interface de Convolver. Un nouveau fichier d’impulsions est généré et " +#~ "il devrait être visible dans la liste des impulsions." + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "Amélioration du dessin de l’axe X dans nos graphiques. Maintenant le " +#~ "nombre d’étiquettes est ajusté dynamiquement en fonction de la largeur de " +#~ "notre fenêtre." + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "La documentation a été mise à jour en tenant compte des nouvelles " +#~ "fonctionnalités d’EasyEffects. Les anciennes références à PulseEffects " +#~ "ont été supprimées. Le bouton de documentation a été ajouté dans le menu." + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "Lorsqu’un bouton rotatif est rempli avec une valeur hors limites, il est " +#~ "maintenant mis à jour avec la valeur la plus basse/haute plutôt que de " +#~ "revenir à la valeur précédente." + +#~ msgid "" +#~ "The application window now remembers the maximized state and restores it " +#~ "on the next opening event." +#~ msgstr "" +#~ "La fenêtre de l’application se souvient désormais de l’état maximisé et " +#~ "le rétablit lors de la prochaine ouverture." + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "La bibliothèque `tbb` est une nouvelle dépendance" + +#~ msgid "" +#~ "The Limiter and the Multiband Compressor plugins can now use an optional " +#~ "external sidechain." +#~ msgstr "" +#~ "Les plugins Limiteur et Compresseur Multibande peuvent désormais utiliser " +#~ "un sidechain optionnel externe." + +#~ msgid "" +#~ "The Autogain plugin now allows the user to select which Loudness is used " +#~ "as reference for the volume correction." +#~ msgstr "" +#~ "Le plugin Autogain permet désormais à l’utilisateur de sélectionner la " +#~ "Loudness utilisée comme référence pour la correction du volume." + +#~ msgid "" +#~ "The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +#~ "Amplification\" parameter." +#~ msgstr "" +#~ "La fonctionnalité d’import de profil APO du plugin égalisateur utilise " +#~ "désormais le paramètre de \"Pré-Amplification\"." + +#~ msgid "Optional Cubic Volume can be enabled in General Settings." +#~ msgstr "" +#~ "L'option de Volume Cubique peut être activée dans les Paramètres Généraux." + +#~ msgid "" +#~ "PipeWire monitor streams are now excluded and removed from the " +#~ "applications list." +#~ msgstr "" +#~ "Les flux PipeWire de monitoring sont maintenant exclus et retirés de la " +#~ "liste d’applications." + +#~ msgid "Hopefully crashes like the one reported at [1172]( are fixed." +#~ msgstr "" +#~ "Les crashs comme celui signalé en [1172]( sont vraisemblablement corrigés." + +#~ msgid "Prevented a case in which Spectrum was crashing." +#~ msgstr "Une situation entraînant un plantage du Spectre a été évitée." + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "Pavucontrol n’est plus ajouté aux liste d’applications en entrée sur les " +#~ "systèmes ayant une autre langue que l’anglais." + +#~ msgid "" +#~ "Improved compatibility with WirePlumber. This is needed to run on systems " +#~ "that decided to use it instead of the" +#~ msgstr "" +#~ "La compatibilité avec WirePlumber a été améliorée. C'est nécessaire pour " +#~ "les systèmes ayant décidé de l’utiliser plutôt que" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "Le gestionnaire de sessions PipeWire fourni. Plus d’informations dans " +#~ "l’issue [1144](" + +#~ msgid "" +#~ "When trying to add an autoloading profile for a device already in the " +#~ "list its target preset will be updated. This way we can change the " +#~ "profile preset without having to remove and recreating it." +#~ msgstr "" +#~ "Lors d’un ajout d’un profil automatique pour un appareil déjà dans la " +#~ "liste, ses presets cibles seront mis à jour. Ainsi, on peut modifier le " +#~ "preset du profil sans le retirer et la re-créer." + +#~ msgid "" +#~ "The preset autoloading support implementation was redesigned again. It " +#~ "should work on more hardware now. For more information see issue [1051](" +#~ msgstr "" +#~ "L'implémentation de la prise en charge du chargement automatique des " +#~ "préréglages a encore été repensée. Elle devrait fonctionner sur plus de " +#~ "matériel maintenant. Pour plus d’informations, consultez le numéro [1051](" + +#~ msgid "" +#~ "If the Limiter or the Maximizer are set in the last position of the " +#~ "plugin stack, new plugins are added at the second to last position in " +#~ "order to prevent hardware damage on eventually high output level." +#~ msgstr "" +#~ "Si le limiteur ou le maximizeur sont placés à la dernière position de la " +#~ "liste des plugins, les nouveaux plugins sont ajoutés à l’avant-dernière " +#~ "position afin d’éviter des dommages matériels dû à un niveau de sortie " +#~ "potentiellement élevé." + +#~ msgid "" +#~ "Removing an application from the blocklist, its previous enabled state is " +#~ "restored." +#~ msgstr "" +#~ "En retirant une application de la liste de blocage, son état d’activation " +#~ "précédent est restauré." + +#~ msgid "" +#~ "Sometimes when removing imported models from the noise reduction plugin " +#~ "the current used model was not properly updated. This should be fixed now." +#~ msgstr "" +#~ "Parfois, lors de la suppression de modèles importés du plugin de " +#~ "réduction du bruit, le modèle actuellement utilisé n’était pas " +#~ "correctement mis à jour. Cela devrait être corrigé maintenant." + +#~ msgid "" +#~ "When editing presets files in an external editor, duplicated entries " +#~ "won't be shown in our presets menu." +#~ msgstr "" +#~ "Lorsque vous modifiez des fichiers de préréglages dans un éditeur " +#~ "externe, les entrées dupliquées n’apparaîtront pas dans notre menu de " +#~ "préréglages." + +#~ msgid "Now the blocklist is correctly set when switching presets." +#~ msgstr "" +#~ "Maintenant, la liste de blocage est correctement définie lors du " +#~ "changement de préréglage." + +#~ msgid "" +#~ "Now the status of the global bypass button is correctly updated when " +#~ "changing plugin stack." +#~ msgstr "" +#~ "Désormais, l’état du bouton de contournement global est correctement mis " +#~ "à jour lors du changement de pile de plugins." + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Les icônes manquantes sur le système ne doivent pas être affichées dans " +#~ "l’interface d’information de l’application" + +#~ msgid "" +#~ "Some icons not showing in Plasma DE with Breeze icon theme should appear " +#~ "now." +#~ msgstr "" +#~ "Certaines icônes qui n’apparaissaient pas dans Plasma DE avec le thème " +#~ "d’icônes Breeze devraient maintenant apparaître." + +#~ msgid "Updated Chinese translation." +#~ msgstr "Mise à jour de la traduction chinoise." + +#~ msgid "Updated Italian translation." +#~ msgstr "Mise à jour de la traduction italienne." + +#~ msgid "Added support for the compressor parameter `Boost Amount`" +#~ msgstr "Ajout du support pour le paramètre du compresseur `Boost Amount`" + +#~ msgid "" +#~ "The multiband compressor plugin now uses the stereo multiband compressor " +#~ "plugin from Linux Studio Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Le plugin de compresseur multibande utilise maintenant le plugin de " +#~ "compresseur multibande stéréo de Linux Studio Plugins au lieu de celui de " +#~ "Calf Studio." + +#~ msgid "" +#~ "The limiter plugin now uses the stereo limiter plugin from Linux Studio " +#~ "Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Le plugin limiteur est désormais celui de Linux Studio Plugins au lieu de " +#~ "celui de Calf Studio." + +#~ msgid "" +#~ "LV2 filters now are spawned in PipeWire graph only when loaded the first " +#~ "time. Once loaded, they remain connected until EasyEffects shutdown." +#~ msgstr "" +#~ "Les filtres LV2 sont désormais créés dans le graphe PipeWire uniquement " +#~ "lorsqu’ils sont chargés pour la première fois. Une fois chargés, ils " +#~ "restent connectés jusqu’à l’arrêt d’EasyEffects." + +#~ msgid "The echo canceller sampling rate is now properly set." +#~ msgstr "" +#~ "Le taux d’échantillonnage de l’annuleur d’écho est maintenant " +#~ "correctement réglé." + +#~ msgid "" +#~ "The threshold parameter from the deesser plugin is now saved to the " +#~ "preset file." +#~ msgstr "" +#~ "Le paramètre de seuil du plugin Deesser est maintenant enregistré dans le " +#~ "fichier de présélection." + +#~ msgid "" +#~ "Improved band splitting for crystalizer with new default intensity values." +#~ msgstr "" +#~ "Division de bandes améliorée pour le cristalliseur avec de nouvelles " +#~ "valeurs d’intensité par défaut." + +#~ msgid "" +#~ "Depending on the input gain or output gain values the corresponding level " +#~ "bars could not be aligned." +#~ msgstr "" +#~ "Selon les valeurs du gain d’entrée ou du gain de sortie, les barres de " +#~ "niveau correspondantes ne pouvaient pas être alignées." + +#~ msgid "" +#~ "When adding more equalizer bands they are set to `Bell` instead of `Off`." +#~ msgstr "" +#~ "Lorsque vous ajoutez d’autres bandes d’égaliseur, elles sont réglées sur " +#~ "`Bell` au lieu de `Off`." + +#~ msgid "" +#~ "Equalizer APO presets loading is now working properly on locales " +#~ "different than C." +#~ msgstr "" +#~ "Le chargement des préréglages de l’Equalizer APO fonctionne désormais " +#~ "correctement dans les langues autres que C." + +#~ msgid "Improved linking management between port filter nodes in PipeWire." +#~ msgstr "" +#~ "Amélioration de la gestion des liens entre les nœuds de filtre de port " +#~ "dans PipeWire." + +#~ msgid "" +#~ "The crystalizer plugin signal amplification was too high before. It " +#~ "should be within more reasonable levels now." +#~ msgstr "" +#~ "L'amplification du signal du plugin du cristalliseur était trop élevée " +#~ "avant. Elle devrait se situer dans des niveaux plus raisonnables " +#~ "maintenant." + +#~ msgid "" +#~ "Improved the resampler used in the plugins that require one(like the " +#~ "rnnoise plugin)" +#~ msgstr "" +#~ "Amélioration du rééchantillonneur utilisé dans les plugins qui en " +#~ "nécessitent un (comme le plugin rnnoise)" + +#~ msgid "Setting multiple autoloading presets should be fine now" +#~ msgstr "" +#~ "La configuration de plusieurs préréglages auto-chargeant devrait être " +#~ "correcte maintenant" + +#~ msgid "Transient windows are now properly set for some plugins dialogs" +#~ msgstr "" +#~ "Les fenêtres transitoires sont désormais correctement définies pour " +#~ "certaines boîtes de dialogue de plugins" + +#~ msgid "" +#~ "The convolver impulse response menu was improved to workaround an issue " +#~ "where the impulse files was not loaded when only one was available in the " +#~ "menu" +#~ msgstr "" +#~ "Le menu des réponses impulsionnelles du convolver a été amélioré pour " +#~ "résoudre un problème où les fichiers impulsionnels n’étaient pas chargés " +#~ "lorsqu’un seul était disponible dans le menu" + +#~ msgid "" +#~ "Fixed a bug that could make the pitch plugin to not be properly " +#~ "initialized" +#~ msgstr "" +#~ "Correction d’un bogue qui pouvait empêcher l’initialisation correcte du " +#~ "plugin \"pitch\"" + +#~ msgid "" +#~ "The saturation warning should not displace its neighbor widgets anymore" +#~ msgstr "" +#~ "L'avertissement de saturation ne doit plus déplacer les widgets voisins" + +#~ msgid "Fixed the locale in a few widgets" +#~ msgstr "Correction des paramètres régionaux dans quelques widgets" + +#~ msgid "Fixed wrong alignment in a few widgets" +#~ msgstr "Correction d’un mauvais alignement dans quelques widgets" + +#~ msgid "" +#~ "The Loudness plugin is being used again for the reasons described at This " +#~ "means that is an optional dependency again." +#~ msgstr "" +#~ "Le plugin Loudness est réutilisé pour les raisons décrites dans. Cela " +#~ "signifie qu’il s’agit à nouveau d’une dépendance facultative." + +#~ msgid "" +#~ "Fixed a segmentation fault that happened when optional dependencies were " +#~ "not installed" +#~ msgstr "" +#~ "Correction d’un défaut de segmentation qui se produisait lorsque les " +#~ "dépendances facultatives n’étaient pas installées" + +#~ msgid "Improved equalizer interface." +#~ msgstr "Interface de l’égaliseur améliorée." + +#~ msgid "" +#~ "Now we use a sidechain LSP compressor that allows the user to select and " +#~ "external source as the sidechain input." +#~ msgstr "" +#~ "Nous utilisons maintenant un compresseur sidechain LSP qui permet à " +#~ "l’utilisateur de sélectionner une source externe comme entrée sidechain." + +#~ msgid "We now support the LSP compressor `Boosting` mode." +#~ msgstr "Nous supportons maintenant le mode `Boosting` du compresseur LSP." + +#~ msgid "" +#~ "When `split-channels` is enabled in the equalizer the imported APO preset " +#~ "will be applied only to the channel being visualized in the window. This " +#~ "will allow to import different presets for each channel instead of just " +#~ "settings the same values to both." +#~ msgstr "" +#~ "Quand `split-channels` est activé dans l’égaliseur, le préréglage APO " +#~ "importé sera appliqué seulement au canal visualisé dans la fenêtre. Cela " +#~ "permet d’importer des préréglage différents pour chaque canal au lieu de " +#~ "régler les mêmes valeurs pour les deux." + +#~ msgid "" +#~ "Fixed some segmentation faults that could happen when creating a preset " +#~ "autoloading profile or removing presets" +#~ msgstr "" +#~ "Correction de certaines erreurs de segmentation qui pouvaient survenir " +#~ "lors de la création d’un profil de chargement automatique prédéfini ou de " +#~ "la suppression de préréglages" + +#~ msgid "" +#~ "This is one of the biggest releases that I have ever made. The amount of " +#~ "changes is so big that it is hard to talk about everything here." +#~ msgstr "" +#~ "C'est l’une des plus grosses versions que j'ai jamais faite. La quantité " +#~ "de changements est si importante qu’il est difficile de parler de tout " +#~ "ici." + +#~ msgid "" +#~ "The following are just the most import ones. People interested on the " +#~ "journey that got us here can take" +#~ msgstr "" +#~ "Voici les plus importantes d’entre elles. Les personnes intéressées par " +#~ "le voyage qui nous a mené jusqu’ici peuvent" + +#~ msgid "a look at and" +#~ msgstr "regarder et" + +#~ msgid "" +#~ "The application and its repository have been renamed from PulseEffects to " +#~ "`EasyEffects`" +#~ msgstr "" +#~ "L'application et son dépôt ont été renommés de PulseEffects à " +#~ "`EasyEffects`" + +#~ msgid "gtkmm3 was replaced by gtkmm4" +#~ msgstr "gtkmm3 a été remplacé par gtkmm4" + +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "Gstreamer a été remplacé par des filtres natifs PipeWire." + +#~ msgid "" +#~ "Many features were reimplemented from scratch. The preset autoloading is " +#~ "one example. Another remarkable change will be seen in the plugins " +#~ "selection menu. Now the user can show in the window only the plugins that " +#~ "he/she wants to use." +#~ msgstr "" +#~ "De nombreuses fonctionnalités ont été réimplémentées à partir de zéro. Le " +#~ "chargement automatique des préréglages en est un exemple. Un autre " +#~ "changement remarquable se trouve dans le menu de sélection des plugins. " +#~ "Désormais, l’utilisateur peut afficher dans la fenêtre uniquement les " +#~ "plugins qu’il souhaite utiliser." + +#~ msgid "" +#~ "Boost is no longer a dependency. The price paid for that was a little " +#~ "change in our presets structures. With some patience it is possible to " +#~ "edit PulseEffects presets in a text editor and make them work in " +#~ "EasyEffects. Hopefully someone will come up with a script for this in the " +#~ "feature." +#~ msgstr "" +#~ "Boost n’est plus une dépendance. Le prix à payer pour cela a été un petit " +#~ "changement dans la structure de nos préréglages. Avec un peu de patience, " +#~ "il est possible d’éditer les préréglages PulseEffects avec un éditeur de " +#~ "texte et de les faire fonctionner dans EasyEffects. Quelqu’un proposera " +#~ "peut-être un script pour cela prochainement." + +#~ msgid "" +#~ "New libraries are being used and some of the librarires that were " +#~ "optional before are now required" +#~ msgstr "" +#~ "De nouvelles bibliothèques sont utilisées et certaines d’entre elles, qui " +#~ "étaient auparavant facultatives, sont désormais obligatoires" + +#~ msgid "Average" +#~ msgstr "Moyenne" + +#~ msgid "Failed" +#~ msgstr "Échec" + +#~ msgid "Use Default" +#~ msgstr "Utiliser la valeur par défaut" + +#~ msgid "Remove this plugin" +#~ msgstr "Supprimer ce plugin" + +#~ msgid "Import Presets" +#~ msgstr "Ouvrir préréglage" + +#~ msgid "Start Service at Login" +#~ msgstr "Lancer le service au démarrage" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Réinitialiser le volume au démarrage" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aucune compression" + +#~ msgid "Add to Blocklist" +#~ msgstr "Ajouter à la liste de blocage" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibration de la correction microphone" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Table sinusoïdale" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Table sinusoïdale" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latence" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Gain d'entrée [dB]" + +#, fuzzy +#~ msgid "Output Effects" +#~ msgstr "Limiteur d'entrée" + +#~ msgid "Settings" +#~ msgstr "Paramètres" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Paramètres" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Calibration" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Signal de test" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Signal de test" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spectromètre" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spectromètre" + +#, fuzzy +#~ msgid "Spectrum Color" +#~ msgstr "Spectromètre" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Réduction de gain" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "Niveau" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Passe-bas" + +#~ msgid "Input Limiter" +#~ msgstr "Limiteur d'entrée" + +#~ msgid "Calibration" +#~ msgstr "Calibration" + +#, fuzzy +#~ msgid "Limit" +#~ msgstr "Limite [dB]" + +#~ msgid "Attenuation" +#~ msgstr "Atténuation" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Effets audio pour applications PulseAudio" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Effets audio pour applications PulseAudio" + +#, fuzzy +#~ msgid "Calibration Microphone" +#~ msgstr "Calibration de la correction microphone" + +#~ msgid "Sine" +#~ msgstr "Sinusoïde" + +#~ msgid "Square" +#~ msgstr "Carrée" + +#~ msgid "Saw" +#~ msgstr "Dent de scie" + +#~ msgid "Triangle" +#~ msgstr "Triangle" + +#, fuzzy +#~ msgid "Silence" +#~ msgstr "Silence" + +#~ msgid "Pink Noise" +#~ msgstr "Bruit rose" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Bruit Gaussien" + +#~ msgid "Red Noise" +#~ msgstr "Bruit rouge" + +#~ msgid "Blue Noise" +#~ msgstr "Bruit bleu" + +#~ msgid "Violet Noise" +#~ msgstr "Bruit violet" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#, fuzzy +#~ msgid "Window" +#~ msgstr "Fenêtre [s]" + +#~ msgid "Measure Noise" +#~ msgstr "Mesurer le bruit" + +#~ msgid "Subtract Noise" +#~ msgstr "Enlever le bruit" + +#, fuzzy +#~ msgid "High" +#~ msgstr "Passe-haut" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Réduction de gain" + +#, fuzzy +#~ msgid "Very High" +#~ msgstr "Passe-haut" + +#, fuzzy +#~ msgid "Noise Suppressor" +#~ msgstr "Compresseur" + +#, fuzzy +#~ msgid "Detection Likelihood" +#~ msgstr "Atténuation" + +#, fuzzy +#~ msgid "Voice Detector" +#~ msgstr "Atténuation" + +#, fuzzy +#~ msgid "Select the impulse Response File" +#~ msgstr "Réponse plane" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Aucune compression" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Calibration" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Paramètres" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Préréglage" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Atténuation" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Fréquence [Hz]" + +#, fuzzy +#~ msgid "Buffer" +#~ msgstr "Latence" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Égaliseur - Sortie" + +# Taking lingual shortcuts to squeeze it in the text box +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Taille pièce" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Ouvrir préréglage" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Réduction de gain" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 0000000..b543575 --- /dev/null +++ b/po/gl.po @@ -0,0 +1,3276 @@ +# Galician translation for EasyEffects +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# Xosé , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-09 11:09+0000\n" +"Last-Translator: Fran Diéguez \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ecualizador, compresor e outros efectos de son" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de son para as aplicacións de PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limitador;compresor;reverberación;ecualizador;volume automático;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "«Preconfiguracións»" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Activado" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplicacións" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplicacións" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Preferencias" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Manual" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Atallos de teclado" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Configuración" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Sobre EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Preconfiguracións" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Menú de preconfiguracións" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Desvío global" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Menú primario" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "Xanela de EasyEffects" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Lista de aplicacións" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Paredes baleiras" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplicacións" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Destino" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Máximo" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Referencia" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentáneo" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Curto prazo" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrado" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Empregar media xeométrica" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Empregar media xeométrica" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Empregar media xeométrica" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Empregar media xeométrica" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Restabelecer historial" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativo" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Intervalo" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Sonoridade" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Ganancia da saída" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Entrada" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Saída" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Saída" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Saída" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Restabelecer" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Usando" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Dispositivo" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nome" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Perfíl" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Preconfiguración" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Retirar este ficheiro de preconfiguracións" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Escoitar" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mesturar harmónicos" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3.º" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2.º" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Cantidade" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmónicos" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Ámbito" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Chan" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Chan" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Ligazón" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplicacións" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Mostrar aplicacións bloqueadas na lapela principal" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Aplicacións" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Mostrar aplicacións bloqueadas na lapela principal" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modo" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Descendente" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Ascendente" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Modo de compresión" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Limiar de realce" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Cantidade" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Ataque" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Tempo" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Limiar" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Ataque" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Limiar" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Soltar" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Soltar" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Limiar da solta relativa" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Proporción" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Xeonllo" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Restauración" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Cadea lateral" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Pico" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Frecuencias baixas" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Cadea lateral" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Fonte" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Medio" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Lado" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Esquerda" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Dereita" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Cadea lateral" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipo" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Remitir" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Retroalimentar" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Externo" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Cadea lateral" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Nivel de entrada" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Preamplificación" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reactividade" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Delonga máxima" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Cadea lateral" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Paso alto" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frecuencia" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Desactivado" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Modo de filtro de frecuencias altas" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Frecuencias altas" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Modo de filtro de frecuencias altas" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Ganancia" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "E" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Canles" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "D" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Dividir canles" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Impulsos" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Combinar" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Largura do estéreo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Espectro" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Ganancia automática" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Taxa" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Mostras" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Duración" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Resposta de impulso" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Saída" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importar impulso" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Buscar" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Importar ficheiro de impulso" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Importar ficheiro de impulso" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Predeterminado" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Corte" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Fonte" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Desvío" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Silenciar" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detección" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Amplo" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Dividir" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "División F1" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "Pico F2" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "Ganancia F1" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "Nivel F2" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "Pico F2 Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frecuencia" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Laxitude" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detectado" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Redución" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Tamaño de fotograma" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filtro" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bandas" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "Transformada rápida de Fourier" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Dividir canles" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Resposta plana" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calcular frecuencias" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "Preconfiguracións de APO" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Campaíña" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Frecuencias altas" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Andel alto" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Frecuencias baixas" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Andel baixo" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Entalla" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonancia" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Todos os pasos" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Desvío" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Bandas" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pendente" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Pendente" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Largura" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Calidade" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Teito" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Acceso" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Descrición" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Retirar este ficheiro de preconfiguracións" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "Paso baixo 12dB/oct" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "Paso baixo 24dB/oct" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "Paso baixo 36dB/oct" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "Paso alto 12dB/oct" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "Paso alto 24dB/oct" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "Paso alto 36dB/oct" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "Paso de banda 6dB/oct" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "Paso de banda 12dB/oct" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "Paso de banda 18dB/oct" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "Rexeita faixa 6dB/oct" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "Rexeita faixa 12dB/oct" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "Rexeita faixa 18dB/oct" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inercia" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Porta" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Soltar" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Externo" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Limiar dinámico" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Sobremostraxe" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Amplo" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Amplo" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Largura de liña" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Largura de liña" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Largura de liña" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Ningunha" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Preamplificación" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Ligazón estéreo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Cadea lateral" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Nivelación automática" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Nivelación automática" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Nivelación automática" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Nivelación automática" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Esquerda" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Dereita" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Cadea lateral" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Cadea lateral" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Estándar" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Plano" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Tamaño de FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Saída" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Teito" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Importar modelo" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Clásico" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Moderno" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Cadea lateral" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Bandas" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Bandas" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Modo de compresión" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Desvío" + +#: data/ui/multiband_compressor_band.ui:431 +#, fuzzy +msgid "Band Sidechain Options" +msgstr "Cadea lateral" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Modo de filtro de frecuencias baixas" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Modo de filtro de frecuencias baixas" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filtro de altas frecuencias" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Filtro de altas frecuencias" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Ganancia F1" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Curva" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Dividir" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Dividir 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Dividir 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Dividir 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frecuencia" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sub-banda" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Desvío" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Redución de ganancia" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Soltar" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Restauración" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Redución" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Redución de ganancia" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Banda baixa" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Desvío" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Redución de ganancia" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Soltar" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Restauración" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Redución de ganancia" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Banda media" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Desvío" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Redución de ganancia" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Soltar" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Restauración" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Redución de ganancia" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Banda alta" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Desvío" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Redución de ganancia" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Soltar" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Restauración" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Redución de ganancia" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Xeral" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Empregar o predeterminado" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Nivel de entrada" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Empregar o predeterminado" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Saída" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Reverberación" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Versión" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Taxa da mostraxe predeterminada" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Máximo" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Ganancia máxima" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Saída de son por defecto" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Saída" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Preconfiguracións de saída: " + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Preconfiguracións de saída: " + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Nivel de entrada" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Preconfiguracións de entrada: " + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Preconfiguracións de entrada: " + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Sinais de proba" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Estado" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Activado" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Propiedades" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canles" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Ambos" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Canles" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Forma de onda" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Táboa de senos" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Ruído branco" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Andel alto" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Calidade" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "Preservado" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Limpidez" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detección" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Compresión" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Compresión de ganancia" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Cents" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitóns" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oitavas" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Retirar este ficheiro de preconfiguracións" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Efectos de entrada" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Xeral" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Servizo" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Audio" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Procesar todas as saí­das" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Procesar todas as entradas" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +#, fuzzy +msgid "Inactivity Timeout" +msgstr "Tempo límite da actividade" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Estilo" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Empregar tema escuro" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Espectro" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Forma" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barras" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Liñas" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Puntos" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Puntos" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Altura" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Largura de liña" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Encher" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Cor" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frecuencia" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Mínimo" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Máximo" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Cargar" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Gardar as opcións actuais neste ficheiro de preconfiguracións" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Retirar este ficheiro de preconfiguracións" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Preconfiguracións de saída: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Sen preconfiguración" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importar preconfiguración" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Preconfiguracións de saída: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Preconfiguracións de saída: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Preconfiguracións de entrada: " + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Preconfiguracións de entrada: " + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Preconfiguracións de entrada: " + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Amortecemento de frecuencias altas" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Tamaño da sala" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Pequena" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Media" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Túnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/suave" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difusión" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Delonga previa" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Tempo de decaemento" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Cantidade" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Nivel do destino" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Cantidade" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Nivel F2" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Paso alto" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Corte de agudos" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiente" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Paredes baleiras" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Sala" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Sala de concertos grande baleira" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Sala de concertos grande ocupada" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importar modelo" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modelos" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +#, fuzzy +msgid "Standard Model" +msgstr "Modelo RNNoise estándar" + +#: data/ui/rnnoise.ui:90 +#, fuzzy +msgid "RNNoise Models List" +msgstr "Modelo RNNoise estándar" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Modelo activo" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Modelo RNNoise estándar" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Vista xeral" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Restabelecer EasyEffects." + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +#, fuzzy +msgid "Close the Window" +msgstr "Agochar a xanela." + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Balance" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Compresión de ganancia" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Compresión de ganancia" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matriz estéreo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "DE>DE (Predeterminado de estéreo)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "ED>M (Estéreo a medio)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "M>ED (Medio a estéreo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "ED>EE (Mono canle esquerda)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "ED>DD (Mono canle dereita)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "ED>E+D(Mono suma de E+D)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "ED>DE (Canles estéreo invertidas)" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Base de estéreo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inverter fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Nivel lateral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balance lateral" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Nivel medio" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama medio" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Saída" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Delonga E/D" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Delonga E/D" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base de estéreo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fase estéreo" + +#: src/app_info.cpp:64 +#, fuzzy +msgid "Running" +msgstr "en execución" + +#: src/app_info.cpp:66 +#, fuzzy +msgid "Suspended" +msgstr "suspendido" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "a crear" + +#: src/app_info.cpp:72 +#, fuzzy +msgid "Error" +msgstr "erro" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Canles" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Preconfiguracións de saída: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Preconfiguracións de entrada: " + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Efectos de son para as aplicacións de PulseAudio" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Saír do EasyEffects. É últil cando se executa no modo de servizo." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Cargar unha preconfiguración. Exemplo: pulseefects-l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Restabelecer EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Agochar a xanela." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Desvío global. 1 para activar, 2 para desactivar e 3 para coñecer o estado" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Mostrar preoconfiguracións dispoñíbeis." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Importar ficheiro de impulso" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importar ficheiro de impulso" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Abrir" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Cancelar" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Resposta de impulso" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Resposta de impulso" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Importar impulso" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Importar ficheiro de impulso" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Non foi posíbel cargar o ficheiro de impulso" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Gravadoras" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Reprodutores" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinito" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Importar ficheiro de preconfiguracións de APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Preconfiguracións de APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Retirar este ficheiro de preconfiguracións" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Eliminar" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Saída" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Engadir" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Importar preconfiguración" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importar ficheiro de modelo" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Modelo RNNoise estándar" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Mellora de baixos" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Sonoridade" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolución" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristalizador" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Delonga" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Cancelador de cco" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ecualizador" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitación" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtro" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limitador" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizador" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compresor multibanda" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Porta multibanda" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Ton" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Reverberación" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Redución de ruído" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Ferramentas de estéreo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "O EasyEffects é unha ferramenta avanzada de manipulación de son. Inclúe " +#~ "ferramentas como ecualizador, limitador, compresor e reverberación, por " +#~ "mencionar só algunhas. Para complementalas, incorpora tamén un analizador " +#~ "de espectros." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects é o sucesor de PulseEffects. EasyEffects só admite o servidor " +#~ "de son de PipeWire. Os usuarios de PulseAudio deberían usar no lugar " +#~ "PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Dado que o EasyEffects emprega o servidor de son PipeWire predeterminado " +#~ "debería funcionar coa maioría, se non todas, as aplicacións que use. " +#~ "Todas as aplicacións admitidas preséntanse na xanela principal, na que é " +#~ "posíbel activar cada unha delas individualmente." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Ademais de manipular a saída de son, o EasyEffects pode aplicar efectos a " +#~ "un dispositivo de entrada, como un micrófono. Isto é útil, por exemplo, " +#~ "para gravar son, mais tamén funciona ben durante as conversas de voz." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Ao iniciar, EasyEffects lembra a configuración empregada na sesión " +#~ "anterior. Tamén é posíbel gardar as opcións actuais como perfís." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "A páxina principal que mostra dúas aplicacóns con saída de son" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "A páxina do mellorador de baixos mostrando os controles de son" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "A páxina do convolucionador mostrando os controles de son" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta publicación engade as seguintes características:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Esta publicación arranxa os seguintes erros:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Hai unha nova configuración que lle permite ao usuario seleccionar un " +#~ "tempo de espera de inactividade para o pipeline. Cando non hai un cliente " +#~ "reproducindo" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "ou gravando desde os seus dispositivos os filtros desligaranse despois " +#~ "dun tempo. Isto faise para asegurarse que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "non gasta enerxía no procesador sen que se entere." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Isto debería evitar os casos onde o volume «Integrado» bloquease sempre " +#~ "no mesmo valor." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "A icona de EasyEffects foi actualizada para que poida verse mellor en " +#~ "escritorios QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta publicación arranxa o seguinte erro:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "A opción de liña de ordes que devolve un estado bypass global está " +#~ "funcionando de novo." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esta publicación engade a seguinte característica:" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Compatibilidade para a seguinte publicación de Pipewire 0.3.44" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Arranxouse un erro ao tentar crear un perfil de autocarga sen ter " +#~ "preconfiguracions causados por unha quebra da aplicación" + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "Úsase LibAdwaita para crear algunhas partes da nosa xanela e para " +#~ "xestionar o troque entre temas escuro e claro." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "" +#~ "O menú de preferencias foi redeseñado empregando trebellos de LibAdwaita." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM e GLIBMM xa non son dependencias. Agora usamos gtk4 directamente." + +#~ msgid "Average" +#~ msgstr "Media" + +#~ msgid "Failed" +#~ msgstr "Fallou" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Empregar o predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Retirar este ficheiro de preconfiguracións" + +#~ msgid "Import Presets" +#~ msgstr "Importar preconfiguración" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar automaticamente coa sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modelo activo" + +#~ msgid "Add to Blocklist" +#~ msgstr "Engadir á lista de bloqueo" + +#~ msgid "Blocklist" +#~ msgstr "Lista de bloqueos" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibración do micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Activar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Activar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "idle" +#~ msgstr "ocioso" + +#~ msgid "Faster" +#~ msgstr "Máis rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar formante" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Saída" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Canles" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Chan" + +#~ msgid "Output Effects" +#~ msgstr "Efectos de saída" + +#~ msgid "Settings" +#~ msgstr "Configuración" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Configuración" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Duración" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Sinais de proba" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Sinais de proba" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar espectro" + +#~ msgid "Border" +#~ msgstr "Bordo" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de espectro" + +#~ msgid "Spectrum Color" +#~ msgstr "Cor do espectro" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Modelo activo" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Redución máxima da ganancia" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Ponderacións" + +#~ msgid "Dry" +#~ msgstr "Seco" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Short Term" +#~ msgstr "Curto prazo" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Frecuencias baixas" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Fixación do volume e des/activación dos efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Inclúe un ecualizador con preconfiguracións incorporadas" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Control de suavizado automático" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Efectos de son para as aplicacións de PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Efectos de son para as aplicacións de PulseAudio" + +#~ msgid "Help" +#~ msgstr "Axuda" + +#~ msgid "Calibration Microphone" +#~ msgstr "Calibración do micrófono" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Aplicar esta preconfiguración automaticamente sempre que o dispositivo en " +#~ "uso estea conectado ao sistema" + +#~ msgid "Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Default Devices and Sampling Rate" +#~ msgstr "Taxa da mostraxe predeterminada" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cadrado" + +#~ msgid "Saw" +#~ msgstr "Serra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruído rosa" + +#~ msgid "Ticks" +#~ msgstr "Marcas" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruído gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruído vermello" + +#~ msgid "Blue Noise" +#~ msgstr "Ruído azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruído violeta" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Xanela" + +#~ msgid "Measure Noise" +#~ msgstr "Medir ruído" + +#~ msgid "Subtract Noise" +#~ msgstr "Subtraer ruído" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Provided by" +#~ msgstr "Fornecido por" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro estendido" + +#~ msgid "Low" +#~ msgstr "Baixo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alta" + +#~ msgid "Suppression Level" +#~ msgstr "Nivel de supresión" + +#~ msgid "Delay Agnostic" +#~ msgstr "Agnóstico coa delonga" + +#~ msgid "Very High" +#~ msgstr "Moi alta" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresión de ruído" + +#~ msgid "Adaptive Digital" +#~ msgstr "Dixital adaptativo" + +#~ msgid "Fixed Digital" +#~ msgstr "Dixital fixo" + +#~ msgid "Gain Controller" +#~ msgstr "Controlador de ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidade de detección" + +#~ msgid "Very Low" +#~ msgstr "Moi baixa" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de voces" + +#~ msgid "Use Custom Color" +#~ msgstr "Empregar cor personalizada" + +#~ msgid "Use Gradient" +#~ msgstr "Empregar gradación" + +#~ msgid "Gradient Color" +#~ msgstr "Cor de gradación" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar ficheiro de resposta de impulso" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione o ficheiro de resposta de impulso" + +#~ msgid "Aggressive Mode" +#~ msgstr "Modo agresivo" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Despois" + +#~ msgid "Loudness Range" +#~ msgstr "Intervalo de sonoridade" + +#~ msgid "Loudness Compensator" +#~ msgstr "Compensador de sonoridade" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Based on" +#~ msgstr "Baseado en" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar silencio" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Conecte de novo o micrófono para aplicar os cambios feitos na lista de " +#~ "bloqueos" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Reinicie o reprodutor para aplicar os cambios feitos na lista de boqueos" + +#~ msgid "Low-pass Frequency" +#~ msgstr "Frecuencias baixas" + +#~ msgid "Advanced" +#~ msgstr "Avanzado" + +#~ msgid "Apply APO Preset" +#~ msgstr "Aplicar preconfiguración de APO" + +#~ msgid "Muted" +#~ msgstr "Enmudecido" + +#~ msgid "Distant Headphones" +#~ msgstr "Auriculares distantes" + +#~ msgid "Niceness" +#~ msgstr "Prioridade" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de prioridade" + +#~ msgid "Priority" +#~ msgstr "Prioridade" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Default Source" +#~ msgstr "Fonte predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de mostraxe predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Asignación de canles" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "File" +#~ msgstr "Ficheiro" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +#~ msgid "Resamplers" +#~ msgstr "Resampleadores" + +#~ msgid "Pipeline Input" +#~ msgstr "Entrada de tubaxe" + +#~ msgid "Buffer" +#~ msgstr "Búfer" + +#~ msgid "Pipeline Output" +#~ msgstr "Saída de tubaxe" + +#~ msgid "Block Size" +#~ msgstr "Tamaño do bloque" + +#~ msgid "Sampling" +#~ msgstr "Mostraxe" + +#~ msgid "Minimum Frequency" +#~ msgstr "Frecuencia mínima" + +#~ msgid "Maximum Frequency" +#~ msgstr "Frecuencia máxima" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 0000000..124db45 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,3175 @@ +# Croatian translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the EasyEffects package. +# gogo , 2017. +# rooty , 2018. +# flipwise , 2018. +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2018-11-22 20:12+0200\n" +"Last-Translator: flipwise \n" +"Language-Team: Croatian\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.7\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +#, fuzzy +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ekvalizator, kompresor i drugi audio efekti" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "graničnik;kompresor;odjek;ekvalizator;automatska glasnoća zvuka;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +#, fuzzy +msgid "\"Presets\"" +msgstr "Predlošci" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Omogući" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplikacije" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplikacije" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +#, fuzzy +msgid "_Shortcuts" +msgstr "Kratkoročno" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Postavke" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Predlošci" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Predlošci" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +#, fuzzy +msgid "Global Bypass" +msgstr "Premosnica" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Aplikacije" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Prazna soba" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplikacije" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Meta" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Najveće pojačanje" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Trenutačno" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Kratkoročno" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrirano" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +#, fuzzy +msgid "Reset History" +msgstr "Vrati izvornu kvalitetu" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativno" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Raspon" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Glasnoća" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Pojačanje ulaza" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Ulaz" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Pojačanje ulaza" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Izlaz" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Pojačanje ulaza" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Vrati na tvorničke postavke" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +#, fuzzy +msgid "Device" +msgstr "Ulazni uređaj" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Naziv" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Predlošci" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Kompresija" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Poslušaj" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Spajanje harmonijskog reda" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3." + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2." + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Jačina" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonijski red" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Raspon" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Dno" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Dno" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplikacije" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Aplikacije" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Aplikacije" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Aplikacije" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Način" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +#, fuzzy +msgid "Compression Mode" +msgstr "Kompresija" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Prag" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Jačina" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Pokretanje" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Vrijeme opadanja intenziteta signala" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Prag" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Pokretanje" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Prag" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Vrijeme prijelaza" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Vrijeme prijelaza" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Prag" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Omjer" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +#, fuzzy +msgid "Knee" +msgstr "Koljeno" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +#, fuzzy +msgid "Makeup" +msgstr "Dorada" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +#, fuzzy +msgid "Sidechain" +msgstr "Postranični ulaz" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Vrhunac" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +#, fuzzy +msgid "Low-Pass" +msgstr "Nizak prolaz" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Postranični ulaz" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +#, fuzzy +msgid "Source" +msgstr "Izvor" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +#, fuzzy +msgid "Middle" +msgstr "Srednji nivo" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +#, fuzzy +msgid "Side" +msgstr "Strana" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Lijevo" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Desno" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Postranični ulaz" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +#: data/ui/compressor.ui:542 +#, fuzzy +msgid "Feed-back" +msgstr "Dovod zvuka" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Postranični ulaz" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Ulazni uređaj" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Aplikacije" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Preduhvatiti" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Postranični ulaz" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Filter visokog prolaza" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frekvencija" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +#, fuzzy +msgid "12 dB/oct" +msgstr "12dB/oct niski prolaz" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +#, fuzzy +msgid "24 dB/oct" +msgstr "24dB/oct niski prolaz" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +#, fuzzy +msgid "36 dB/oct" +msgstr "36dB/oct niski prolaz" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Filter visokog prolaza" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Prigušivanje visokih frekvencija" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Filter visokog prolaza" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Pojačanje" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Kanali" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "D" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Kanali" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Reakcija impulsa" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +#, fuzzy +msgid "Stereo Width" +msgstr "Stereo širina" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektar" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Automatsko pojačavanje" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Frekvencija" + +#: data/ui/convolver.ui:159 +#, fuzzy +msgid "Samples" +msgstr "Semplovi" + +#: data/ui/convolver.ui:180 +#, fuzzy +msgid "Duration" +msgstr "Trajanje" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Reakcija impulsa" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Izlaz" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +#, fuzzy +msgid "Import Impulse" +msgstr "Učitaj impuls" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Učitaj impuls datoteku" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Učitaj impuls datoteku" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Tvorničke postavke" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Prekid" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Dovod zvuka" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Premosnica" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Bezvučno" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detekcija" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Široko" + +#: data/ui/deesser.ui:62 +#, fuzzy +msgid "Split" +msgstr "Razdvojeno" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Razdvojeno" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frekvencija" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Vrhunac" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frekvencija" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Pojačanje" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frekvencija" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Razina" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frekvencija" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Vrhunac Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frekvencija" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Popustljivost" + +#: data/ui/deesser.ui:569 +#, fuzzy +msgid "Detected" +msgstr "Detektirano" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Smanjenje" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Veličina okvira" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filter" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Broj raspona" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +#, fuzzy +msgid "Split Channels" +msgstr "Kanali" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Ravan izlaz" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Izračunaj frekvencije" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "Predlošci" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +#, fuzzy +msgid "High Pass" +msgstr "Filter visokog prolaza" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Visoki shelf" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Nizak prolaz" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Niski shelf" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Rezonancija" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Nizak prolaz" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Premosnica" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Broj raspona" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Broj raspona" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Širina" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kvaliteta" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Vrh" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Detekcija" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Kompresija" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct niski prolaz" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct niski prolaz" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct niski prolaz" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct visoki prolaz" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct visoki prolaz" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct visoki prolaz" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct band prolaz" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct band prolaz" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct band prolaz" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct odbijanje banda" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct odbijanje banda" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct odbijanje banda" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inercija" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Vrata" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Vrijeme prijelaza" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Integrirano" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Jači sampling" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Široko" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Široko" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Širina" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Širina" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Širina" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Aplikacije" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Stereo veza" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Postranični ulaz" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Automatsko pojačavanje" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Automatsko pojačavanje" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Automatsko pojačavanje" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Automatsko pojačavanje" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Lijevo" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Desno" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Postranični ulaz" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Postranični ulaz" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Veličina okvira" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Izlaz" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Vrh" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Učitaj impuls" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Način" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Postranični ulaz" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Broj raspona" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Kompresija" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Premosnica" + +#: data/ui/multiband_compressor_band.ui:431 +#, fuzzy +msgid "Band Sidechain Options" +msgstr "Postranični ulaz" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Filter" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Filter" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filter visokog prolaza" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Filter visokog prolaza" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Pojačanje ulaza" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Razdvojeno" + +#: data/ui/multiband_gate.ui:48 +#, fuzzy +msgid "Split 1/2" +msgstr "Razdvojeno 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frekvencija" + +#: data/ui/multiband_gate.ui:81 +#, fuzzy +msgid "Split 2/3" +msgstr "Razdvojeno 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frekvencija" + +#: data/ui/multiband_gate.ui:114 +#, fuzzy +msgid "Split 3/4" +msgstr "Razdvojeno 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frekvencija" + +#: data/ui/multiband_gate.ui:162 +#, fuzzy +msgid "Sub Band" +msgstr "Sub band" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Premosnica" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Ograničenje pojačanja" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Pokretanje" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Vrijeme prijelaza" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Dorada" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Smanjenje" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Ograničenje pojačanja" + +#: data/ui/multiband_gate.ui:522 +#, fuzzy +msgid "Low Band" +msgstr "Niski band" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Premosnica" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Ograničenje pojačanja" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Pokretanje" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Vrijeme prijelaza" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Dorada" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Ograničenje pojačanja" + +#: data/ui/multiband_gate.ui:882 +#, fuzzy +msgid "Mid Band" +msgstr "Srednji band" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Premosnica" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Ograničenje pojačanja" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Pokretanje" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Vrijeme prijelaza" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Dorada" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Ograničenje pojačanja" + +#: data/ui/multiband_gate.ui:1242 +#, fuzzy +msgid "High Band" +msgstr "Visoki band" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Premosnica" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Ograničenje pojačanja" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Pokretanje" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Vrijeme prijelaza" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Broj raspona" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Dorada" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Ograničenje pojačanja" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Općenito" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Koristi tvorničke postavke" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Ulazni uređaj" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Koristi tvorničke postavke" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Pojačanje ulaza" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Reverberacija" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Jači sampling" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Frekvencija" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Najveće pojačanje" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Tvorničke postavke" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Pojačanje ulaza" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Predlošci: " + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Predlošci: " + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Ulazni uređaj" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Učitaj predloške" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Učitaj predloške" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +#, fuzzy +msgid "Clients" +msgstr "Centi" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Centi" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Testni signali" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Stanje" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Omogući" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanali" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Kanali" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Sinus tablica" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Bijeli šum" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Visoki shelf" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Kvaliteta" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Format" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Predlošci" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Oštrina" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detekcija" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Kompresija" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Centi" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Polustepeni" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktave" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Kompresija" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Ulazni efekti" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "Općenito" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Ulazni uređaj" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Koristi tamnu temu" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Spektar" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Broj traka" + +#: data/ui/preferences_spectrum.ui:68 +#, fuzzy +msgid "Height" +msgstr "Visina" + +#: data/ui/preferences_spectrum.ui:91 +#, fuzzy +msgid "Line Width" +msgstr "Širina" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frekvencija" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Maksimum" + +#: data/ui/preferences_spectrum.ui:211 +#, fuzzy +msgid "Maximum" +msgstr "Maksimum" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +#, fuzzy +msgid "Save current settings to this preset file" +msgstr "Spremi trenutne postavke u predložak" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Predlošci: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Stvori predložak" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Učitaj predloške" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Predlošci: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Predlošci: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Učitaj predloške" + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Učitaj predloške" + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Učitaj predloške" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Prigušivanje visokih frekvencija" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Veličina sobe" + +#: data/ui/reverb.ui:70 +#, fuzzy +msgid "Small" +msgstr "Mala" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Osrednja" + +#: data/ui/reverb.ui:72 +#, fuzzy +msgid "Large" +msgstr "Velika" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Velika/glatko" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Eksperimentalna" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difuzija" + +#: data/ui/reverb.ui:129 +#, fuzzy +msgid "Pre Delay" +msgstr "Prijevremeno kašnjenje" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Vrijeme opadanja intenziteta signala" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Jačina" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Ciljana razina" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Jačina" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Razina" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Odrezivanje basa" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Odrezivanje trebla" + +#: data/ui/reverb.ui:565 +#, fuzzy +msgid "Ambience" +msgstr "Ambijent" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Prazna soba" + +#: data/ui/reverb.ui:585 +#, fuzzy +msgid "Room" +msgstr "Soba" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Velika prazna dvorana" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Velika popunjena dvorana" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Učitaj impuls" + +#: data/ui/rnnoise.ui:40 +#, fuzzy +msgid "Models" +msgstr "Način" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +#, fuzzy +msgid "Active Model" +msgstr "Kompresija" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +#, fuzzy +msgid "Overview" +msgstr "Ulazni uređaj" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Ravnoteža" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Ravnoteža" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Stranična razina" + +#: data/ui/stereo_tools.ui:118 +#, fuzzy +msgid "Stereo Matrix" +msgstr "Stereo matrica" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Stereo baza" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inverzija faze" + +#: data/ui/stereo_tools.ui:222 +#, fuzzy +msgid "Side Level" +msgstr "Stranična razina" + +#: data/ui/stereo_tools.ui:258 +#, fuzzy +msgid "Side Balance" +msgstr "Stranična ravnoteža" + +#: data/ui/stereo_tools.ui:294 +#, fuzzy +msgid "Middle Level" +msgstr "Srednji nivo" + +#: data/ui/stereo_tools.ui:330 +#, fuzzy +msgid "Middle Panorama" +msgstr "Srednja panorama" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Pojačanje ulaza" + +#: data/ui/stereo_tools.ui:419 +#, fuzzy +msgid "Delay L/R" +msgstr "Kašnjenje L/D" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Kašnjenje L/D" + +#: data/ui/stereo_tools.ui:455 +#, fuzzy +msgid "Stereo Base" +msgstr "Stereo baza" + +#: data/ui/stereo_tools.ui:491 +#, fuzzy +msgid "Stereo Phase" +msgstr "Stereo faza" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "Postavke" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Kanali" + +#: src/application.cpp:250 +#, fuzzy +msgid "Output Presets: " +msgstr "Predlošci: " + +#: src/application.cpp:258 +#, fuzzy +msgid "Input Presets: " +msgstr "Učitaj predloške" + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" +"Zatvori EasyEffects. Korisno pri upotrebi u servisnom načinu pokretanja." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Učitaj predložak. Primjer: easyeffects -l music" + +#: src/application.cpp:509 +#, fuzzy +msgid "Reset EasyEffects." +msgstr "EasyEffects" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Prikaži dostupne predloške." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Učitaj impuls datoteku" + +#: src/convolver_menu_impulses.cpp:125 +#, fuzzy +msgid "Import Impulse File" +msgstr "Učitaj impuls datoteku" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Otvori" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Poništi" + +#: src/convolver_menu_impulses.cpp:130 +#, fuzzy +msgid "Impulse Response" +msgstr "Reakcija impulsa" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Reakcija impulsa" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Učitaj impuls" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Učitaj impuls datoteku" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Nije bilo moguće učitati impuls datoteku" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "" + +#: src/equalizer_ui.cpp:351 +#, fuzzy +msgid "Import APO Preset File" +msgstr "Učitaj predloške" + +#: src/equalizer_ui.cpp:357 +#, fuzzy +msgid "APO Presets" +msgstr "Predlošci" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Pojačanje ulaza" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Učitaj predloške" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "Učitaj impuls datoteku" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Kompresija" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Pojačanje basa" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Glasnoća" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Konvolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Križno spajanje" + +#: src/tags_plugin_name.cpp:31 +#, fuzzy +msgid "Crystalizer" +msgstr "Kristalizator" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "De-esiranje" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Kašnjenje" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Poništenje jeke" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ekvalizator" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Uzbuđivač" + +#: src/tags_plugin_name.cpp:37 +#, fuzzy +msgid "Filter" +msgstr "Filter" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Graničnik" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maksimizer" + +#: src/tags_plugin_name.cpp:42 +#, fuzzy +msgid "Multiband Compressor" +msgstr "Višerasponski kompresor" + +#: src/tags_plugin_name.cpp:43 +#, fuzzy +msgid "Multiband Gate" +msgstr "Višerasponska vrata" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Visina" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Reverberacija" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Ograničenje pojačanja" + +#: src/tags_plugin_name.cpp:47 +#, fuzzy +msgid "Stereo Tools" +msgstr "Stereo alati" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#, fuzzy +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects je napredan alat za manipulaciju zvukom. Uključuje " +#~ "ekvalizator, graničnik, kompresor, alat odjeka te mnoge druge druge " +#~ "alate. Još sadrži i ugrađeni analizator spektra." + +#, fuzzy +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Zato što EasyEffects koristi zadani PulseAudio zvučni poslužitelj, radit " +#~ "će s većinom, ako ne i sa svim aplikacijama koje koristite. Sve podržane " +#~ "aplikacije su prikazane u glavnom prozoru, gdje se na svaku pojedinačno " +#~ "može omogućiti utjecaj efekata." + +#, fuzzy +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Osim manipuliranja izlaza zvuka, EasyEffects može primijeniti efekte i na " +#~ "ulazni uređaj, poput mikrofona. To je na primjer korisno pri snimanju " +#~ "zvuka, ali isto tako funkcionira dobro i tijekom glasovnih razgovora." + +#, fuzzy +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Kad je EasyEffects pokrenut, upotrijebit će podešavanja od prošlog puta. " +#~ "Također je moguće spremiti sve trenutne postavke kao predloške." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Average" +#~ msgstr "Prosjek" + +#~ msgid "Failed" +#~ msgstr "Nije uspjelo" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Koristi tvorničke postavke" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Kompresija" + +#~ msgid "Import Presets" +#~ msgstr "Učitaj predloške" + +#~ msgid "Start Service at Login" +#~ msgstr "Pokreni servis pri pokretanju računala" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Crna lista" + +#~ msgid "Blocklist" +#~ msgstr "Crna lista" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibracija mikrofona" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Omogući" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Omogući" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latencija" + +#~ msgid "Faster" +#~ msgstr "Brže" + +#~ msgid "Preserve Formant" +#~ msgstr "Sačuvaj formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Pojačanje ulaza" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Dno" + +#~ msgid "Output Effects" +#~ msgstr "Izlazni efekti" + +#~ msgid "Settings" +#~ msgstr "Postavke" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Postavke" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Trajanje" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Testni signali" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Testni signali" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spektar" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spektar" + +#, fuzzy +#~ msgid "Spectrum Color" +#~ msgstr "Boja spektra" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Otežanja" + +#~ msgid "Dry" +#~ msgstr "Suhoća" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "S/C Razina" + +#~ msgid "Short Term" +#~ msgstr "Kratkoročno" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Nizak prolaz" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Postavi razinu zvuka te uključi/isključi efekte" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Uključuje i ekvalizator s ugrađenim predlošcima" + +#~ msgid "Input Limiter" +#~ msgstr "Graničnik ulaza" + +#~ msgid "Calibration" +#~ msgstr "Kalibracija" + +#~ msgid "Limit" +#~ msgstr "Granica" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Prigušenje" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#~ msgid "Help" +#~ msgstr "Pomoć" + +#, fuzzy +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibracija mikrofona" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Kvadrat" + +#~ msgid "Saw" +#~ msgstr "Pila" + +#~ msgid "Triangle" +#~ msgstr "Trokut" + +#, fuzzy +#~ msgid "Silence" +#~ msgstr "Tišina" + +#~ msgid "Pink Noise" +#~ msgstr "Rozi šum" + +#~ msgid "Ticks" +#~ msgstr "Otkucaji" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussov šum" + +#~ msgid "Red Noise" +#~ msgstr "Crveni šum" + +#~ msgid "Blue Noise" +#~ msgstr "Plavi šum" + +#~ msgid "Violet Noise" +#~ msgstr "Ljubičasti šum" + +#~ msgid "Volume" +#~ msgstr "Glasnoća" + +#~ msgid "Window" +#~ msgstr "Prozor" + +#~ msgid "Measure Noise" +#~ msgstr "Izmjeri šum" + +#~ msgid "Subtract Noise" +#~ msgstr "Izdvoji šum" + +#~ msgid "Extended Filter" +#~ msgstr "Prošireni filter" + +#~ msgid "Low" +#~ msgstr "Nisko" + +#~ msgid "Moderate" +#~ msgstr "Umjereno" + +#~ msgid "High" +#~ msgstr "Visoko" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Razina supresije" + +#, fuzzy +#~ msgid "Very High" +#~ msgstr "Jako visoko" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresija buke" + +#~ msgid "Gain Controller" +#~ msgstr "Kontrola pojačanja" + +#~ msgid "Detection Likelihood" +#~ msgstr "Vjerojatnost detekcije" + +#~ msgid "Very Low" +#~ msgstr "Vrlo nisko" + +#~ msgid "Voice Detector" +#~ msgstr "Detektor glasa" + +#~ msgid "Use Custom Color" +#~ msgstr "Koristi vlastitu boju" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Učitaj datoteku reakcije impulsa" + +#, fuzzy +#~ msgid "Select the impulse Response File" +#~ msgstr "Odaberite datoteku reakcije impulsa" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Loudness Range" +#~ msgstr "Glasnoća" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Tvorničke postavke" + +#, fuzzy +#~ msgid "Default Source" +#~ msgstr "Tvorničke postavke" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Trajanje" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Izračunaj frekvencije" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Napredne postavke" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Detekcija" + +#, fuzzy +#~ msgid "Muted" +#~ msgstr "Bezvučno" + +#~ msgid "Distant Headphones" +#~ msgstr "Udaljene slušalice" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Promjena frekvencije" + +#~ msgid "Buffer" +#~ msgstr "Latencija međuspremnika" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Ekvalizator - Izlaz" + +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Veličina bloka" + +#~ msgid "Resampler" +#~ msgstr "Promjena frekvencije" + +#~ msgid "paused" +#~ msgstr "pauzirano" + +#~ msgid "playing" +#~ msgstr "reprodukcija" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Ograničenje pojačanja" diff --git a/po/id_ID.po b/po/id_ID.po new file mode 100644 index 0000000..3bee552 --- /dev/null +++ b/po/id_ID.po @@ -0,0 +1,3121 @@ +# This is Indonesia translate file for PE. We are need your help to completely translate this project. You can translate PuleEffect's help file to Indonesian to develop this project. If you any question about translating process, just send email that I have been desribed below. But if you want to support such as reporting any bugs, go ahead to github page @ https://github.com/wwmm/easyeffects/ +# Copyright (C) 2018 +# This file is distributed under the same license as the EasyEffects package. +# Dika Muhamad A. , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-02-19 08:54+0000\n" +"Last-Translator: Reza Almanda \n" +"Language-Team: Indonesian \n" +"Language: id_ID\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.11-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Equalizer, Compressor and Other Audio Effects" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efek Audio untuk Aplikasi PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limiter;compressor;reverberation;equalizer;autovolume;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "Preset" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Hidupkan" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplikasi" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplikasi" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +#, fuzzy +msgid "_Shortcuts" +msgstr "Waktu Singkat" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Setelan" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Preset" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Preset" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +#, fuzzy +msgid "Global Bypass" +msgstr "Bypass" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Aplikasi" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Tembok Kosong" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplikasi" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Target" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Angkatan Maksimal" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Efek Sejenak" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Waktu Singkat" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Terintegrasi" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Terapkan Gradien warna" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Terapkan Gradien warna" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Terapkan Gradien warna" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Terapkan Gradien warna" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relatif" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rentang" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Kelantangan" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Gain Input" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Masukan" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Gain Input" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Output" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Gain Input" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Atur Ulang" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +#, fuzzy +msgid "Device" +msgstr "Pembatas Masukan" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nama" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Preset" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Hapus Preset Pemuatan Otomatis" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Uji Pengaturan" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Pencampuran Harmonik" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "Ketiga" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "Kedua" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Besaran" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonik" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Frekuensi Target Bass" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Monitor Lantai" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Monitor Lantai" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplikasi" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Aplikasi" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Aplikasi" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Aplikasi" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modus" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Kompresi Menekan" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Kompresi Mengangkat" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +#, fuzzy +msgid "Compression Mode" +msgstr "Modus Kompresi" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Ambang Batas" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Besaran" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Attack" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Waktu Real Time" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Ambang Batas" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Attack" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Ambang Batas" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Rilis" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Rilis" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Ambang Batas" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Rasio" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Knee" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Penguatan" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Sidechain" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Peak" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +#, fuzzy +msgid "Low-Pass" +msgstr "Band Rendah" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniform" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Sidechain" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Sumber" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +#, fuzzy +msgid "Middle" +msgstr "Volume Kanal Tengah" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Volume Kanal Sisi" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Kiri" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Kanan" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Sidechain" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipe" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Feed-forward" + +#: data/ui/compressor.ui:542 +#, fuzzy +msgid "Feed-back" +msgstr "Volume Penyuapan" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Sidechain" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Pembatas Masukan" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Pra-Amplifikasi" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Pengaktifan Ulang" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Lookahead" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Sidechain" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "High Pass" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frekuensi" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Mati" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +#, fuzzy +msgid "12 dB/oct" +msgstr "Lowpass 12dB/oktaf" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +#, fuzzy +msgid "24 dB/oct" +msgstr "Lowpass 24dB/oktaf" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +#, fuzzy +msgid "36 dB/oct" +msgstr "Lowpass 36dB/oktaf" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Filter High Pass" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Frekuensi Tinggi" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Filter High Pass" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Besar Gain" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Besar Lembah" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Bentuk Kurva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "Kiri" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Total Kanal" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "Kanan" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Pisahkan Kanal" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Respons Impuls" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Lebar Stereo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +#, fuzzy +msgid "Log Scale" +msgstr "Skala" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Autogain" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Rataan Frekuensi" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Jumlah Sampel" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Durasi" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Respons Impuls" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Output" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Muat Impuls" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Muat Berkas Impuls" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Muat Berkas Impuls" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Aturan Bawaan" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Frekuensi Potong" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Volume Penyuapan" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Bypass" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Bungkam" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Deteksi" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Luas" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Pisah" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Pisah" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frekuensi" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Peak" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frekuensi" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Besar Gain" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frekuensi" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Level" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frekuensi" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Peak Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frekuensi" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Laksitas" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Terlacak" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Pengurangan" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Ukuran Bingkai" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filter" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Jumlah Band" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Pisahkan Kanal" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Respons Datar" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Hitung Frekuensi" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "Preset" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Bell" + +#: data/ui/equalizer_band.ui:110 +#, fuzzy +msgid "High Pass" +msgstr "High Pass" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "High Shelf" + +#: data/ui/equalizer_band.ui:112 +#, fuzzy +msgid "Low Pass" +msgstr "Pass Rendah" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Low Shelf" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonansi" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Pass Rendah" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Bypass" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Jumlah Band" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Besar Lembah" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Besar Lembah" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Lebar" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kualitas" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Langit-langit" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Deteksi" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Hapus Berkas Preset Ini" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "Lowpass 12dB/oktaf" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "Lowpass 24dB/oktaf" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "Lowpass 36dB/oktaf" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "Highpass 12dB/oktaf" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "Highpass 24dB/oktaf" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "Highpass 36dB/oktaf" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "Bandpass 6dB/oktaf" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "Bandpass 12dB/oktaf" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "Bandpass 18dB/oktaf" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "Bandreject 6dB/oktaf" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "Bandpass 12dB/oktaf" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "Bandpass 18dB/oktaf" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Kelembaman" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Gate" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Rilis" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Terintegrasi" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Gating" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Peningkat Sampling" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Luas" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Luas" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Lebar" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Lebar" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Lebar" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Biarkan" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "Setengah x2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "Setengah x3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "Setengah x3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "Setengah x4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "Setengah x4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "Setengah x6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "Setengah x6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "Setengah x8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "Setengah x8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "Penuh x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "Penuh x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "Penuh x3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "Penuh x3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "Penuh x4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "Penuh x4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "Penuh x6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "Penuh x6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "Penuh x8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "Penuh x8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "SC PreAmp" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Pra-Amplifikasi Sidechain" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Penautan Stereo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Sidechain" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Gain Otomatis" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Gain Otomatis" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Gain Otomatis" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Gain Otomatis" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Kiri" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Kanan" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Sidechain Kiri" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Sidechain Kanan" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standar" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Datar" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Ukuran FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Volume Keluaran" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Langit-langit" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Mode Operasi" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Klasik" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Modern" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Sidechain" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "BT Pink" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "MT Pink" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "BT Coklat" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "MT Coklat" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Daftar Band" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Band 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Band 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Band 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Band 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Band 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Band 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Band 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Band 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Mulai Band" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Akhir Band" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Mode Kompresi Band" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Bypass Band" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Opsi Sidechain Band" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Filter Low-Cut" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Frekuensi Filter Low-Cut" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Filter High-Cut" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Frekuensi Filter High-Cut" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "PreAmp" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Gain Input" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Bentuk Kurva" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Pisah" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Split 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frekuensi" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Split 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frekuensi" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Split 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frekuensi" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Band Sub" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Pengurangan Kuatan" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Attack" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Rilis" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Ambang Batas" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Penguatan" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Pengurangan" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Pengurangan Kuatan" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Band Rendah" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Pengurangan Kuatan" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Attack" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Rilis" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Ambang Batas" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Penguatan" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Pengurangan Kuatan" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Band Tengah" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Pengurangan Kuatan" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Attack" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Rilis" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Ambang Batas" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Penguatan" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Pengurangan Kuatan" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Band Tinggi" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Bypass" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Pengurangan Kuatan" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Attack" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Rilis" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Ambang Batas" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Jumlah Band" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Penguatan" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Pengurangan Kuatan" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Umum" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Gunakan Aturan Bawaan" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Pembatas Masukan" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Gunakan Aturan Bawaan" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Gain Input" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Penggemaan" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Atur Sampling" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Frekuensi" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Angkatan Maksimal" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Aturan Bawaan" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Gain Input" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Preset Output" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Daftar Keluaran Preset Otomatis" + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Pembatas Masukan" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Preset Input" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Preset Input" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +#, fuzzy +msgid "Clients" +msgstr "Sen" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Sen" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Uji Sinyal" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Status" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Hidupkan" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Total Kanal" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Total Kanal" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Tabel Sinus" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Derau Putih" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "High Shelf" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Kualitas" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Format Resampling" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Preset" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Kerenyahan" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Deteksi" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Kompresi" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Kliping Lunak" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Sen" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Seminada" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktav" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Hapus Berkas Preset Ini" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Efek Input" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Daftar Plugin" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Umum" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Layanan" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +#, fuzzy +msgid "Shutdown on Window Closing" +msgstr "Shutdown pada Penutupan Jendela" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Audio" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Proses Semua Output" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Proses Semua Input" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "Gunakan Volume Kubik" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Gaya" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Gunakan Tema Gelap" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "Sembunyikan Menu di Klik Luar" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Rupa" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Batang" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Garis" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Titik" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Titik" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Tinggi" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Lebar Garis" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Spektrum Batangan" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "Tampilkan batar bar" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "Sudut Bulat" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Warna" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Garis dan Bar" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Label Sumbu" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Rentang Frekuensi" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Minimum" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maksimal" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Muat" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Simpan Setelan Saat Ini Ke Berkas Preset" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Hapus Berkas Preset Ini" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Nama Preset Keluaran Baru" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Buat Preset" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Impor Preset" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Cari Preset Keluaran" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Daftar Preset Keluaran" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Nama Preset Input Baru" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Cari Preset Input" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Daftar Preset Input" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Pembasahan Frekuensi Tinggi" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Ukuran Ruangan" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Kecil" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Sedang" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Besar" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Terowongan" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Besar/Halus" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Eksperimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difusi" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pra Tunda" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Waktu Decay" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Besaran Wet" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Tingkat Wet" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Besaran Dry" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "Tingkat Dry" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Potong Bass" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Potong Treble" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Suasana" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Tembok Kosong" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Ruangan" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Aula Besar Kosong" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disko" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Aula Besar Terisi Penuh" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Impor Model" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Model" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Model Standar" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "Daftar Model RNNoise" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Model Aktif" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Model RNNoise Standar" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Ringkasan" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Buka Manual EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Layar penuh/Pulihkan dari layar penuh" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Tutup jendela" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "Keluar EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Keseimbangan" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Masukan Keseimbangan" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Kliping Lunak" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Tingkat Softclip" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matriks Stereo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "Kiri-Kanan > Kiri-Kanan (Stereo Standar)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "Kiri-Kanan > Tengah (Stereo ke Sisi Tengah)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "Tengah > Kiri-Kanan (Sisi Tengah ke Stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "Kiri-Kanan > Kiri-Kiri (Kanal Kiri Mono)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "Kiri-Kanan > Kanan-kanan (Kanal Kanan Mono)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "Kiri-Kanan > Kiri+Kanan (Kiri Mono + Kanan Mono)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "Kiri-Kanan > Kanan-Kiri (Pembalikan Setereo)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Mode Stereo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Balikkan Phase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Volume Kanal Sisi" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Keseimbangan Sisi" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Volume Kanal Tengah" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama Kanal Tengah" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Keluaran Balance" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Penundaan Kiri/Kanan" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Penundaan Kiri Kanan" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Basis Stereo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Phase Stereo" + +#: src/app_info.cpp:64 +#, fuzzy +msgid "Running" +msgstr "berjalan" + +#: src/app_info.cpp:66 +#, fuzzy +msgid "Suspended" +msgstr "Ditangguhkan" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "membuat" + +#: src/app_info.cpp:72 +#, fuzzy +msgid "Error" +msgstr "error" + +#: src/app_info.cpp:74 +#, fuzzy +msgid "Unknown" +msgstr "tidak dikenal" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Total Kanal" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Preset Keluaran: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Preset Input: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Efek Suara untuk Aplikasi PipeWire" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Tutup EasyEffects. Berguna Ketika Berjalan dalam Modus Layanan." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Muat Preset. Misalkan: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Atur Ulang EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Sembunyikan jendela." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Bypass global. 1 untuk mengaktifkan, 2 untuk menonaktifkan dan 3 untuk " +"mendapatkan status" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Tampilkan Preset Tersedia." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Muat Berkas Impuls" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Impor File Impuls" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Buka" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Batal" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Respons Impuls" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Muat Impuls" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Hapus Impuls" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Muat Berkas Impuls" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Tidak dapat Memuat Berkas Impuls" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Perekam" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Pemain" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "Tak Terbatas" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Impor File Preset APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Preset APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Hapus Preset Pemuatan Otomatis" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Gain Input" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Tambah" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Impor Preset" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Impor file Model" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "Model RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Penguat Bass" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Kenyaringan Bass" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Konvolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Pengkristal Suara" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Penghilang Desis" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Penundaan" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Penghilang Gema" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ekualiser" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Penguat Frekuensi Tinggi" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filter" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Pembatas" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Pemaksimal Gain" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Kompresor Multiband" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Multiband Gate" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Nada" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Penggemaan" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Pengurangan Noise" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Pengolah Stereo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#, fuzzy +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects merupakan aplikasi pengubah efek suara. Berisi modul-modul " +#~ "seperti ekualiser, pembatas, kompresor, dan modul penggema. Dilengkapi " +#~ "juga dengan Penganalisis Spektrum untuk memantau efek yang diterapkan." + +#, fuzzy +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "EasyEffects bekerja dengan aplikasi berbasis PulseAudio. Aplikasi yang " +#~ "mendukung EasyEffects akan ditampilkan pada jendela utama aplikasi." + +#, fuzzy +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Selain mengolah suara yang keluar, EasyEffects dapat mengolah efek suara " +#~ "seperti pada mikrofon dan pengakat masukan lainnya. EasyEffects juga " +#~ "bekerja dengan baik ketika dipakai dalam percakapan suara." + +#, fuzzy +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Ketika EasyEffects dijalankan, preset terakhir yang dipakai akan termuat " +#~ "otomatis. Anda juga dapat menyimpan pengaturan yang telah dibuat ke dalam " +#~ "profil tersendiri." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Band 1" + +#~ msgid "Average" +#~ msgstr "Rata-Rata" + +#~ msgid "Failed" +#~ msgstr "Gagal" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Gunakan Aturan Bawaan" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Hapus Berkas Preset Ini" + +#~ msgid "Import Presets" +#~ msgstr "Muat Preset" + +#~ msgid "Start Service at Login" +#~ msgstr "Mulai Layanan Saat Startup" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Setel Ulang Volume Perangkat Kami saat Memulai" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Model Aktif" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Daftar Blokir" + +#~ msgid "Blocklist" +#~ msgstr "Daftar Blokir" + +#~ msgid "Speakers" +#~ msgstr "Speaker" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Plugin" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Hidupkan" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Hidupkan" + +#~ msgid "Format" +#~ msgstr "Format Resampling" + +#~ msgid "Latency" +#~ msgstr "Besar Latensi" + +#~ msgid "idle" +#~ msgstr "siaga" + +#~ msgid "Faster" +#~ msgstr "Lebih Cepat" + +#~ msgid "Preserve Formant" +#~ msgstr "Jaga Bentuk" + +#~ msgid "Cmoy" +#~ msgstr "C. Moy" + +#~ msgid "Jmeier" +#~ msgstr "J. Meier" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Gain Input" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Total Kanal" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Monitor Lantai" + +#~ msgid "Output Effects" +#~ msgstr "Efek Luaran" + +#~ msgid "Settings" +#~ msgstr "Setelan" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Setelan" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Durasi" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Uji Sinyal" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Uji Sinyal" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spektrum" + +#~ msgid "Spectrum Color" +#~ msgstr "Warna Spektrum" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Modus Agresif" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Pengurangan Kuatan" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Tinggi" + +#~ msgid "Dry" +#~ msgstr "Dry" + +#~ msgid "S/C Level" +#~ msgstr "Level Sisi/Tengah" + +#~ msgid "Short Term" +#~ msgstr "Waktu Singkat" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Band Rendah" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Atur Volume dan hidupkan/matikan Efek" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Dilengkapi dengan Ekualiser dengan Preset Bawaan" + +#~ msgid "Input Limiter" +#~ msgstr "Pembatas Masukan" + +#~ msgid "Calibration" +#~ msgstr "Kalibrasi" + +#~ msgid "Limit" +#~ msgstr "Batas" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuasi" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Penerap Efek Suara untuk Aplikasi Berbasis Pulseaudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Terapkan Efek Suara via PulseAudio" + +#~ msgid "Help" +#~ msgstr "Bantuan" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrasikan Mikrofon" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Kotak" + +#~ msgid "Saw" +#~ msgstr "Gergaji" + +#~ msgid "Triangle" +#~ msgstr "Segitiga" + +#~ msgid "Silence" +#~ msgstr "Diam" + +#~ msgid "Pink Noise" +#~ msgstr "Derau Merah Muda" + +#~ msgid "Ticks" +#~ msgstr "Ketukan per Detik" + +#~ msgid "Gaussian Noise" +#~ msgstr "Derau Gaussia" + +#~ msgid "Red Noise" +#~ msgstr "Derau Merah" + +#~ msgid "Blue Noise" +#~ msgstr "Derau Biru" + +#~ msgid "Violet Noise" +#~ msgstr "Derau Ungu" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Jendela" + +#~ msgid "Measure Noise" +#~ msgstr "Ukur Derau" + +#~ msgid "Subtract Noise" +#~ msgstr "Kurangi Derau" + +#~ msgid "Extended Filter" +#~ msgstr "Filter Diperluas" + +#~ msgid "Low" +#~ msgstr "Rendah" + +#~ msgid "Moderate" +#~ msgstr "Sedang" + +#~ msgid "High" +#~ msgstr "Tinggi" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Tingkat Supresi" + +#~ msgid "Delay Agnostic" +#~ msgstr "Penundaan Agnosti" + +#~ msgid "Very High" +#~ msgstr "Sangat Tinggi" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor Derau" + +#~ msgid "Adaptive Digital" +#~ msgstr "Digital Adaptif" + +#~ msgid "Fixed Digital" +#~ msgstr "Digital Tetap" + +#~ msgid "Gain Controller" +#~ msgstr "Pengatur Angkatan" + +#~ msgid "Detection Likelihood" +#~ msgstr "Lacak Keberadaan Vokal" + +#~ msgid "Very Low" +#~ msgstr "Sangat Rendah" + +#~ msgid "Voice Detector" +#~ msgstr "Pelacak Vokal" + +#~ msgid "Use Custom Color" +#~ msgstr "Gunakan Warna Kustom" + +#~ msgid "Use Gradient" +#~ msgstr "Terapkan Gradien warna" + +#~ msgid "Gradient Color" +#~ msgstr "Warna Gradien" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Muat Berkas Respons Impuls" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Pilih Berkas Repons Impuls" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Modus Agresif" + +#~ msgid "Before" +#~ msgstr "Sebelum" + +#~ msgid "After" +#~ msgstr "Sesudah" + +#, fuzzy +#~ msgid "Loudness Range" +#~ msgstr "Rentang Kelantangan" + +#~ msgid "Apply" +#~ msgstr "Terapkan" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Aturan Bawaan" + +#, fuzzy +#~ msgid "Default Source" +#~ msgstr "Aturan Bawaan" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Durasi" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Frekuensi Terendah" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Preset" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Deteksi" + +#~ msgid "Muted" +#~ msgstr "Dibungkam" + +#~ msgid "Distant Headphones" +#~ msgstr "Headphone Berjarak" + +#~ msgid "Priority Type" +#~ msgstr "Atur Prioritas" + +#~ msgid "Niceness" +#~ msgstr "Proritas Sempurna" + +#~ msgid "Priority" +#~ msgstr "Atur Prioritas" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frekuensi" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frekuensi" + +#~ msgid "About" +#~ msgstr "Tentang EasyEffects" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Total Kanal" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Modus Penyampling" + +#~ msgid "Buffer" +#~ msgstr "Ukuran Penyangga" + +#~ msgid "Block Size" +#~ msgstr "Ukuran Blok" + +#~ msgid "Resampler" +#~ msgstr "Modus Penyampling" + +#~ msgid "paused" +#~ msgstr "terjeda" + +#~ msgid "playing" +#~ msgstr "memutar" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Muat Preset" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Pengurangan Kuatan" + +#~ msgid "Exponent" +#~ msgstr "Eksponen" diff --git a/po/it_IT.po b/po/it_IT.po new file mode 100644 index 0000000..2d84acd --- /dev/null +++ b/po/it_IT.po @@ -0,0 +1,3405 @@ +# Italian translation file for EasyEffects +# Copyright (C) 2018 +# This file is distributed under the same license as the EasyEffects package. +# Matteo Iervasi , 2018. +# Gianluca Boiano , 2018. +# Albano Battistella , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-18 22:44+0000\n" +"Last-Translator: Giusy Digital \n" +"Language-Team: Italian \n" +"Language: it_IT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14-dev\n" +"Translator: Albano Battistella \n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Equalizzatore, Compressore e Altri Effetti Audio" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Effetti Audio per Applicazioni Pipewire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limiter;compressore;riverbero;equalizzatore;autovolume;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Profili\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "Abilita/disabilita questa applicazione" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "Abilita" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "Lista App Escluse: Aggiungi/rimuovi questa applicazione" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "Escludi" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Silenzia Applicazione" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "Modifica il volume di questa applicazione" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Volume Applicazione" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Preferenze" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Manuale" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Scorciatoie" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Reset Preferenze" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Info su EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Profili" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Menu Profili" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "Abilita/disabilita il bypass globale" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Bypass Globale" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Menu Principale" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "Finestra di EasyEffects" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Lista Applicazioni" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "Elenco Vuoto" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "Nessuna Applicazione Audio Disponibile" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Livello" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "Cronologia Massima" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Riferimento" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentaneo" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Breve-Termine" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrato" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "Media Geometrica (MBI)" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "Media Geometrica (MB)" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "Media Geometrica (MI)" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "Media Geometrica (BI)" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Reset Cronologia" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativo" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Gamma" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Loudness" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Guadagno Uscita" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Ingresso" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Guadagno in Ingresso del Plugin" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Uscita" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Guadagno in Uscita del Plugin" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Reset" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Utilizzo" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Dispositivo Audio" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nome" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Profilo Dispositivo" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Profilo EasyEffects" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "Rimuovi questo profilo di auto-caricamento" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Ascolta" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mix Armoniche" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3a" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2a" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Quantità" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Armoniche" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Soglia" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Limite Inferiore" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Valore Limite Inferiore" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Link" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Nome Applicazione" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "Aggiungi alle Applicazioni Escluse" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "Lista delle Applicazioni Escluse" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "Mostra Applicazioni Escluse" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compressore" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modalità" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Riduttiva" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Espansiva" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Incrementale" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Modalità Compressione" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Soglia Incremento" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Quantità Incremento" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Attacco" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Tempo" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Soglia" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "Tempo di Attacco" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "Soglia di Attacco" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Rilascio" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "Tempo di Rilascio" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "Soglia di Rilascio" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Rapporto" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Curvatura" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Guadagno" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Sidechain" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Picco" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Passa-Basso" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Modalità Sidechain" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Sorgente" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Medio" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Lato" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Sinistro" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Destro" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Sorgente Sidechain" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipo" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Feed-forward" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Feed-back" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Esterna" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Tipo Sidechain" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Dispositivo Ingresso" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "PreAmplificazione" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reattività" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Lookahead" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Filtri Sidechain" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Passa-Alto" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frequenza" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Off" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/ott" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/ott" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/ott" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Modalità Filtro Passa-Alto" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Frequenza Filtro Passa-Alto" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Modalità Filtro Passa-Basso" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Guadagno" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "Envelope" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "S" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Canale Sinistro" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "D" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Canale Destro" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Impulsi" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Combina" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Ampiezza Stereo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spettro" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "Scala Logaritmica" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Auto Guadagno" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Frequenza" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Campioni" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Durata" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "Combina Risposte Impulso" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "Primo Kernel" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "Secondo Kernel" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Nome File Combinato" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "Nome File Combinato" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importa Impulso" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Cerca" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "Cerca File di Impulso" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "Lista File di Impulso" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Predefinito" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Taglio" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Feed" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Bypass" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Silenzia" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Rilevamento" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Banda Larga" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Split" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "F1 Split" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "Frequenza 1 Split" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2 Picco" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "Frequenza 2 Picco" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1 Guadagno" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "Frequenza 1 Guadagno" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2 Livello" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "Frequenza 2 Livello" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2 Picco Q" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "Frequenza 2 Picco Q" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Lassità" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Rilevato" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Riduzione" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Dimensione Frame" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Lunghezza Filtro" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "App Escluse" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bande" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Separa Canali" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Risposta Piatta" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calcola Frequenze" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "Carica Profilo APO" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Campana" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Passa Alto" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Sopra Soglia" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Passa Basso" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Sotto Soglia" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Notch" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Risonanza" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Passa Tutto" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Tipo Banda" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Modalità Banda" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pendenza" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Pendenza della Banda" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Ampiezza" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Qualità" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Isola" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "Limite Superiore" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "Valore Limite Superiore" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Accesso" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Descrizione" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Rimuovi questo profilo" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Passa Basso" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Passa Basso" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Passa Basso" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Passa Alto" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Passa Alto" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Passa Alto" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Passa Banda" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Passa Banda" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Passa Banda" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Elimina Banda" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Elimina Banda" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct Elimina Banda" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inerzia" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Gate" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "Zona" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "Isteresi" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "Inizio Zona Attacco" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "Inizio Zona Rilascio" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "Interna" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Gate" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Sovracampionamento" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "Dither" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "Herm Thin" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "Herm Wide" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "Herm Tail" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "Herm Duck" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "Exp Thin" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "Exp Wide" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "Exp Tail" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "Exp Duck" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Line Thin" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Line Wide" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "Line Tail" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "Line Duck" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Off" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "Parziale x2(2L)" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "Parziale x2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "Parziale x3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "Parziale x3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "Parziale x4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "Parziale x4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "Parziale x6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "Parziale x6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "Parziale x8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "Parziale x8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "Intero x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "Intero x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "Intero x3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "Intero x3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "Intero x4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "Intero x4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "Intero x6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "Intero x6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "Intero x8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "Intero x8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "SC PreAmp" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "PreAmplificazione Sidechain" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Incremento" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Relazione Canali" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Sidechain Esterna" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "Sorgente Sidechain Esterna" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "Auto Regolazione" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "Auto Regolazione Attacco" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "Auto Regolazione Rilascio" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "Auto Regolazione Curvatura" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "Guadagno Sinistro" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "Guadagno Destro" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Sidechain Sinistro" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Sidechain Destro" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standard" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Flat" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Dimensione FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "Dimensione della Trasformata di Fourier Veloce" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Volume Uscita" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Limite Superiore" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Modalità Operativa" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Classica" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Moderna" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Incremento Sidechain" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "Rumore Rosa BT" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "Rumore Rosa MT" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "Rumore Marrone BT" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "Rumore Marrone MT" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Lista Bande" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Banda 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Banda 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Banda 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Banda 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Banda 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Banda 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Banda 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Banda 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Inizio Banda" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Fine Banda" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Banda Modalità Compressione" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Bypass Banda" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Opzioni Sidechain Banda" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Filtro Passa-Basso" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Frequenza Filtro Passa-Basso" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Filtro Passa-Alto" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Frequenza Filtro Passa-Alto" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "PreAmp" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Guadagno Banda" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "Envelope Banda" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "Curva Banda" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "Modalità Split" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Split 1/2" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "Frequenza Split 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Split 2/3" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "Frequenza Split 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Split 3/4" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "Frequenza Split 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sottobanda" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "Banda 1 Bypass" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "Banda 1 Isola" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "Banda 1 Rilevamento" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "Banda 1 Attacco" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "Banda 1 Rilascio" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "Banda 1 Soglia" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "Banda 1 Rapporto" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "Banda 1 Curvatura" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "Banda 1 Guadagno" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Max Riduzione" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "Banda 1 Massima Riduzione" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Banda Bassa" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "Banda 2 Bypass" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "Banda 2 Isola" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "Banda 2 Rilevamento" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "Banda 2 Attacco" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "Banda 2 Rilascio" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "Banda 2 Soglia" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "Banda 2 Rapporto" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "Banda 2 Curvatura" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "Banda 2 Guadagno" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "Banda 2 Massima Riduzione" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Banda Media" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "Banda 3 Bypass" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "Banda 3 Isola" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "Banda 3 Rilevamento" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "Banda 3 Attacco" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "Banda 3 Rilascio" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "Banda 3 Soglia" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "Banda 3 Rapporto" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "Banda 3 Curvatura" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "Banda 3 Guadagno" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "Banda 3 Massima Riduzione" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Banda Alta" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "Banda 4 Bypass" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "Banda 4 Isola" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "Banda 4 Rilevamento" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "Banda 4 Attacco" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "Banda 4 Rilascio" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "Banda 4 Soglia" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "Banda 4 Rapporto" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "Banda 4 Curvatura" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "Banda 4 Guadagno" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "Banda 4 Massima Riduzione" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Generale" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "Gestione Dispositivi" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" +"Si raccomanda di NON impostare EasyEffects Sink/Source come Dispositivo " +"Predefinito in applicazioni esterne (per esempio Gnome Settings e Plasma " +"System Settings)." + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Usa Ingresso Predefinito" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "Dispositivo Ingresso Personalizzato" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Usa Uscita Predefinita" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "Dispositivo Uscita Personalizzato" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Informazioni Server" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Versione Header" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Versione Libreria" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Frequenza di Campionamento" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "Quantum Minimo" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "Quantum Massimo" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "Quantum Predefinito" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "Auto Caricamento Profili" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Dispositivi di Uscita" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Profili di Uscita" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Crea Associazione" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "Aggiungi Profilo di Auto Caricamento in Uscita" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Profili di Auto Caricamento in Uscita" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Dispositivi di Ingresso" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Profili di Ingresso" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "Aggiungi Profilo di Auto Caricamento in Ingresso" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "Profili di Auto Caricamento in Ingresso" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Moduli" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "Lista Moduli" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Client" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "Lista Client" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Segnale di Test" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Stato" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Abilitato" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Proprietà" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canali" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Entrambi" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Entrambi i Canali" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Tipo Onda" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Sinusoidale" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Rumore Bianco" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "Alta Velocità" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "Alta Qualità" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "Alta Consistenza" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "Formante" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "Alterata" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "Preservata" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "Transienti" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "Netti" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "Intermedi" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "Tenui" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "Rilevazione" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "Composto" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "Percussivo" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "Soft" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "Fase" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "Laminare" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "Indipendente" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Centesimi" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitoni" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Ottave" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "Rimuovi questo effetto" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "Abilita/disabilita questo effetto" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "Cambia la posizione di questo effetto" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "Aggiungi Effetto" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "Lista Moduli Utilizzati" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "Nessun Effetto" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "Flusso Audio Non Alterato" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "Cerca Modulo" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Lista dei Moduli" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Generale" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Servizio" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "Inizia come Servizio all'Avvio del Sistema" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "Termina alla Chiusura della Finestra" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Audio" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "Processa Tutto i Flussi in Uscita" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "Processa Tutti i Flussi in Ingresso" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "Ignora i Flussi dai Monitor dei Dispositivi" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "Usa Volume Cubico" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "Reimposta il Volume dei Dispositivi Virtuali di EasyEffects all'Avvio" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "Tempo Inattività" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Stile" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Usa Tema Scuro" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "Chiudi Menu con Click Esterno" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Spettro" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Forma" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barre" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Linee" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Punti" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Punti" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Altezza" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Spessore Linea" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Riempi" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "Mostra Bordo" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "Angoli Arrotondati" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Colore" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Linee e Barre" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Etichette sull'Asse" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Gamma Frequenze" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Minima" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Massima" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Carica" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Salva impostazioni attuali in questo profilo" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Rimuovi questo profilo" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Nome Nuovo Profilo di Uscita" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "Crea un nuovo profilo" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "Importa un profilo" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Cerca Profilo di Uscita" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Lista Profili di Uscita" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Nome Nuovo Profilo di Ingresso" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Cerca Profilo di Ingresso" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Lista Profili di Ingresso" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Smorza Alte Frequenze" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Dimensione Stanza" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Piccola" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Media" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/liscia" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Sperimentale" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Diffusione" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pre Ritardo" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Tempo Decay" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Quantità Dry" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Livello Wet" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Quantità Wet" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "Livello Dry" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Taglio Bassi" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Taglio Alti" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiente" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Mura Vuote" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Stanza" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Sala Grande Vuota" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Discoteca" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Sala Grande Occupata" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importa Modello" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modelli" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Modello Standard" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "Lista Modelli RNNoise" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "Modello Non Caricato" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Modello Attivo" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Modello RNNoise Standard" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Sommario" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Apri il Manuale di EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Attiva/Disattiva Schermo Intero" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Chiudi la Finestra" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "Termina EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Bilanciamento" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Bilanciamento Ingresso" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Livello Softclip" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matrice Stereo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "SD > SD (Predefinito Stereo)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "SD > MS (Stereo a Medio-Lato)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > SD (Medio-Lato a Stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "SD > SS (Canale Sinistro Mono)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "SD > DD (Canale Destro Mono)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "SD > S+D (Mono Somma S+D)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "SD > DS (Inverti Canali Stereo)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Modalità Stereo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inverti Fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Livello Lato" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Bilanciamento Lato" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Livello Medio" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama Medio" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Bilanciamento in Uscita" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Delay S/D" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Ritardo Sinistro Destro" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base Stereo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fase Stereo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "In esecuzione" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "Sospeso" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Inattivo" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "In creazione" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Errore" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Sconosciuto" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "Canali" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Profili Uscita: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Profili Ingresso: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Effetti Audio per Applicazioni PipeWire" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Esci da EasyEffects. Utile in esecuzione come servizio." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Carica un profilo. Esempio: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Reset EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Nascondi la Finestra." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Bypass globale. 1 per abilitare, 2 per disabilitare e 3 per ottenere lo stato" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Mostra profili disponibili." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "Il File È Irregolare" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "Il File di Risposta Impulsiva Può Essere Corrotto o Non Supportato" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "Sono Supportati Soltanto File di Risposta Impulsiva in Formato Stereo" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "File di Risposta Impulsiva Non Importato" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importa File di Impulso" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Apri" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Annulla" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Risposta Impulso" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Carica Impulso" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Rimuovi Impulso" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "Nessun File di Risposta Impulsiva Caricato" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "Impossibile Caricare il File di Risposta Impulsiva" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Registratori" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Riproduttori" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "Effetti" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinito" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Importa File Profilo APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Profili APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" +"Profilo APO Non Caricato. Il Formato Può Essere Errato. Si Prega di " +"Controllare il Contenuto." + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Rimuovi Profilo di Auto Caricamento" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Rimuovi" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Dispositivo Uscita" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Aggiungi" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Importa Profilo" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" +"Il Modello Selezionato Non È Stato Caricato. Il Formato Potrebbe Essere Non " +"Supportato. Il Modello Standard È Stato Ripristinato." + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importa File Modello" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "Modelli RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Enfasi Bassi" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Loudness Bassi" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Crystalizer" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Delay" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Rimozione Eco" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Equalizzatore" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Exciter" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtro" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limiter" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizer" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compressore Multibanda" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Gate Multibanda" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Intonazione" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Riverbero" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Riduzione Rumore" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Strumenti Stereo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "Chiudi (Premi ESC)" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects è un'applicazione specifica per la manipolazione dei flussi " +#~ "audio. Tra i diversi moduli contenuti, include un equalizzatore, un " +#~ "limiter, un compressore e uno strumento per il riverbero. In aggiunta è " +#~ "anche disponibile un analizzatore dello spettro delle frequenze." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects è il successore di PulseEffects. EasyEffects supporta " +#~ "esclusivamente il server audio PipeWire. Gli utenti su PulseAudio possono " +#~ "continuare a usare PulseEffects in alternativa." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Eseguito in simultanea al server PipeWire, EasyEffects funzionerà con la " +#~ "quasi totalità, se non tutte, le applicazioni disponibili sul sistema. Le " +#~ "applicazioni supportate sono mostrate nella finestra principale e ognuna " +#~ "può essere abilitata individualmente." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Oltre alla manipolazione dei flussi in uscita, EasyEffects è in grado di " +#~ "applicare effetti anche a dispositivi in ingresso, per esempio un " +#~ "microfono. Una funzionalità utile sia durante le registrazioni che nelle " +#~ "conversazioni di gruppo." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "EasyEffects all'avvio presenta la configurazione utilizzata nella " +#~ "sessione precedente. Tuttavia è possibile salvare i parametri attuali in " +#~ "uno specifico profilo." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "" +#~ "La scheda principale che mostra il flusso in uscita di due applicazioni" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "Il modulo di Enfasi Bassi con i propri parametri" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "Il modulo Convolver con i propri parametri" + +#~ msgid "This release adds the following features:" +#~ msgstr "Questa release aggiunge le seguenti funzionalità:" + +#~ msgid "" +#~ "When effects are disable to an application we now set its target metadata " +#~ "to null. This will allow the media session" +#~ msgstr "" +#~ "Quando gli effetti sono disabilitati per un applicazione, adesso " +#~ "impostiamo il suo target metadata a null. Questo permetterà al media " +#~ "session" + +#~ msgid "manager" +#~ msgstr "manager" + +#~ msgid "" +#~ "A new configuration option was added. It allows EasyEffects to ignore " +#~ "streams whose purpose is to monitor sink" +#~ msgstr "" +#~ "Aggiunta una nuova configurazione. EasyEffects adesso può essere " +#~ "impostato per ignorare i flussi dei monitor" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr "" +#~ "sink. Questo potrà risolvere alcune anomalie che gli utenti avevano con " +#~ "OBS." + +#~ msgid "The code that shows the stream sample format has been improved" +#~ msgstr "Il codice che mostra il formato di campionamento è stato migliorato" + +#~ msgid "" +#~ "The rnnoise library is now optional. This should help package maintainers " +#~ "to build" +#~ msgstr "" +#~ "La libreria rnnoise è adesso opzionale. Questo può aiutare i gestori dei " +#~ "pacchetti" + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "su Debian. Consultare il ticket #1000 per maggiori informazioni." + +#~ msgid "" +#~ "Our logs now show the source code line where the messages are being " +#~ "printed" +#~ msgstr "" +#~ "I nostri log ora mostrano il numero di linea del codice sorgente dove il " +#~ "messaggio viene stampato" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Questa release risolve i seguenti bug:" + +#~ msgid "" +#~ "The \"enable effects\" checkbox in our window was not being updated when " +#~ "third party programs like pavucontrol" +#~ msgstr "" +#~ "Il checkbox di abilitazione degli effetti nella finestra non era " +#~ "aggiornato quando programmi esterni come pavucontrol" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "rimuovevano gli stream dai nostri dispositivi virtuali. Questo problema " +#~ "dovrebbe essere risolto." + +#~ msgid "" +#~ "Fixed a crash that could happen when the maximum autogain history was " +#~ "changed." +#~ msgstr "" +#~ "Corretto un bug che poteva capitare quando la cronologia dell'Auto " +#~ "Guadagno veniva modificata." + +#~ msgid "Avoid crashes when pw-mididump is running" +#~ msgstr "Evitato il crash quando pw-mididump è in esecuzione" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "L'interfaccia del plugin pitch è stata migliorata" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "" +#~ "La nostra icona dell'applicazione è ora compatibile con i desktop che " +#~ "utilizzano QT" + +#~ msgid "" +#~ "Our blocklist code will use the `application.id` tag if the stream sets it" +#~ msgstr "" +#~ "Il nostro codice blocklist utilizzerà il tag `application.id` se lo " +#~ "stream lo imposta" + +#~ msgid "" +#~ "In order to avoid problems with the mouse scroll the entries in the " +#~ "applications list shown in our `Players/Recorders`" +#~ msgstr "" +#~ "Per evitare problemi con lo scroll del mouse, le voci della lista delle " +#~ "applicazioni nelle schede `Riproduttori/Registratori`" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "la scheda non mostra più una scala del volume. Maggiori dettagli sul " +#~ "problema e la soluzione per esso possono essere trovati su #1211" + +#~ msgid "and #1427" +#~ msgstr "e #1427" + +#~ msgid "" +#~ "When no application is available for display in the `Players/Recorders` a " +#~ "message will be shown to the user" +#~ msgstr "" +#~ "Quando non sono presenti applicazioni nelle schede `Riproduttori/" +#~ "Registratori`, sarà visualizzato un messaggio" + +#~ msgid "Many translation updates" +#~ msgstr "Molti aggiornamenti di traduzione" + +#~ msgid "" +#~ "Fixed a bug where EasyEffects crashed when the number of points displayed " +#~ "in the spectrum was changed while" +#~ msgstr "" +#~ "Corretto un bug per il quale EasyEffects andava in crash quando il numero " +#~ "di punti mostrati nello spettro era cambiato mentre" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "" +#~ "la nostra pipeline era attiva e il widget dello spettro era visibile" + +#~ msgid "" +#~ "The pipeline latency value displayed in our window could be wrong in some " +#~ "situations. This was fixed." +#~ msgstr "" +#~ "Il valore di latenza della pipeline visualizzato nella nostra finestra " +#~ "poteva essere errato in alcune situazioni. Questo è stato risolto." + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Aggiunta una nuova opzione che permette di selezionare un periodo di " +#~ "inattività per la pipeline. Quando nessun client" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "o registrando dai nostri dispositivi i filtri verranno scollegati al " +#~ "raggiungimento del timeout. Questo è fatto per essere sicuro" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "non sprechiamo il silenzio di elaborazione della potenza della CPU." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "Il plugin di Auto Guadagno adesso permette di selezionare quale dei tre " +#~ "tipi di Loudness usare per calcolare" + +#~ msgid "mean." +#~ msgstr "la media geometrica." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "Il plugin di Auto Guadagno adesso permette l'impostazione della massima " +#~ "cronologia e non utilizza più l'istogramma `libebur128`." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Ciò eviterà i casi in cui la Loudness `Integrata` rimanga fissa " +#~ "costantemente sullo stesso valore." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "L'icona di EasyEffects è stata aggiornata in modo da essere visibile " +#~ "anche nei desktop QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Questa release corregge i seguenti bug:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "L'opzione della riga di comando che restituisce lo stato di bypass " +#~ "globale funziona di nuovo." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Questa release aggiunge le seguenti funzionalità:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Migliorata la gestione della latenza dinamica di PipeWire da parte del " +#~ "modulo di Crossfeed. Non si dovrebbero più verificare anomali cambi di " +#~ "volume." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Risolto un bug che non permetteva la corretta gestione dei microfoni mono " +#~ "da parte di EasyEffects" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Supporto per la prossima versione di PipeWire `0.3.44`" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Migliorata la gestione della latenza dinamica di PipeWire da parte del " +#~ "modulo di Auto Guadagno. Non si dovrebbero più verificare anomali cambi " +#~ "di volume." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Aggiunta un'opzione per reimpostare il volume del nostro dispositivo " +#~ "virtuale all'avvio di EasyEffects. Ciò dovrebbe essere d'aiuto nei casi " +#~ "in cui il nostro dispositivo venga mutato dal server per ragioni ignote." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Migliore supporto per la sospensione del computer." + +#~ msgid "Updated translations" +#~ msgstr "Traduzioni aggiornate" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Risolto un bug per cui il tentativo di creare un profilo di caricamento " +#~ "automatico senza preimpostazioni causava l'arresto anomalo " +#~ "dell'applicazione." + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "Risolto un bug in cui impostando a `zero` la `qualità` di una banda " +#~ "dell'Equalizzatore, l'intera applicazione andava in crash." + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita è usata per creare alcune parti della nostra interfaccia e la " +#~ "modifica dei temi chiaro/scuro." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "" +#~ "Il menu delle impostazioni è stato ridisegnato con gli oggetti di " +#~ "LibAdwaita." + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "L'importazione dei profili Equalizer APO è stata migliorata per applicare " +#~ "non solo i filtri a Campana, ma anche gli altri supportati" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "L'opzione `Reset Preferenze` nel menu adesso funziona anche in Flatpak." + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "Abbiamo una nuova opzione che permette di disabilitare il `autohide` dei " +#~ "nostri menu. Questo permette di aggirare alcuni bug dei menu Popover " +#~ "attualmente presenti in gtk4." + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "Migliorata l'analisi dell'importazione APO con profili che hanno la " +#~ "virgola come separatore delle migliaia." + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "La libreria fmt è una nuova dipendenza, almeno fin quando i compilatori c+" +#~ "+ non la implementeranno in predefinito. Ciò è previsto nei prossimi anni." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM e GLIBMM non sono più una dipendenza. Adesso usiamo gtk4 " +#~ "direttamente." + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "Adesso è possibile combinare più Impulsi nell'interfaccia del Convolver. " +#~ "Un nuovo file di Impulso viene generato e il suo nome è aggiunto nella " +#~ "lista." + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "Migliorato il disegno della `asse x` nei nostri grafici. Adesso il numero " +#~ "delle etichette si adatta in base alla larghezza della finestra." + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "La documentazione è stata aggiornata con le nuove funzionalità di " +#~ "EasyEffects. I vecchi riferimenti a PulseEffects sono stati rimossi. Il " +#~ "bottone per consultare la documentazione è stato aggiunto nel menu." + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "Inserendo un valore fuori scala nello spinbutton, adesso il parametro " +#~ "viene aggiornato al valore minimo/massimo, invece che resettarlo a quello " +#~ "precedente." + +#~ msgid "" +#~ "The application window now remembers the maximized state and restores it " +#~ "on the next opening event." +#~ msgstr "" +#~ "La finestra principale adesso ricorda lo stato di massimizzazione e lo " +#~ "ripristina alla nuova apertura." + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "La libreria `tbb` è una nuova dipendenza" + +#~ msgid "" +#~ "The Limiter and the Multiband Compressor plugins can now use an optional " +#~ "external sidechain." +#~ msgstr "" +#~ "Il Limiter e il Compressore Multibanda adesso possono usare una sidechain " +#~ "esterna." + +#~ msgid "" +#~ "The Autogain plugin now allows the user to select which Loudness is used " +#~ "as reference for the volume correction." +#~ msgstr "" +#~ "Il modulo di Auto Guadagno adesso permette all'utente di selezionare " +#~ "quale tipologia di Loudness usare come riferimento per la correzione del " +#~ "volume." + +#~ msgid "" +#~ "The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +#~ "Amplification\" parameter." +#~ msgstr "" +#~ "La funzionalità di importazione dei profili APO nell'Equalizzatore adesso " +#~ "analizza anche il parametro di \"Pre Amplificazione\"." + +#~ msgid "Optional Cubic Volume can be enabled in General Settings." +#~ msgstr "Il Volume Cubico può essere abilitato dalle impostazioni generali." + +#~ msgid "" +#~ "PipeWire monitor streams are now excluded and removed from the " +#~ "applications list." +#~ msgstr "" +#~ "I flussi monitor di PipeWire adesso dovrebbero essere esclusi e rimossi " +#~ "dalla lista delle applicazioni." + +#~ msgid "Hopefully crashes like the one reported at [1172]( are fixed." +#~ msgstr "Crash come quelli riportati in [1172]( sono stati corretti." + +#~ msgid "Prevented a case in which Spectrum was crashing." +#~ msgstr "Risolto un caso in cui lo Spettro andava in crash." + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "Pavucontrol non è più aggiunto alla lista delle applicazioni in ingresso " +#~ "su sistemi con localizzazione diversa da quella inglese." + +#~ msgid "" +#~ "Improved compatibility with WirePlumber. This is needed to run on systems " +#~ "that decided to use it instead of the" +#~ msgstr "" +#~ "Migliorata la compatibilità con WirePlumber. Questo è necessario per i " +#~ "sistemi che hanno deciso di utilizzarlo" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "al posto del session manager integrato in PipeWire. Maggiori informazioni " +#~ "in [1144](" + +#~ msgid "" +#~ "When trying to add an autoloading profile for a device already in the " +#~ "list its target preset will be updated. This way we can change the " +#~ "profile preset without having to remove and recreating it." +#~ msgstr "" +#~ "All'aggiunta di un profilo di autocaricamento per uno specifico " +#~ "dispositivo già presente in lista, ora il profilo viene aggiornato. In " +#~ "questo modo non c'è bisogno di rimuovere lo stesso dispositivo e " +#~ "riaggiungerlo per vederlo." + +#~ msgid "" +#~ "The preset autoloading support implementation was redesigned again. It " +#~ "should work on more hardware now. For more information see issue [1051](" +#~ msgstr "" +#~ "La funzionalità dell'autocaricamento dei profili è stata nuovamente " +#~ "riprogettata. Adesso dovrebbe funzionare su più tipologie di dispositivi. " +#~ "Per maggiori informazioni, consulta [1051](" + +#~ msgid "" +#~ "If the Limiter or the Maximizer are set in the last position of the " +#~ "plugin stack, new plugins are added at the second to last position in " +#~ "order to prevent hardware damage on eventually high output level." +#~ msgstr "" +#~ "Se il Limiter e il Maximizer sono posizionati alla fine della lista, i " +#~ "nuovi moduli sono aggiunti nella penultima posizione in modo da evitare " +#~ "eventuali danneggiamenti agli altoparlanti in caso di volume troppo alto." + +#~ msgid "" +#~ "Removing an application from the blocklist, its previous enabled state is " +#~ "restored." +#~ msgstr "" +#~ "Alla rimozione di un flusso dalle App Escluse, il precedente stato " +#~ "dovrebbe essere ripristinato." + +#~ msgid "" +#~ "Sometimes when removing imported models from the noise reduction plugin " +#~ "the current used model was not properly updated. This should be fixed now." +#~ msgstr "" +#~ "Talvolta alla rimozione dei modelli nel modulo di riduzione del rumore, " +#~ "il modello utilizzato non veniva aggiornato. Questo problema è stato " +#~ "risolto." + +#~ msgid "" +#~ "When editing presets files in an external editor, duplicated entries " +#~ "won't be shown in our presets menu." +#~ msgstr "" +#~ "Alla modifica dei profili in un editor esterno, adesso non saranno più " +#~ "mostrate voci multiple nella lista dei profili." + +#~ msgid "Now the blocklist is correctly set when switching presets." +#~ msgstr "" +#~ "Adesso i flussi nelle App Escluse vengono correttamente disabilitati allo " +#~ "switch dei profili." + +#~ msgid "" +#~ "Now the status of the global bypass button is correctly updated when " +#~ "changing plugin stack." +#~ msgstr "" +#~ "Adesso lo stato del Bypass globale dovrebbe essere correttamente " +#~ "aggiornato quando i moduli cambiano." + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Le icone non presenti sul sistema adesso non dovrebbero essere " +#~ "visualizzate nell'interfaccia delle applicazioni" + +#~ msgid "" +#~ "Some icons not showing in Plasma DE with Breeze icon theme should appear " +#~ "now." +#~ msgstr "" +#~ "Alcune icone non visualizzate in Plasma con il tema Breeze adesso " +#~ "dovrebbero essere visibili." + +#~ msgid "Updated Chinese translation." +#~ msgstr "Traduzione Cinese aggiornata." + +#~ msgid "Updated Italian translation." +#~ msgstr "Traduzione Italiana aggiornata." + +#~ msgid "Added support for the compressor parameter `Boost Amount`" +#~ msgstr "" +#~ "Aggiunto il supporto al parametro `Quantità Incremento` del Compressore" + +#~ msgid "" +#~ "The multiband compressor plugin now uses the stereo multiband compressor " +#~ "plugin from Linux Studio Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Il Compressore Multibanda adesso implemento lo stereo multiband " +#~ "compressor sviluppato da Linux Studio Plugins invece di quello di Calf " +#~ "Studio." + +#~ msgid "" +#~ "The limiter plugin now uses the stereo limiter plugin from Linux Studio " +#~ "Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Il Limiter adesso implementa lo stereo limiter sviluppato da Linux Studio " +#~ "Plugins invece di quello di Calf Studio." + +#~ msgid "" +#~ "LV2 filters now are spawned in PipeWire graph only when loaded the first " +#~ "time. Once loaded, they remain connected until EasyEffects shutdown." +#~ msgstr "" +#~ "I filtri LV2 adesso sono generati nel diagramma PipeWire soltanto quando " +#~ "sono caricati per la prima volta. Tuttavia, una volta caricati, rimangono " +#~ "connessi fin quando EasyEffects non viene terminato." + +#~ msgid "The echo canceller sampling rate is now properly set." +#~ msgstr "" +#~ "Il modulo di Riduzione Eco adesso imposta correttamente il campionamento." + +#~ msgid "" +#~ "The threshold parameter from the deesser plugin is now saved to the " +#~ "preset file." +#~ msgstr "" +#~ "Il parametro soglia del Deesser adesso è salvato correttamente nel " +#~ "profilo." + +#~ msgid "" +#~ "Improved band splitting for crystalizer with new default intensity values." +#~ msgstr "" +#~ "Migliorata la suddivisione delle bande nel Crystalizer con nuovi valori " +#~ "di default delle Intensità." + +#~ msgid "" +#~ "Depending on the input gain or output gain values the corresponding level " +#~ "bars could not be aligned." +#~ msgstr "" +#~ "In base al guadagno di input/output, le corrispondenti barre non erano " +#~ "allineate correttamente." + +#~ msgid "" +#~ "When adding more equalizer bands they are set to `Bell` instead of `Off`." +#~ msgstr "" +#~ "All'aggiunta di nuove bande nell'Equalizzatore, la modalità è impostata " +#~ "su `Campana` invece che `Off`." + +#~ msgid "" +#~ "Equalizer APO presets loading is now working properly on locales " +#~ "different than C." +#~ msgstr "" +#~ "L'importazione degli Equalizer APO adesso funziona correttamente su " +#~ "localizzazioni differenti da C." + +#~ msgid "Improved linking management between port filter nodes in PipeWire." +#~ msgstr "" +#~ "Migliorata la gestione delle connessioni tra le porte dei nodi in " +#~ "PipeWire." + +#~ msgid "" +#~ "The crystalizer plugin signal amplification was too high before. It " +#~ "should be within more reasonable levels now." +#~ msgstr "" +#~ "L'amplificazione del Crystalizer era troppo alta. Adesso dovrebbe essere " +#~ "impostata a livelli ragionevoli." + +#~ msgid "" +#~ "Improved the resampler used in the plugins that require one(like the " +#~ "rnnoise plugin)" +#~ msgstr "" +#~ "Migliorato il resampler usato nei moduli che lo richiedono (come RNNoise)" + +#~ msgid "Setting multiple autoloading presets should be fine now" +#~ msgstr "" +#~ "L'impostazione di profili di autocaricamento multipli adesso dovrebbe " +#~ "funzionare" + +#~ msgid "Transient windows are now properly set for some plugins dialogs" +#~ msgstr "" +#~ "La translazione dell'interfaccia per alcuni moduli è stata correttamente " +#~ "impostata" + +#~ msgid "" +#~ "The convolver impulse response menu was improved to workaround an issue " +#~ "where the impulse files was not loaded when only one was available in the " +#~ "menu" +#~ msgstr "" +#~ "Il menu dei file di Impulso del Convolver è stato migliorato aggirando un " +#~ "problema per cui i file non erano caricati quando solo uno era " +#~ "disponibile nel menu" + +#~ msgid "" +#~ "Fixed a bug that could make the pitch plugin to not be properly " +#~ "initialized" +#~ msgstr "" +#~ "Corretto un bug che non inizializzava correttamente il modulo di " +#~ "Intonazione" + +#~ msgid "" +#~ "The saturation warning should not displace its neighbor widgets anymore" +#~ msgstr "" +#~ "L'icona di allarma saturazione adesso non sposta più gli oggetti adiacenti" + +#~ msgid "Fixed the locale in a few widgets" +#~ msgstr "Aggiustati i locale in alcuni oggetti" + +#~ msgid "Fixed wrong alignment in a few widgets" +#~ msgstr "Corretti gli allineamenti in alcuni oggetti" + +#~ msgid "" +#~ "The Loudness plugin is being used again for the reasons described at This " +#~ "means that is an optional dependency again." +#~ msgstr "" +#~ "Il modulo di Loudness è stato reimplementato. Questo significa che è di " +#~ "nuovo una dipendenza opzionale." + +#~ msgid "" +#~ "Fixed a segmentation fault that happened when optional dependencies were " +#~ "not installed" +#~ msgstr "" +#~ "Risolto un errore di segmentazione che accadeva quando delle dipendenze " +#~ "opzionali non erano installate" + +#~ msgid "Improved equalizer interface." +#~ msgstr "Migliorata l'interfaccia dell'equalizzatore." + +#~ msgid "" +#~ "Now we use a sidechain LSP compressor that allows the user to select and " +#~ "external source as the sidechain input." +#~ msgstr "" +#~ "Adesso usiamo un Compressore Sidechain LSP che permette di selezionare " +#~ "una sorgente esterna come sidechain di ingresso." + +#~ msgid "We now support the LSP compressor `Boosting` mode." +#~ msgstr "Adesso supportiamo la modalità `Incremento` del Compressore LSP." + +#~ msgid "" +#~ "When `split-channels` is enabled in the equalizer the imported APO preset " +#~ "will be applied only to the channel being visualized in the window. This " +#~ "will allow to import different presets for each channel instead of just " +#~ "settings the same values to both." +#~ msgstr "" +#~ "Quando `separa canali` è abilitato nell'Equalizzatore, i profili APO " +#~ "importati saranno applicati soltanto al canale visualizzato. Questo " +#~ "permette di importare profili differenti per i diversi canali invece che " +#~ "gli stessi per entrambi." + +#~ msgid "" +#~ "Fixed some segmentation faults that could happen when creating a preset " +#~ "autoloading profile or removing presets" +#~ msgstr "" +#~ "Risolti alcuni errori di segmentazione quando si creavano o rimuovevano i " +#~ "profili di autocaricamento" + +#~ msgid "" +#~ "This is one of the biggest releases that I have ever made. The amount of " +#~ "changes is so big that it is hard to talk about everything here." +#~ msgstr "" +#~ "Questa è una delle più grandi release che io abbia mai fatto. Il numero " +#~ "dei cambiamenti è cosi elevato che è difficile descriverle tutte qui." + +#~ msgid "" +#~ "The following are just the most import ones. People interested on the " +#~ "journey that got us here can take" +#~ msgstr "" +#~ "Le seguenti sono soltanto le più importanti. Quelli maggiormente " +#~ "interessati" + +#~ msgid "a look at and" +#~ msgstr "possono dare un'occhiata e" + +#~ msgid "" +#~ "The application and its repository have been renamed from PulseEffects to " +#~ "`EasyEffects`" +#~ msgstr "L'applicazione è stata rinominata da PulseEffects a `EasyEffects`" + +#~ msgid "gtkmm3 was replaced by gtkmm4" +#~ msgstr "gtkmm3 è stato rimpiazzato da gtkmm4" + +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "Gstreamer è stato rimpiazzato dai filtri nativi PipeWire." + +#~ msgid "" +#~ "Many features were reimplemented from scratch. The preset autoloading is " +#~ "one example. Another remarkable change will be seen in the plugins " +#~ "selection menu. Now the user can show in the window only the plugins that " +#~ "he/she wants to use." +#~ msgstr "" +#~ "Molte funzionalità sono state riscritte da zero. L'autocaricamento dei " +#~ "preset ne è un esempio. Un'altra modifica importante è presente nel menu " +#~ "di selezione dei moduli. Adesso sono mostrati nella finestra soltanto i " +#~ "plugin aggiunti alla lista." + +#~ msgid "" +#~ "Boost is no longer a dependency. The price paid for that was a little " +#~ "change in our presets structures. With some patience it is possible to " +#~ "edit PulseEffects presets in a text editor and make them work in " +#~ "EasyEffects. Hopefully someone will come up with a script for this in the " +#~ "feature." +#~ msgstr "" +#~ "Boost non è più una dipendenza. Il prezzo da pagare per questa scelta è " +#~ "il cambiamento della struttura dei profili. Con un po' di pazienza è " +#~ "possibile modificare i profili di PulseEffects in un editor di testo per " +#~ "renderli compatibili con EasyEffects. Magari qualcuno realizzerà uno " +#~ "script per questa operazione." + +#~ msgid "" +#~ "New libraries are being used and some of the librarires that were " +#~ "optional before are now required" +#~ msgstr "" +#~ "Nuove librerie sono state aggiunte e altre che erano opzionali adesso " +#~ "sono necessarie" + +#~ msgid "Average" +#~ msgstr "Media" + +#~ msgid "Failed" +#~ msgstr "Errore" + +#~ msgid "Use Default" +#~ msgstr "Usa Predefinito" + +#~ msgid "Remove this plugin" +#~ msgstr "Rimuovi questo profilo" + +#~ msgid "Import Presets" +#~ msgstr "Importa Profili" + +#~ msgid "Start Service at Login" +#~ msgstr "Esegui Servizio all'Avvio" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Reimposta il Volume di EasyEffects all'Avvio" + +#~ msgid "Shutdown on Window Close" +#~ msgstr "Termina alla Chiusura della Finestra" + +#~ msgid "Process All Outputs" +#~ msgstr "Processa Tutto in Uscita" + +#~ msgid "Process All Inputs" +#~ msgstr "Processa Tutto in Ingresso" + +#~ msgid "Exclude Device Monitor Streams" +#~ msgstr "Escludi i flussi di monitoraggio del dispositivo" + +#~ msgid "Activate" +#~ msgstr "Abilita" + +#~ msgid "Add to Blocklist" +#~ msgstr "Aggiungi ad App Escluse" + +#~ msgid "Blocklist" +#~ msgstr "App Escluse" + +#~ msgid "Add Plugin" +#~ msgstr "Aggiungi Modulo" + +#~ msgid "Speakers" +#~ msgstr "Altoparlanti" + +#~ msgid "Microphone" +#~ msgstr "Microfono" + +#~ msgid "Plugins" +#~ msgstr "Moduli" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Attivato" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Attivato" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latenza" + +#~ msgid "idle" +#~ msgstr "inattivo" + +#~ msgid "Faster" +#~ msgstr "Più Veloce" + +#~ msgid "Preserve Formant" +#~ msgstr "Preserva Formante" + +#~ msgid "Crispness" +#~ msgstr "Chiarezza" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not" +#~ msgstr "" +#~ "Il filtro di guadagno automatico dovrebbe gestire meglio gli interruttori " +#~ "di latenza dinamica di PipeWire. I salti nel livello del volume non " +#~ "dovrebbe" + +#~ msgid "happen anymore in these situations." +#~ msgstr "succedere più in queste situazioni." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts." +#~ msgstr "" +#~ "Abbiamo aggiunto un'opzione che consente di ripristinare il volume e lo " +#~ "stato muto dei nostri dispositivi virtuali all'avvio di EasyEffects." + +#~ msgid "" +#~ "It should help with the cases were our devices are muted by the audio " +#~ "server for unknown reasons." +#~ msgstr "" +#~ "Dovrebbe aiutare con i casi in cui i nostri dispositivi sono silenziati " +#~ "dal server audio per ragioni sconosciute." + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..b85a977 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,3318 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-18 22:44+0000\n" +"Last-Translator: R.Suga <21r.suga@gmail.com>\n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "イコライザー、コンプレッサーなどのオーディオエフェクト" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "PipeWire アプリケーション用オーディオエフェクト" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "リミッター;コンプレッサー;リバーブ;イコライザー;オートボリューム;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "「プリセット」" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "このアプリケーションの有効化/無効化" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "有効" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "除外されたアプリリスト: このアプリケーションを追加/削除" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "除外" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "アプリケーションをミュート" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "このアプリケーションの音量を変更" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "アプリケーションの音量" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_環境設定" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_マニュアル" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_ショートカット" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_設定をリセット" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_EasyEffects について" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "プリセット" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "プリセットメニュー" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "グローバルバイパスの有効化/無効化" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "グローバルバイパス" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "メインメニュー" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects ウィンドウ" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "アプリケーションリスト" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "空のリスト" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "オーディオアプリケーションがありません" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "ターゲット" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "最大履歴" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "リファレンス" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "瞬間的" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "短期" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "統合" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "幾何平均 (MSI)" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "幾何平均 (MS)" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "幾何平均 (MI)" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "幾何平均 (SI)" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "履歴をリセット" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "相対的" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "範囲" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "ラウドネス" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "出力ゲイン" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "入力" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "プラグイン入力ゲイン" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "出力" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "プラグイン出力ゲイン" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "リセット" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "使用中" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "デバイス" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "名前" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "プロファイル" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "プリセット" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "この自動読み込みプリセットを削除" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "聞く" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "ブレンドハーモニクス" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3rd" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2nd" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "量" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "ハーモニクス" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "範囲" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "フロア" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "フロア値" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "リンク" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "アプリケーション名" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "除外アプリケーションに追加" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "除外されたアプリケーションリスト" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "除外されたアプリケーションを表示" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "コンプレッサー" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "モード" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "下方向" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "上方向" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "ブースト" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "圧縮モード" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "ブーストしきい値" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "ブースト量" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "アタック" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "時間" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "しきい値" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "アタックタイム" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "アタックしきい値" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "リリース" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "リリース時間" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "リリースしきい値" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "比率" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "ニー" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "メイクアップ" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "サイドチェーン" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "ピーク" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "ローパス" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "ユニフォーム" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "サイドチェーンモード" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "ソース" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "中央" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "サイド" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "左" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "右" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "サイドチェーンソース" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "タイプ" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "フィードフォワード" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "フィードバック" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "外部" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "サイドチェーンタイプ" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "入力デバイス" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "プリアンプリーション" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "反応性" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "ルックアヘッド" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "サイドチェーンフィルター" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "ハイパス" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "周波数" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "オフ" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "ハイパスフィルターモード" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "ハイパスフィルター周波数" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "ローパスフィルターモード" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "ゲイン" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "包装" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "カーブ" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "左チャンネル" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "右チャンネル" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "インパルス" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "コンバイン" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "ステレオ幅" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "スペクトラム" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "ログスケール" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "オートゲイン" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "レート" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "サンプル" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "長さ" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "インパルス応答をコンバイン" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "ファーストカーネル" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "セカンドカーネル" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "出力ファイル名" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "複合カーネル名" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "インパルスをインポート" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "検索" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "インパルスファイルを検索" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "インパルスファイル一覧" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "デフォルト" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "カットオフ" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "フィード" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "バイパス" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "ミュート" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "検出" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "ワイド" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "スプリット" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "F1 スプリット" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "周波数 1 スプリット" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2 ピーク" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "周波数 2 ピーク" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1 ゲイン" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "周波数 1 ゲイン" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2 レベル" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "周波数 2 レベル" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2 ピーク Q" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "周波数 2 ピーク Q" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "ゆるみ" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "検出" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "減少" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "フレームサイズ" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "フィルター長" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "除外されたアプリ" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "バンド" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "チャンネルの分割" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "フラットレスポンス" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "周波数の計算" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "APO プリセットを読み込む" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "ベル" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "ハイパス" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "ハイシェルフ" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "ローパス" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "ローシェルフ" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "ノッチ" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "反響" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "オールパス" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "バンドタイプ" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "バンドモード" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "スロープ" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "バンドスロープ" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "幅" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "品質" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "ソロ" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "切り上げ" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "切り上げ値" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "アクセス" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "説明" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "このモデルファイルを削除" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct ローパス" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct ローパス" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct ローパス" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct ハイパス" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct ハイパス" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct ハイパス" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct バンドパス" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct バンドパス" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct バンドパス" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct バンドリジェクト" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct バンドリジェクト" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct バンドリジェクト" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "慣性" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "ゲート" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "ゾーン" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "ヒステリシス" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "アタックゾーンスタート" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "リリースゾーン開始" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "内部" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "ゲーティング" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "オーバーサンプリング" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "ディザ" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "Herm Thin" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "Herm Wide" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "Herm Tail" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "Herm Duck" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "Exp Thin" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "Exp Wide" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "Exp Tail" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "Exp Duck" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Line Thin" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Line Wide" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "Line Tail" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "Line Duck" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "なし" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "ハーフ ×2(2L)" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "ハーフ ×2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "ハーフ ×3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "ハーフ ×3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "ハーフ ×4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "ハーフ ×4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "ハーフ ×6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "ハーフ ×6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "ハーフ ×8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "ハーフ ×8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "フル x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "フル x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "フル ×3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "フル ×3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "フル ×4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "フル ×4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "フル ×6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "フル ×6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "フル ×8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "フル ×8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "SC プリアンプ" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "サイドチェーン PreAmplification" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "ブースト" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "ステレオリンク" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "外部サイドチェーン" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "外部サイドチェーンソース" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "オートレベリング" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "オートレベリングアタック" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "オートレベリングリリース" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "オートレベリングニー" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "左ゲイン" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "右ゲイン" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "左サイドチェーン" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "右サイドチェーン" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "標準" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "フラット" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "FFT サイズ" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "高速フーリエ変換サイズ" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "出力ボリューム" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "シーリング" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "動作モード" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "クラシック" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "モダン" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "サイドチェーンブースト" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "ピンク BT" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "ピンク MT" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "ブラウン BT" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "ブラウン MT" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "バンドリスト" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "バンド 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "バンド 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "バンド 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "バンド 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "バンド 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "バンド 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "バンド 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "バンド 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "バンドスタート" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "バンドエンド" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "バンド圧縮モード" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "バンドバイパス" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "バンドサイドチェーンオプション" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "ローカットフィルター" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "ローカットフィルター周波数" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "ハイカットフィルター" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "ハイカットフィルター周波数" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "プリアンプ" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "バンドゲイン" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "バンドエンベロープ" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "バンドカーブ" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "スプリットモード" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "スプリット 1/2" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "スプリット周波数 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "スプリット 2/3" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "スプリット周波数 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "スプリット 3/4" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "スプリット周波数 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "サブバンド" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "バンド 1 バイパス" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "バンド 1 ソロ" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "バンド 1 検出" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "バンド 1 アタック" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "バンド 1 リリース" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "バンド 1 しきい値" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "バンド 1 比率" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "バンド 1 ニー" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "バンド 1 メイクアップ" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "最大リダクション" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "バンド 1 最大リダクション" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "ローバンド" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "バンド 2 バイパス" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "バンド 2 ソロ" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "バンド 2 検出" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "バンド 2 アタック" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "バンド 2 リリース" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "バンド 2 しきい値" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "バンド 2 比率" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "バンド 2 ニー" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "バンド 2 メイクアップ" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "バンド 2 最大リダクション" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "ミッドバンド" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "バンド 3 バイパス" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "バンド 3 ソロ" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "バンド 3 検出" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "バンド 3 アタック" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "バンド 3 リリース" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "バンド 3 しきい値" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "バンド 3 比率" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "バンド 3 ニー" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "バンド 3 メイクアップ" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "バンド 3 最大リダクション" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "ハイバンド" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "バンド 4 バイパス" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "バンド 4 ソロ" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "バンド 4 検出" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "バンド 4 アタック" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "バンド 4 リリース" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "バンド 4 しきい値" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "バンド 4 比率" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "バンド 4 ニー" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "バンド 4 メイクアップ" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "バンド 4 最大リダクション" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "一般" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "デバイス管理" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" +"外部アプリケーション (Gnome 設定や Plasma システム設定など) で EasyEffects " +"の Sink/Source をデフォルトデバイスとして設定しないことをお勧めします。" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "デフォルトの入力を使用" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "カスタム入力デバイス" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "デフォルトの出力を使用" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "カスタム出力デバイス" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "サーバー情報" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "ヘッダーバージョン" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "ライブラリバージョン" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "サンプリングレート" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "最小クォンタム" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "最大クォンタム" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "デフォルトクォンタム" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "プリセット自動読み込み" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "出力デバイス" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "出力プリセット" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "アソシエーションを作成" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "自動読み込み出力プリセットを追加" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "自動読み込み出力プリセットリスト" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "入力デバイス" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "入力プリセット" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "自動読み込み入力プリセットを追加" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "自動読み込み入力プリセットリスト" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "モジュール" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "モジュールリスト" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "クライアント" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "クライアントリスト" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "テスト信号" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "状態" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "有効" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "プロパティ" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "チャンネル" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "両方" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "両方チャンネル" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "波形" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "正弦波" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "ホワイトノイズ" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "高速" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "高品質" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "高い一貫性" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "フォルマント" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "シフト" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "保存済み" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "トランジェント" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "鮮明" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "ミックス" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "スムース" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "ディテクター" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "化合物" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "パーカッシブ" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "ソフト" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "フェーズ" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "ラミナー" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "独立" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "セント" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "半音" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "オクターブ" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "このエフェクトを削除" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "このエフェクトの有効化/無効化" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "このエフェクトの位置を変更する" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "エフェクトの追加" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "使用プラグインリスト" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "エフェクトなし" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "オーディオストリームは変更されていません" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "プラグインを検索" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "プラグインリスト" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_一般" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "サービス" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "システム起動時にサービスを起動" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "ウィンドウを閉じるときにシャットダウン" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "オーディオ" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "すべての出力を処理" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "すべての入力を処理" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "デバイスのモニターからのストリームを無視" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "キュービックボリュームを使用" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "起動時に EasyEffects 仮想デバイスの音量をリセット" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "非アクティブタイムアウト" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "スタイル" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "ダークテーマを使用" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "外側クリックでメニュー非表示" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_スペクトラム" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "形状" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "バー" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "線" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "ドット" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "ポイント" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "高さ" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "線幅" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "塗りつぶし" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "バーの境界線を表示" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "角丸" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "色" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "線とバー" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "軸ラベル" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "周波数範囲" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "最小" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "最大" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "ロード" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "現在の設定をこのプリセットファイルに保存" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "このプリセットファイルを削除" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "新規出力プリセット名" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "プリセットを作成" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "プリセットをインポート" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "出力プリセットを検索" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "出力プリセットリスト" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "新規入力プリセット名" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "入力プリセットを検索" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "入力プリセットリスト" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "高周波ダンピング" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "部屋のサイズ" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "小" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "中" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "大" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "トンネル" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "大/なめらか" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "実験的" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "拡散" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "プリディレイ" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "減衰時間" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Wet 量" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Wet レベル" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Dry 量" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "Dry レベル" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "ベースカット" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "高音カット" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "環境" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "何もない壁" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "部屋" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "何もない大きなホール" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "ディスコ" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "占有面積の大きいホール" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "モデルのインポート" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "モデル" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "標準モデル" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "RNNoise モデルリスト" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "モデルがロードされていません" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "アクティブモデル" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "標準 RNNoise モデル" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "概要" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "EasyEffects のマニュアルを開く" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "フルスクリーン/フルスクリーンから復元" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "ウィンドウを閉じる" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "EasyEffects を終了" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "バランス" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "入力バランス" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "ソフトクリップ" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "ソフトクリップレベル" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "ステレオマトリックス" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (ステレオデフォルト)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (ステレオからミッドサイド)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (ミッドサイドからステレオ)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (モノラル左チャンネル)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (モノラル右チャンネル)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (モノラル合計 L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (ステレオチャンネル反転)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "ステレオモード" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "位相反転" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "サイドレベル" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "サイドバランス" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "中間レベル" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "中間パノラマ" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "出力バランス" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "ディレイ L/R" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "ディレイ 左 右" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "ステレオベース" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "ステレオ位相" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "実行中" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "サスペンド" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "アイドル" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "作成中" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "エラー" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "不明" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "チャンネル" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "出力プリセット: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "入力プリセット: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "PipeWire アプリケーション用オーディオエフェクト" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "EasyEffects を終了します。サービスモードで動作しているときに便利です。" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "プリセットを読み込む。例: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "EasyEffects をリセット。" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "ウィンドウを隠す。" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "グローバルバイパス。1 で有効、2 で無効、3 でステータス取得" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "利用可能なプリセットを表示します。" + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "このファイルは正しくありません" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" +"インパルスファイルが破損しているか、サポートされていない可能性があります" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "ステレオインパルスファイルのみサポートされています" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "インパルスファイルがインポートされていません" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "インパルスファイルをインポート" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "開く" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "キャンセル" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "インパルスレスポンス" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "インパルスを読み込み" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "インパルスを削除" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "読み込まれたインパルスファイルはありません" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "インパルスファイルを読み込めません" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "レコーダー" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "プレイヤー" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "エフェクト" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "無限大" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "APO プリセットファイルをインポート" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "APO プリセット" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" +"APO プリセットが読み込まれていません。ファイルフォーマットが間違っている可能" +"性があります。内容を確認してください。" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "自動読み込みプリセットを削除" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "削除" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "出力デバイス" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "追加" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "プリセットをインポート" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" +"選択されたモデルが読み込まれていません。そのフォーマットはサポートされていな" +"い可能性があります。標準モデルに戻しました。" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "モデルファイルをインポート" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "RNNoise モデル" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "ベースエンハンサー" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "低音ラウドネス" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "コンボルバー" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "クロスフィード" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "クリスタライザー" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "ディエッサー" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "ディレイ" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "エコーキャンセラー" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "イコライザー" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "エキサイター" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "フィルター" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "リミッター" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "マキシマイザー" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "マルチバンドコンプレッサー" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "マルチバンドゲート" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "ピッチ" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "リバーブ" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "ノイズリダクション" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "ステレオツール" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "閉じる (Esc キーを押す)" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects は、高度なオーディオ操作ツールです。イコライザー、リミッター、" +#~ "コンプレッサー、リバーブツールなどが含まれていますが、これらはほんの一部で" +#~ "す。さらに、スペクトラムアナライザーもあります。" + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects は、PulseEffects の後継版です。EasyEffects は PipeWire のオー" +#~ "ディオサーバーのみ対応しています。PulseAudio をお使いの場合、代わりに " +#~ "PulseEffects をお使いください。" + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "EasyEffects はデフォルトの PipeWire サウンドサーバーを使用しているので、ほ" +#~ "とんどのアプリケーションで動作します。サポートされているすべてのアプリケー" +#~ "ションは、メインウィンドウに表示され、それぞれ個別に有効にすることができま" +#~ "す。" + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "EasyEffects は、音の出力を操作するだけでなく、マイクなどの入力デバイスにも" +#~ "エフェクトをかけることができます。例えば、音声録音の時に便利ですが、音声会" +#~ "話の時にも効果を発揮します。" + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "EasyEffects を起動すると、前回のセッションで使用した設定を適用します。ま" +#~ "た、現在のすべての設定をプロファイルとして保存することもできます。" + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "2 つのオーディオ出力アプリを表示するメインページ" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "オーディオコントロールを表示するベースエンハンサーページ" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "オーディオコントロールを表示するコンボルバーのページ" + +#~ msgid "This release adds the following features:" +#~ msgstr "このリリースでは、以下の機能が追加されています:" + +#~ msgid "" +#~ "When effects are disable to an application we now set its target metadata " +#~ "to null. This will allow the media session" +#~ msgstr "" +#~ "アプリケーションに対してエフェクトが無効になっている場合、ターゲットメタ" +#~ "データをnullに設定します。これにより、メディアセッションが可能になります" + +#~ msgid "manager" +#~ msgstr "マネージャー" + +#~ msgid "" +#~ "A new configuration option was added. It allows EasyEffects to ignore " +#~ "streams whose purpose is to monitor sink" +#~ msgstr "" +#~ "新しい設定オプションが追加されました。これは、EasyEffects が監視シンクデバ" +#~ "イスのストリームを無視することを可能にします。" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr "" +#~ "これにより、OBS を使用する際にユーザーが抱えていた問題のいくつかを解決する" +#~ "ことができます。" + +#~ msgid "The code that shows the stream sample format has been improved" +#~ msgstr "ストリームのサンプル形式を表示するコードが改善されました" + +#~ msgid "" +#~ "The rnnoise library is now optional. This should help package maintainers " +#~ "to build" +#~ msgstr "" +#~ "rnnoise ライブラリがオプションになりました。これはパッケージメンテナが" +#~ "Debianパッケージをビルドするのに役立ちます。" + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "詳しくは issue #1000 を参照してください。" + +#~ msgid "" +#~ "Our logs now show the source code line where the messages are being " +#~ "printed" +#~ msgstr "" +#~ "ログにメッセージが出力されるソースコードの行が表示されるようになりました" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "このリリースでは、以下のバグが修正されています:" + +#~ msgid "" +#~ "The \"enable effects\" checkbox in our window was not being updated when " +#~ "third party programs like pavucontrol" +#~ msgstr "" +#~ "pavucontrol などのサードパーティ製プログラムが動作しているとき、ウィンドウ" +#~ "の「エフェクトを有効にする」チェックボックスが更新されないことがありました" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "そのストリームを仮想デバイスから遠ざけました。これは今すぐ修正する必要があ" +#~ "ります。" + +#~ msgid "" +#~ "Fixed a crash that could happen when the maximum autogain history was " +#~ "changed." +#~ msgstr "" +#~ "オートゲインの最大履歴を変更すると、クラッシュすることがある問題を修正しま" +#~ "した。" + +#~ msgid "Avoid crashes when pw-mididump is running" +#~ msgstr "pw-mididump 実行時のクラッシュを回避" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "ピッチプラグインのインターフェースが改善されました" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "アプリケーションアイコンが QT を使用するデスクトップに対応しました" + +#~ msgid "" +#~ "Our blocklist code will use the `application.id` tag if the stream sets it" +#~ msgstr "" +#~ "ブロックリストのコードは、ストリームが `application.id` タグを設定した場" +#~ "合、それを使用します" + +#~ msgid "" +#~ "In order to avoid problems with the mouse scroll the entries in the " +#~ "applications list shown in our `Players/Recorders`" +#~ msgstr "" +#~ "マウスのスクロールの問題を回避するために、`プレーヤー/レコーダー` に表示さ" +#~ "れるアプリケーションリストのエントリを表示します" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "タブにボリュームスケールが表示されなくなりました。この問題の詳細と解決策に" +#~ "ついては、#1211 を参照してください" + +#~ msgid "and #1427" +#~ msgstr "and #1427" + +#~ msgid "" +#~ "When no application is available for display in the `Players/Recorders` a " +#~ "message will be shown to the user" +#~ msgstr "" +#~ "`プレーヤー/レコーダー` に表示できるアプリケーションがない場合、メッセージ" +#~ "が表示されます" + +#~ msgid "Many translation updates" +#~ msgstr "多くの翻訳の更新" + +#~ msgid "" +#~ "Fixed a bug where EasyEffects crashed when the number of points displayed " +#~ "in the spectrum was changed while" +#~ msgstr "" +#~ "EasyEffects が次の状態のときにスペクトラムに表示されるポイント数を変更した" +#~ "ときにクラッシュするバグを修正しました" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "" +#~ "パイプラインがアクティブで、かつスペクトラムウィジェットが表示されている間" + +#~ msgid "" +#~ "The pipeline latency value displayed in our window could be wrong in some " +#~ "situations. This was fixed." +#~ msgstr "" +#~ "ウィンドウに表示されるパイプラインの待機時間の値は、状況によっては間違って" +#~ "いる可能性があります。この問題は修正されました。" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "パイプラインの非アクティブ時のタイムアウトを選択できる設定が追加されまし" +#~ "た。クライアントが再生していないとき" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "の接続や録画は、タイムアウトに達するとフィルタリングが解除されます。これは" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "CPUのパワーを無駄にせず、無音で処理することができます。" + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "オートゲインプラグインでは、3つのラウドネスのうち、どのラウドネスを使用し" +#~ "て幾何学的な計算を行うかを選択できるようになりました" + +#~ msgid "mean." +#~ msgstr "。" + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "オートゲインプラグインに最大履歴を設定できるようになり、libebur128 ヒスト" +#~ "グラムモードは使用されなくなりました。" + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "これにより、Integrated ラウドネスが永遠に同じ値で止まってしまうようなケー" +#~ "スを避けることができます。" + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "EasyEffects のアイコンは、QT デスクトップで見えるように更新されました。" + +#~ msgid "This release fixes the following bug:" +#~ msgstr "このリリースでは、以下のバグが修正されています:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "グローバルバイパスの状態を返すコマンドラインオプションが再び動作するように" +#~ "なりました。" + +#~ msgid "This release adds the following feature:" +#~ msgstr "このリリースでは、以下の機能が追加されています:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "クロスフィードフィルターは、PipeWire の動的遅延スイッチにうまく対応するよ" +#~ "うになりました。これで、音量レベルのジャンプが起こらなくなるはずです。" + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "モノラルマイクが EasyEffects で正しく動作しない不具合を修正しました" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "次の PipeWire リリース `0.3.44` への対応" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "オートゲインフィルターは、PipeWire の動的遅延スイッチにうまく対応するよう" +#~ "になりました。これで、音量レベルのジャンプが起こらなくなるはずです。" + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "EasyEffects の起動時に、バーチャルデバイスのボリュームとミュートの状態をリ" +#~ "セットできるオプションを追加しました。これは、謎の理由でオーディオサーバー" +#~ "によってデバイスがミュートされている場合に役立ちます。" + +#~ msgid "Better support for computer suspending." +#~ msgstr "コンピュータのサスペンドのサポートが強化されました。" + +#~ msgid "Updated translations" +#~ msgstr "翻訳の更新" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "プリセットを持たない自動読み込みプロファイルを作成しようとすると、アプリ" +#~ "ケーションがクラッシュするというバグを修正しました。" + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "イコライザーバンドの「品質」を「0」に設定するとアプリケーションがクラッ" +#~ "シュするバグを修正しました。" + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita は、ウィンドウの一部を作成したり、ダークテーマとライトテーマを" +#~ "切り替えるために使用されます。" + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "設定メニューは、LibAdwaita ウィジェットを使用して再設計されました。" + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "イコライザー APO のプリセットインポート機能で、ベルフィルターだけでなく、" +#~ "対応する他のフィルターも適用できるよう改善しました" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "メニューの「すべての設定をリセット」機能が Flatpak でも動作するようにしま" +#~ "した。" + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "メニューの 「自動非表示」を無効にすることができる新しいオプションを用意し" +#~ "ました。これにより、現在 gtk4 で抱えているポップオーバーメニュー関連のバグ" +#~ "を回避できるかもしれません。" + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "中央の周波数帯でカンマを千の区切りとして保存された APO プリセットを読み込" +#~ "むための解析がより強力になりました。" + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "fmt ライブラリは、少なくとも c++ コンパイラがその機能を実装していない間は" +#~ "新しい依存関係にあります。これは今後数年のうちに実現すると思われます。" + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM と GLIBMM はもう依存関係にありません。現在は gtk4 を直接使用していま" +#~ "す。" + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "コンボルバーインターフェースでインパルスレスポンスを組み合わせることができ" +#~ "るようになりました。新しいインパルスファイルが生成され、インパルスリストに" +#~ "表示されます。" + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "プロットの「x 軸」の描画を改善しました。ウィンドウの幅に応じてラベルの数が" +#~ "動的に調整されるようになりました。" + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "ドキュメントが EasyEffects の新機能を反映して更新されました。PulseEffects " +#~ "に関する古い文献は削除されました。メニューセクションにドキュメントボタンが" +#~ "追加されました。" + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "スピンボタンに範囲外の値が入力されたときに、前の値にリセットされるのではな" +#~ "く、最低/最高の値に更新されるようになりました。" + +#~ msgid "" +#~ "The application window now remembers the maximized state and restores it " +#~ "on the next opening event." +#~ msgstr "" +#~ "アプリケーションウィンドウは最大化された状態を記憶し、次回の起動時に反映し" +#~ "ます。" + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "「tbb」ライブラリは新しい依存関係です" + +#~ msgid "" +#~ "The Limiter and the Multiband Compressor plugins can now use an optional " +#~ "external sidechain." +#~ msgstr "" +#~ "リミッターとマルチバンドコンプレッサーのプラグインで、オプションの外部サイ" +#~ "ドチェーンを使用できるようになりました。" + +#~ msgid "" +#~ "The Autogain plugin now allows the user to select which Loudness is used " +#~ "as reference for the volume correction." +#~ msgstr "" +#~ "オートゲインプラグインで、音量補正の基準となるラウドネスを選択できるように" +#~ "なりました。" + +#~ msgid "" +#~ "The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +#~ "Amplification\" parameter." +#~ msgstr "" +#~ "イコライザープラグインの APO プロファイルインポート機能で、\"Pre " +#~ "Amplification\" パラメータを解析するようになりました。" + +#~ msgid "Optional Cubic Volume can be enabled in General Settings." +#~ msgstr "" +#~ "オプションのキュービックボリュームは一般設定で有効にすることができます。" + +#~ msgid "" +#~ "PipeWire monitor streams are now excluded and removed from the " +#~ "applications list." +#~ msgstr "" +#~ "PipeWire のモニターストリームがアプリケーションリストから除外され、削除さ" +#~ "れるようになりました。" + +#~ msgid "Hopefully crashes like the one reported at [1172]( are fixed." +#~ msgstr "" +#~ "うまくいけば [1172]( で報告されたもののようなクラッシュが修正されていま" +#~ "す。" + +#~ msgid "Prevented a case in which Spectrum was crashing." +#~ msgstr "スペクトラムがクラッシュするのを防ぎました。" + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "英語以外の言語を使用しているシステムでは、Pavucontrol は入力アプリケーショ" +#~ "ンリストに追加されません。" + +#~ msgid "" +#~ "Improved compatibility with WirePlumber. This is needed to run on systems " +#~ "that decided to use it instead of the" +#~ msgstr "" +#~ "WirePlumber との互換性を改善しました。これは次のものの代わりにシステムで動" +#~ "作するために必要です" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "内蔵の PipeWire セッションマネージャーです。詳細は issue [1144]( で確認で" +#~ "きます" + +#~ msgid "" +#~ "When trying to add an autoloading profile for a device already in the " +#~ "list its target preset will be updated. This way we can change the " +#~ "profile preset without having to remove and recreating it." +#~ msgstr "" +#~ "すでにリストにあるデバイスに自動読み込みプロファイルを追加しようとすると、" +#~ "そのターゲットプリセットが更新されます。これにより、プロファイルを削除して" +#~ "再度作成せずにプロファイルのプリセットを変更することができます。" + +#~ msgid "" +#~ "The preset autoloading support implementation was redesigned again. It " +#~ "should work on more hardware now. For more information see issue [1051](" +#~ msgstr "" +#~ "プリセットの自動読み込みサポートの実装を再設計しました。これにより、多くの" +#~ "ハードウェアで動作するようになりました。詳しくは issue [1051]( を確認して" +#~ "ください" + +#~ msgid "" +#~ "If the Limiter or the Maximizer are set in the last position of the " +#~ "plugin stack, new plugins are added at the second to last position in " +#~ "order to prevent hardware damage on eventually high output level." +#~ msgstr "" +#~ "プラグインスタックの最後にリミッターやマキシマイザーが設定されている場合、" +#~ "高い出力レベルでハードウェアが損傷するのを防ぐために、新しいプラグインは最" +#~ "後から2番目の位置に追加されます。" + +#~ msgid "" +#~ "Removing an application from the blocklist, its previous enabled state is " +#~ "restored." +#~ msgstr "" +#~ "ブロックリストからアプリケーションを削除すると、有効な状態に戻ります。" + +#~ msgid "" +#~ "Sometimes when removing imported models from the noise reduction plugin " +#~ "the current used model was not properly updated. This should be fixed now." +#~ msgstr "" +#~ "ノイズ除去プラグインからインポートしたモデルを削除すると、現在使用している" +#~ "モデルが正しく更新されないことがありました。これは現在修正されているはずで" +#~ "す。" + +#~ msgid "" +#~ "When editing presets files in an external editor, duplicated entries " +#~ "won't be shown in our presets menu." +#~ msgstr "" +#~ "外部エディタでプリセットファイルを編集すると、重複したエントリーがプリセッ" +#~ "トメニューに表示されなくなります。" + +#~ msgid "Now the blocklist is correctly set when switching presets." +#~ msgstr "" +#~ "プリセットを切り替えたときに、ブロックリストが正しく設定されるようになりま" +#~ "した。" + +#~ msgid "" +#~ "Now the status of the global bypass button is correctly updated when " +#~ "changing plugin stack." +#~ msgstr "" +#~ "プラグインのスタックを変更したときに、グローバルバイパスボタンの状態が正し" +#~ "く更新されるようになりました。" + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "システム上のアイコンが見つからない場合は、アプリケーション情報インター" +#~ "フェース内に表示されません" + +#~ msgid "" +#~ "Some icons not showing in Plasma DE with Breeze icon theme should appear " +#~ "now." +#~ msgstr "" +#~ "Breeze アイコンテーマを使用した Plasma DE で表示されなかった一部のアイコン" +#~ "が表示されるようになりました。" + +#~ msgid "Updated Chinese translation." +#~ msgstr "中国語の翻訳を更新しました。" + +#~ msgid "Updated Italian translation." +#~ msgstr "イタリア語の翻訳を更新しました。" + +#~ msgid "Added support for the compressor parameter `Boost Amount`" +#~ msgstr "コンプレッサーのパラメーター「Boost Amount」に対応しました" + +#~ msgid "" +#~ "The multiband compressor plugin now uses the stereo multiband compressor " +#~ "plugin from Linux Studio Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "マルチバンドコンプレッサープラグインは、Calf Studio のものから Linux " +#~ "Studio Plugins のステレオマルチバンドコンプレッサープラグインを使用するよ" +#~ "うになりました。" + +#~ msgid "" +#~ "The limiter plugin now uses the stereo limiter plugin from Linux Studio " +#~ "Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "リミッタープラグインは、Calf Studio のものから Linux Studio Plugins のステ" +#~ "レオリミッタープラグインを使用するようになりました。" + +#~ msgid "" +#~ "LV2 filters now are spawned in PipeWire graph only when loaded the first " +#~ "time. Once loaded, they remain connected until EasyEffects shutdown." +#~ msgstr "" +#~ "LV2 フィルターは、最初に読み込まれたときのみ PipeWire グラフに生成されるよ" +#~ "うになりました。一度読み込まれると、EasyEffects がシャットダウンするまで接" +#~ "続されたままになります。" + +#~ msgid "The echo canceller sampling rate is now properly set." +#~ msgstr "" +#~ "エコーキャンセラーのサンプリングレートが正しく設定されるようになりました。" + +#~ msgid "" +#~ "The threshold parameter from the deesser plugin is now saved to the " +#~ "preset file." +#~ msgstr "" +#~ "ディエッサープラグインのしきい値パラメーターがプリセットファイルに保存され" +#~ "るようになりました。" + +#~ msgid "" +#~ "Improved band splitting for crystalizer with new default intensity values." +#~ msgstr "" +#~ "クリスタライザーのバンドスプリットを改善し、新しいデフォルトの強度値を追加" +#~ "しました。" + +#~ msgid "" +#~ "Depending on the input gain or output gain values the corresponding level " +#~ "bars could not be aligned." +#~ msgstr "" +#~ "入力ゲインや出力ゲインの値によっては、対応するレベルバーが揃わないことがあ" +#~ "りました。" + +#~ msgid "" +#~ "When adding more equalizer bands they are set to `Bell` instead of `Off`." +#~ msgstr "" +#~ "イコライザーバンドを追加すると、「オフ」ではなく「ベル」に設定されます。" + +#~ msgid "" +#~ "Equalizer APO presets loading is now working properly on locales " +#~ "different than C." +#~ msgstr "" +#~ "イコライザー APO のプリセットの読み込みが、C 以外のロケールで正しく動作す" +#~ "るようになりました。" + +#~ msgid "Improved linking management between port filter nodes in PipeWire." +#~ msgstr "PipeWire のポートフィルターノード間のリンク管理を改善しました。" + +#~ msgid "" +#~ "The crystalizer plugin signal amplification was too high before. It " +#~ "should be within more reasonable levels now." +#~ msgstr "" +#~ "以前は、クリスタライザープラグインの信号増幅が高すぎました。今は、より合理" +#~ "的なレベルになっているはずです。" + +#~ msgid "" +#~ "Improved the resampler used in the plugins that require one(like the " +#~ "rnnoise plugin)" +#~ msgstr "" +#~ "リサンプラーを必要とするプラグイン (rnnoise プラグインなど) で使用されるリ" +#~ "ザンプラーの改善" + +#~ msgid "Setting multiple autoloading presets should be fine now" +#~ msgstr "" +#~ "複数の自動読み込みプリセットを設定しても正常に動作するようになりました" + +#~ msgid "Transient windows are now properly set for some plugins dialogs" +#~ msgstr "" +#~ "一部のプラグインのダイアログで、一時的なウィンドウが適切に設定されるように" +#~ "なりました" + +#~ msgid "" +#~ "The convolver impulse response menu was improved to workaround an issue " +#~ "where the impulse files was not loaded when only one was available in the " +#~ "menu" +#~ msgstr "" +#~ "コンボルバーのインパルス応答メニューで、インパルスファイルが1つしかない場" +#~ "合に読み込まれないという問題を改善しました" + +#~ msgid "" +#~ "Fixed a bug that could make the pitch plugin to not be properly " +#~ "initialized" +#~ msgstr "ピッチプラグインが正しく初期化されないことがあるバグを修正しました" + +#~ msgid "" +#~ "The saturation warning should not displace its neighbor widgets anymore" +#~ msgstr "" +#~ "サチュレーション警告は、もう隣のウィジェットの位置を変えることはありません" + +#~ msgid "Fixed the locale in a few widgets" +#~ msgstr "いくつかのウィジェットのロケールを修正" + +#~ msgid "Fixed wrong alignment in a few widgets" +#~ msgstr "いくつかのウィジェットで誤った配置になっていたのを修正" + +#~ msgid "" +#~ "The Loudness plugin is being used again for the reasons described at This " +#~ "means that is an optional dependency again." +#~ msgstr "" +#~ "ラウドネスプラグインは、ここで説明されている理由のために再び使用されていま" +#~ "す。そのため、オプションの依存関係になりました。" + +#~ msgid "" +#~ "Fixed a segmentation fault that happened when optional dependencies were " +#~ "not installed" +#~ msgstr "" +#~ "オプションの依存パッケージがインストールされていない場合に発生するセグメン" +#~ "テーションフォールトを修正しました" + +#~ msgid "Improved equalizer interface." +#~ msgstr "イコライザーのインターフェースを改善しました。" + +#~ msgid "" +#~ "Now we use a sidechain LSP compressor that allows the user to select and " +#~ "external source as the sidechain input." +#~ msgstr "" +#~ "現在は、サイドチェーン入力として外部ソースを選択できるサイドチェーン LSP " +#~ "コンプレッサーを使用しています。" + +#~ msgid "We now support the LSP compressor `Boosting` mode." +#~ msgstr "LSP コンプレッサーの「ブースト」モードに対応しました。" + +#~ msgid "" +#~ "When `split-channels` is enabled in the equalizer the imported APO preset " +#~ "will be applied only to the channel being visualized in the window. This " +#~ "will allow to import different presets for each channel instead of just " +#~ "settings the same values to both." +#~ msgstr "" +#~ "イコライザーで「スプリットチャンネル」が有効になっている場合、インポートさ" +#~ "れた APO プリセットは、ウィンドウに表示されているチャンネルのみ適用されま" +#~ "す。これにより、両方に同じ値を設定するのではなく、チャンネルごとに異なるプ" +#~ "リセットをインポートすることができます。" + +#~ msgid "" +#~ "Fixed some segmentation faults that could happen when creating a preset " +#~ "autoloading profile or removing presets" +#~ msgstr "" +#~ "プリセットの自動読み込みプロファイル作成時やプリセットの削除時に発生するセ" +#~ "グメンテーションフォールトを修正" + +#~ msgid "" +#~ "This is one of the biggest releases that I have ever made. The amount of " +#~ "changes is so big that it is hard to talk about everything here." +#~ msgstr "" +#~ "今回のリリースは、これまでのリリースの中でも最も大きなもののひとつです。変" +#~ "更点が多すぎて、ここですべてを話すことはできません。" + +#~ msgid "" +#~ "The following are just the most import ones. People interested on the " +#~ "journey that got us here can take" +#~ msgstr "" +#~ "以下は、最も重要なものだけです。ここに至るまでの道のりに興味のある方は" + +#~ msgid "a look at and" +#~ msgstr "を見て、" + +#~ msgid "" +#~ "The application and its repository have been renamed from PulseEffects to " +#~ "`EasyEffects`" +#~ msgstr "" +#~ "アプリケーションとそのリポジトリの名称が PulseEffects から EasyEffects に" +#~ "変更されました" + +#~ msgid "gtkmm3 was replaced by gtkmm4" +#~ msgstr "gtkmm3 は gtkmm4 に置き換えられました" + +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "" +#~ "Gstreamer は、ネイティブの PipeWire フィルターに置き換えられました。" + +#~ msgid "" +#~ "Many features were reimplemented from scratch. The preset autoloading is " +#~ "one example. Another remarkable change will be seen in the plugins " +#~ "selection menu. Now the user can show in the window only the plugins that " +#~ "he/she wants to use." +#~ msgstr "" +#~ "多くの機能がゼロから再実装されました。プリセットの自動読み込みはその一例で" +#~ "す。また、プラグイン選択メニューも大きく変化しました。ユーザーは、使用した" +#~ "いプラグインだけをウィンドウに表示できるようになりました。" + +#~ msgid "" +#~ "Boost is no longer a dependency. The price paid for that was a little " +#~ "change in our presets structures. With some patience it is possible to " +#~ "edit PulseEffects presets in a text editor and make them work in " +#~ "EasyEffects. Hopefully someone will come up with a script for this in the " +#~ "feature." +#~ msgstr "" +#~ "Boost は依存関係でなくなりました。そのため、プリセットの構造に少し変更があ" +#~ "りました。根気があれば、PulseEffects のプリセットをテキストエディタで編集" +#~ "して、EasyEffects で動作させることができます。誰かがこの機能のためのスクリ" +#~ "プトを開発してくれることを期待しています。" + +#~ msgid "" +#~ "New libraries are being used and some of the librarires that were " +#~ "optional before are now required" +#~ msgstr "" +#~ "新しいライブラリーが使われるようになり、以前はオプションであったライブラ" +#~ "リーの一部が必須になりました" + +#~ msgid "Average" +#~ msgstr "平均" + +#~ msgid "Failed" +#~ msgstr "失敗" + +#~ msgid "Use Default" +#~ msgstr "デフォルトを使用" + +#~ msgid "Remove this plugin" +#~ msgstr "このプラグインを削除" + +#~ msgid "Import Presets" +#~ msgstr "プリセットをインポート" + +#~ msgid "Start Service at Login" +#~ msgstr "ログイン時にサービスを開始" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "起動時にデバイスの音量をリセット" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "アクティブモデル" + +#~ msgid "Add to Blocklist" +#~ msgstr "ブロックリストに追加" + +#~ msgid "Blocklist" +#~ msgstr "ブロックリスト" + +#~ msgid "Add Plugin" +#~ msgstr "プラグインを追加" + +#~ msgid "Speakers" +#~ msgstr "スピーカー" + +#~ msgid "Microphone" +#~ msgstr "マイク" + +#~ msgid "Plugins" +#~ msgstr "プラグイン" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "有効" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "有効" + +#~ msgid "Format" +#~ msgstr "フォーマット" + +#~ msgid "Latency" +#~ msgstr "レイテンシー" + +#~ msgid "idle" +#~ msgstr "アイドル" + +#~ msgid "Faster" +#~ msgstr "より速く" + +#~ msgid "Preserve Formant" +#~ msgstr "フォルマントを保持" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" diff --git a/po/km.po b/po/km.po new file mode 100644 index 0000000..96f902c --- /dev/null +++ b/po/km.po @@ -0,0 +1,2491 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "" + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "" + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 0000000..d236515 --- /dev/null +++ b/po/ko.po @@ -0,0 +1,2777 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-02-19 08:54+0000\n" +"Last-Translator: OctopusET \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.11-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "이퀄라이저, 컴프레서 그리고 기타 오디오 효과" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "PipeWire 에서 작동하는 음향효과 프로그램" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "리미터;컴프레서;리버브;이퀄라이저;자동음량조절;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"프리셋\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "응용 프로그램 음소거" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "응용 프로그램 음량" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "프리셋" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "프리셋 메뉴" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "전역 Bypass" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects 윈도우" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "응용 프로그램 목록" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "대상" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "참조" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentary" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Short-Term" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrated" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "Geometric Mean" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Geometric Mean" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Geometric Mean" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Geometric Mean" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "히스토리 초기화" + +#: data/ui/autogain.ui:229 +#, fuzzy +msgid "Relative" +msgstr "Relative" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Range" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Loudness" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "아웃풋 게인" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "인풋" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "플러그인 인풋 게인" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "아웃풋" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "플러그인 아웃풋 게인" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "리셋" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +#, fuzzy +msgid "Using" +msgstr "다음 사용 중" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "장치" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "이름" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "프로필" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "프리셋" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +#, fuzzy +msgid "Listen" +msgstr "듣는 중" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Blend Harmonics" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3rd" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2nd" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +#, fuzzy +msgid "Amount" +msgstr "Amount" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +#, fuzzy +msgid "Harmonics" +msgstr "Harmonics" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Scope" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Floor" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Floor Value" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "응용 프로그램 제외" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "제외된 프로그램 목록" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "제외된 프로그램 보기" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "컴프레서" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "모드" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Downward" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Upward" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "증폭" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +#, fuzzy +msgid "Compression Mode" +msgstr "Compression Mode" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Boost Threshold" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Boost Amount" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "어택" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "타임" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Threshold" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "어택 타임" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Attack Threshold" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "릴리스" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "릴리스 타임" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Release Threshold" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +#, fuzzy +msgid "Ratio" +msgstr "Ratio" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +#, fuzzy +msgid "Knee" +msgstr "Knee" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +#, fuzzy +msgid "Makeup" +msgstr "Makeup" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +#, fuzzy +msgid "Sidechain" +msgstr "Sidechain" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +#, fuzzy +msgid "Peak" +msgstr "Peak" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Low-Pass" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +#, fuzzy +msgid "Uniform" +msgstr "Uniform" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Sidechain Mode" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "소스" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "중간" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Side" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "왼쪽" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "오른쪽" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Sidechain Source" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "타입" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Feed-forward" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "피드백" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +#, fuzzy +msgid "External" +msgstr "External" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Sidechain 타입" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "입력 장치" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "PreAmplification" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +#, fuzzy +msgid "Reactivity" +msgstr "Reactivity" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +#, fuzzy +msgid "Lookahead" +msgstr "Lookahead" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Sidechain Filters" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "High-Pass" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +#, fuzzy +msgid "Frequency" +msgstr "Frequency" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +#, fuzzy +msgid "Off" +msgstr "끄기" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "High-Pass Filter Mode" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "High-Pass Filter Frequency" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Low-Pass Filter Mode" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +#, fuzzy +msgid "Gain" +msgstr "Gain" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Envelope" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +#, fuzzy +msgid "Curve" +msgstr "Curve" + +#: data/ui/convolver.ui:30 +#, fuzzy +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "좌측 채널" + +#: data/ui/convolver.ui:43 +#, fuzzy +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "우측 채널" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Impulses" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +#, fuzzy +msgid "Combine" +msgstr "Combine" + +#: data/ui/convolver.ui:76 +#, fuzzy +msgid "Stereo Width" +msgstr "Stereo Width" + +#: data/ui/convolver.ui:104 +#, fuzzy +msgid "Spectrum" +msgstr "스펙트럼" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "" + +#: data/ui/convolver.ui:138 +#, fuzzy +msgid "Rate" +msgstr "레이트" + +#: data/ui/convolver.ui:159 +#, fuzzy +msgid "Samples" +msgstr "Samples" + +#: data/ui/convolver.ui:180 +#, fuzzy +msgid "Duration" +msgstr "Duration" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Combine Impulse Responses" + +#: data/ui/convolver_menu_combine.ui:48 +#, fuzzy +msgid "First Kernel" +msgstr "First Kernel" + +#: data/ui/convolver_menu_combine.ui:82 +#, fuzzy +msgid "Second Kernel" +msgstr "Second Kernel" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "출력 파일 이름" + +#: data/ui/convolver_menu_combine.ui:95 +#, fuzzy +msgid "Combined Kernel Name" +msgstr "Combined Kernel Name" + +#: data/ui/convolver_menu_impulses.ui:16 +#, fuzzy +msgid "Import Impulse" +msgstr "Import Impulse" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +#, fuzzy +msgid "Search" +msgstr "검색" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Impulse 파일 검색" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Impulse 파일 목록" + +#: data/ui/crossfeed.ui:25 +#, fuzzy +msgid "Default" +msgstr "기본값" + +#: data/ui/crossfeed.ui:48 +#, fuzzy +msgid "Cutoff" +msgstr "Cutoff" + +#: data/ui/crossfeed.ui:83 +#, fuzzy +msgid "Feed" +msgstr "Feed" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "바이패스" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +#, fuzzy +msgid "Mute" +msgstr "음소거" + +#: data/ui/deesser.ui:30 +#, fuzzy +msgid "Detection" +msgstr "Detection" + +#: data/ui/deesser.ui:61 +#, fuzzy +msgid "Wide" +msgstr "Wide" + +#: data/ui/deesser.ui:62 +#, fuzzy +msgid "Split" +msgstr "Split" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "F1 Split" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frequency 1 Split" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "F2 Peak" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frequency 2 Peak" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "F1 Gain" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frequency 1 Gain" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "F2 Level" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frequency 2 Level" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "F2 Peak Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frequency 2 Peak Q" + +#: data/ui/deesser.ui:254 +#, fuzzy +msgid "Laxity" +msgstr "Laxity" + +#: data/ui/deesser.ui:569 +#, fuzzy +msgid "Detected" +msgstr "Detected" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Reduction" + +#: data/ui/echo_canceller.ui:20 +#, fuzzy +msgid "Frame Size" +msgstr "Frame Size" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filter Length" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "바이패스" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +#, fuzzy +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +#, fuzzy +msgid "Access" +msgstr "액세스" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "릴리스 타임" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "External" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "바이패스" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "바이패스" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "바이패스" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "바이패스" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "컴프레서" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "바이패스" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "바이패스" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "바이패스" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "출력 게인" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "APO 프리셋" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +#, fuzzy +msgid "Add Autoloading Output Preset" +msgstr "APO 프리셋" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "APO 프리셋" + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "장치" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "프리셋 임포트" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "프리셋 임포트" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +#, fuzzy +msgid "State" +msgstr "상태" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +#, fuzzy +msgid "Channels" +msgstr "채널" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "채널" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "포멧" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "프리셋" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detection" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +#, fuzzy +msgid "Used Plugins List" +msgstr "사용된 플러그인 목록" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "APO 프리셋" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "프리셋 임포트" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "프리셋 임포트" + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "APO 프리셋" + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "프리셋 임포트" + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "프리셋 임포트" + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "프리셋 임포트" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "타겟" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "타겟" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "출력 게인" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "제거" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "출력 게인" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "" + +#: src/app_info.cpp:64 +#, fuzzy +msgid "Running" +msgstr "실행 중" + +#: src/app_info.cpp:66 +#, fuzzy +msgid "Suspended" +msgstr "일시 중단됨" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "만드는 중" + +#: src/app_info.cpp:72 +#, fuzzy +msgid "Error" +msgstr "에러" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "채널" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "" + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "PipeWire 음향 효과 애플리케이션" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "" + +#: src/application_ui.cpp:267 +#, fuzzy +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Impulse 파일 목록" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "제거" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "제거" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Impulse 파일 목록" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Impulse 파일 검색" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +#, fuzzy +msgid "infinity" +msgstr "무한대" + +#: src/equalizer_ui.cpp:351 +#, fuzzy +msgid "Import APO Preset File" +msgstr "APO 프리셋 파일 임포트" + +#: src/equalizer_ui.cpp:357 +#, fuzzy +msgid "APO Presets" +msgstr "APO 프리셋" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "제거" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "출력 게인" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "프리셋 임포트" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "APO 프리셋 파일 임포트" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "제거" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "음량" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects는 고급 오디오 처리 도구 입니다. 이퀄라이저, 리미터, 컴프레서, " +#~ "리버브 툴 등이 포함되며, 이외에도 여러가지 플러그인이 있습니다. 예를 들자" +#~ "면 스펙트럼 분석기도 내장되어 있습니다." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects는 PulseEffects의 후속 프로젝트 입니다. EasyEffects는 PipeWire " +#~ "만을 지원 합니다. PulseAudio를 사용하는 경우 PulseEffects를 사용하십시오." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "EasyEffects는 기본 PipeWire 사운드 서버를 사용하므로 대부분의 응용 프로그" +#~ "램에서 작동합니다. 지원되는 모든 응용 프로그램은 메인 화면에 표시되며 각" +#~ "각 개별적으로 활성화할 수 있습니다." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "EasyEffects는 음향 출력을 처리할 뿐만 아니라 마이크 등의 입력 장치에도 음" +#~ "향효과를 걸 수 있습니다. 예를 들어 오디오 녹음 할 때 유용하며 음성 대화 시" +#~ "에도 효과를 발휘합니다." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "EasyEffects를 시작하면 마지막 세션에서 사용된 설정이 적용됩니다. 현재 설정" +#~ "을 모두 프로파일로 저장할 수도 있습니다." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "두 개의 오디오 출력 프로그램을 보여주는 메인 페이지" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "오디오 컨트롤을 보여주는 bass enhancer 페이지" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "오디오 컨트롤을 보여주는 convolver 페이지" + +#~ msgid "This release adds the following features:" +#~ msgstr "이 릴리스에는 다음 기능이 추가되었습니다:" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "피치 플러그인의 인터페이스가 개선되었습니다" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "이제 응용 프로그램 아이콘이 QT를 사용하는 데스크톱과 호환됩니다." + +#~ msgid "" +#~ "Our blocklist code will use the `application.id` tag if the stream sets it" +#~ msgstr "" +#~ "스트림이 설정하는 경우 차단 목록 코드는 `application.id` 태그를 사용합니" +#~ "다." + +#~ msgid "" +#~ "In order to avoid problems with the mouse scroll the entries in the " +#~ "applications list shown in our `Players/Recorders`" +#~ msgstr "" +#~ "마우스 스크롤 문제를 방지하려면 `재생/녹음`에 표시된 애플리케이션 목록의 " +#~ "항목을 스크롤하십시오" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "탭에 더 이상 볼륨 스케일이 표시되지 않습니다. 문제 및 해결 방법에 대한 자" +#~ "세한 내용은 #1211에서 확인할 수 있습니다." + +#~ msgid "and #1427" +#~ msgstr "그리고 #1427" + +#~ msgid "This release fixes the following bug:" +#~ msgstr "이 릴리스는 다음 버그를 수정합니다:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "이 릴리스에는 다음 기능이 추가되었습니다:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "크로스 피드 필터는 PipeWire의 동적 레이턴시 스위치에 잘 대응합니다. 이제 " +#~ "볼륨 레벨 점프가 발생하지 않습니다." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "모노 마이크가 EasyEffects에서 제대로 작동하지 않던 버그를 수정했습니다" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "PipeWire 다음 릴리스 `0.3.44`를 지원" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "차단 목록에 추가" + +#, fuzzy +#~ msgid "Add Plugin" +#~ msgstr "플러그인 추가" + +#, fuzzy +#~ msgid "Format" +#~ msgstr "포멧" + +#, fuzzy +#~ msgid "Latency" +#~ msgstr "레이턴시" + +#, fuzzy +#~ msgid "idle" +#~ msgstr "유휴 상태" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 0000000..3c5557d --- /dev/null +++ b/po/meson.build @@ -0,0 +1,5 @@ +i18n_mod.gettext(meson.project_name(), + preset: 'glib' +) + +subdir('news') diff --git a/po/nb_NO.po b/po/nb_NO.po new file mode 100644 index 0000000..2af0f7b --- /dev/null +++ b/po/nb_NO.po @@ -0,0 +1,2667 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-25 14:18+0000\n" +"Last-Translator: Allan Nordhøy \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb_NO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Tonekontroll, kompressor og andre lydeffekter" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Lydeffekter for PipeWire-programmer" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "«Forhåndsinnstillinger»" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "Skru på/av dette programmet" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Påskrudd" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Forstum program" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Programlydstyrke" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Innstillinger" + +#: data/ui/application_window.ui:10 +#, fuzzy +msgid "_Manual" +msgstr "_Manuell" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Snarveier" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Tilbakestill innstillinger" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Om EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +#, fuzzy +msgid "Presets" +msgstr "Profiler" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Profilmeny" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Hovedmeny" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects-vindu" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Programliste" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "Tom liste" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Programnavn" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Mål" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Maksimum" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Referanse" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrert" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Tilbakestill historikk" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativ" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Inngang" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Utgang" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Tilbakestill" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Bruker" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Enhet" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Navn" + +#: data/ui/autoload_row.ui:64 +#, fuzzy +msgid "Profile" +msgstr "Profil" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Forhåndsinnstilling" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Fjern denne modellfilen" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Lytt" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "Tredje" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "Andre" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Mengde" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Overtoner" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Omfang" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Gulv" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Gulvverdi" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Lenke" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Programnavn" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Vis svartelistede programmer" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Svartelistede programmer" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Vis svartelistede programmer" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompressor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modus" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Nedover" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Oppover" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Kompresjonsmodus" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Tid" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Terskel" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Forhold" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Lavpass" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Ensartet" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Kilde" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Venstre" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Høyre" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Type" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +#: data/ui/compressor.ui:542 +#, fuzzy +msgid "Feed-back" +msgstr "Respons" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Ekstern" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Inndataenhet" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Høypass" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frekvens" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Av" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/okt" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/okt" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/okt" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Høypassfilter-modus" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Høypassfilter-frekvens" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Lavpassfilter-modus" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Forsterkning" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "V" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Venstre kanal" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "H" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Høyre kanal" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Impulser" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Kombiner" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Stereobredde" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "Log-skala" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Takt" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Varighet" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "Første kjerne" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "Andre kjerne" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Utdata-filnavn" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "Kombinert kjernenavn" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Søk" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Forvalg" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Oppdagelse" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Bred" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Reduksjon" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Rammestørrelse" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Filterlengde" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bånd" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Beregn frekvenser" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonans" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Bredde" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kvalitet" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Tilgang" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Beskrivelse" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Fjern denne modellfilen" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/okt lavpass" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/okt lavpass" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/okt lavpass" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/okt høypass" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/okt høypass" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/okt høypass" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/okt båndpass" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/okt båndpass" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/okt båndpass" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct båndsperre" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct båndsperre" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct båndsperre" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Ekstern" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Oversampling" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Ingen" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Utgangslydstyrke" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Klassisk" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Moderne" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Bånd 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Bånd 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Bånd 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Bånd 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Bånd 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Bånd 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Bånd 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Bånd 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Bånd-start" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Bånd-slutt" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Maks. reduksjon" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Generelt" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Bruk forvalgt inngang" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "Egendefinert inngangsenhet" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Bruk forvalgt utgang" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "Egendefinert utgangsenhet" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Tjenerinfo" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Biblioteksversjon" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Utgangsenheter" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Utgangsforhåndsinnstillinger" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Opprett tilknytning" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Inngangsenheter" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Inngangsforhåndsinnstillinger" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Moduler" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Modulliste" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Klienter" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Klientliste" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Testsignal" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Tilstand" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Påskrudd" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Egenskaper" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanaler" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Begge" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Begge kanaler" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Bølgeform" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Sinusbølge" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Hvit støy" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Kvalitet" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Format" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Profiler" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Oppdagelse" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktaver" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Fjern denne modellfilen" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Generelt" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Tjeneste" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Lyd" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Stil" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Ifør mørk drakt" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Form" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Bjelker" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Linjer" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Høyde" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Linjebredde" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Farge" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maksimum" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Opprett forhåndsinnstilling" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importer forhåndsinnstillinger" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Nytt inngangforhåndsinnstillingsnavn" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Inngangforhåndsinnstillingsliste" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Høyfrekvensdemping" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Romstørrelse" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Lite" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Middels" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Stort" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Eksperimentelt" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Tor tom hall" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Diskotek" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importer modell" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modeller" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Aktiv modell" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Oversikt" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Lukk vinduet" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "Avslutt EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balanse" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Stereomodus" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inverter fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "" + +#: src/app_info.cpp:72 +#, fuzzy +msgid "Error" +msgstr "feil" + +#: src/app_info.cpp:74 +#, fuzzy +msgid "Unknown" +msgstr "ukjent" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Kanaler" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "" + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "" + +#: src/application.cpp:512 +#, fuzzy +msgid "Hide the Window." +msgstr "Skjul vinduet." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Vis tilgjengelige forhåndsinnstillinger." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Åpne" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Avbryt" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Opptakere" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Avspillere" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "uendelig" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Fjern" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Utgangsenhet" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "Importer modellfil" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +#, fuzzy +msgid "Bass Enhancer" +msgstr "Balanse" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "" + +#: src/tags_plugin_name.cpp:29 +#, fuzzy +msgid "Convolver" +msgstr "Convolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "" + +#: src/tags_plugin_name.cpp:34 +#, fuzzy +msgid "Echo Canceller" +msgstr "Avbryt" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "" + +#: src/tags_plugin_name.cpp:41 +#, fuzzy +msgid "Maximizer" +msgstr "Maksimum" + +#: src/tags_plugin_name.cpp:42 +#, fuzzy +msgid "Multiband Compressor" +msgstr "Kompressor" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Tjenerinfo" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Reduksjon" + +#: src/tags_plugin_name.cpp:47 +#, fuzzy +msgid "Stereo Tools" +msgstr "Stereomodus" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects er et avansert lydmanipuleringsverktøy. Det har tonekontroll, " +#~ "lydbegrenser, kompressor og etterklangsverktøy, for å nevne noe. En " +#~ "innebygd spektrumsanalysator komplementerer disse." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects er etterfølgeren til PulseEffects. EasyEffects støtter også " +#~ "Pipewire sin lydtjener. PulseAudio-brukere bør bruke PulseEffects " +#~ "istedenfor." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Når EasyEffects startes, vil den huske alle innstillingene du gjorde i " +#~ "forrige økt. Det er også mulig å lagre innstillingene i ulike profiler." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "Hovedsiden som viser to programmer der det spilles av lyd" + +#, fuzzy +#~ msgid "The convolver page showing audio controls" +#~ msgstr "Convolver-siden viser lydkontroller" + +#~ msgid "This release adds the following features:" +#~ msgstr "Denne utgaven bringer følgende funksjoner:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bånd 1" + +#, fuzzy +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Dette er en ny innstilling som lar brukeren velge tidsavbrudd for " +#~ "inaktivitet. Når ingen klient spiller" + +#, fuzzy +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "til eller tar opp fra enhetene vil filterne avlenkes etter at " +#~ "tidsavbruddsperioden er nådd. Dette gjøres for å ikke" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "kaste bort prosessorkraft på å behandle stillhet." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Denne utgaven fikser følgende feil:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Denne utgaven fikser følgende funksjon:" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Støtte for neste PipeWire-utgave `0.3.44`" + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "`tbb`-biblioteket er en ny avhengighet" + +#~ msgid "Updated Chinese translation." +#~ msgstr "Oppdatert kinesisk oversettelse." + +#~ msgid "Updated Italian translation." +#~ msgstr "Oppdatert italiensk oversettelse." + +#~ msgid "gtkmm3 was replaced by gtkmm4" +#~ msgstr "gtkmm3 erstattes av gtkmm4" + +#, fuzzy +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "GStreamer erstattet av systemspesifikke PipeWire-filtre." + +#~ msgid "Average" +#~ msgstr "Gjennomsnitt" + +#~ msgid "Use Default" +#~ msgstr "Bruk forvalg" + +#~ msgid "Remove this plugin" +#~ msgstr "Fjern dette programtillegget" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktiv modell" + +#~ msgid "Add to Blocklist" +#~ msgstr "Legg til på svarteliste" + +#~ msgid "Blocklist" +#~ msgstr "Svarteliste" + +#~ msgid "Add Plugin" +#~ msgstr "Legg til programtillegg" + +#~ msgid "Speakers" +#~ msgstr "Høyttalere" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Programtillegg" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Påskrudd" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Påskrudd" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Forsinkelse" + +#~ msgid "Faster" +#~ msgstr "Raskere" diff --git a/po/news/LINGUAS b/po/news/LINGUAS new file mode 100644 index 0000000..a8c50ba --- /dev/null +++ b/po/news/LINGUAS @@ -0,0 +1,27 @@ +cs +de +fr_FR +gl +hr +id_ID +it_IT +nl +pl +pt_BR +ru +sk +sv +da +nb_NO +es_MX +es_CO +tr +zh_CN +ro +es_VE +ja +ko +es +km +af +th \ No newline at end of file diff --git a/po/news/POTFILES.in b/po/news/POTFILES.in new file mode 100644 index 0000000..3f56702 --- /dev/null +++ b/po/news/POTFILES.in @@ -0,0 +1 @@ +data/com.github.wwmm.easyeffects.metainfo.xml.in \ No newline at end of file diff --git a/po/news/af.po b/po/news/af.po new file mode 100644 index 0000000..541c5f4 --- /dev/null +++ b/po/news/af.po @@ -0,0 +1,747 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-05-23 08:18+0000\n" +"Last-Translator: Ebert Matthee \n" +"Language-Team: Afrikaans \n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.13-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Oudio-effekte vir PipeWire toepassing" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects is 'n gevorederde oudio manipilasie toepassing. Dit sluit in 'n " +"gelykmaker, beperker, kompressor en nagalminstrument, net om 'n paar te " +"noem. Om die te komplementeer is daar ook 'n spektrum ontleder." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects is die opvolger van PulseEffects. EasyEffects ondersteun slegs " +"PipeWire se klankbediener. PulseAudio-gebruikers moet eerder PulseEffects " +"gebruik." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Omdat EasyEffects die verstek PipeWire-klankbediener gebruik, sal dit met " +"die meeste, indien nie alle toepassings wat jy gebruik nie, werk. Alle " +"ondersteunde toepassings word in die hoofskerm aangebied, waar elkeen " +"individueel geaktiveer kan word." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" diff --git a/po/news/cs.po b/po/news/cs.po new file mode 100644 index 0000000..184b037 --- /dev/null +++ b/po/news/cs.po @@ -0,0 +1,2845 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Pavel Fric , 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2019-08-25 21:29+0200\n" +"Last-Translator: Mlocik97\n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 19.04.0\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +#, fuzzy +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Zvukové efekty pro programy využívající PulseAudio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +#, fuzzy +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects je pokročilým nástrojem pro zacházení se zvukem. Obsahuje mimo " +"jiné nástroj ekvalizéru, omezovače (limiter), kompresoru a dozvuku. Na " +"doplnění je také vestavěn analyzátor spektra." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +#, fuzzy +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Protože EasyEffects používá výchozí zvukový server PulseAudio, bude pracovat " +"s většinou, pokud už ne se všemi vámi používanými programy. Všechny " +"podporované programy jsou ukázány v hlavním okně, v němž je možné kterýkoli " +"z nich ručně povolit." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +#, fuzzy +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Vedle práce se zvukovým výstupem dokáže EasyEffects efekty použít i na " +"vstupní zařízení, jako je mikrofon. To je užitečné mimo jiné při nahrávání " +"zvuku, pracuje to ale dobře během hlasových hovorů." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +#, fuzzy +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Když je EasyEffects spuštěn, zapamatuje si příhodně nastavení používané při " +"posledním sezení. Je možné i uložení všech nynějších nastavení jako profilů." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Pásma" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ekvalizér, kompresor a jiné zvukové efekty" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "" +#~ "omezovač (limiter);kompresor;dozvuk;ekvalizér;automatická hlasitost;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Přednastavení\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Povolit" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "_Preferences" +#~ msgstr "Referenční Signál" + +#, fuzzy +#~ msgid "_Shortcuts" +#~ msgstr "Jednorázové" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Přednastavení" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Přednastavení" + +#~ msgid "Global Bypass" +#~ msgstr "Přepustení" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Prázdné zdi" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Programy" + +#~ msgid "Target" +#~ msgstr "Cíl" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Největší zesílení" + +#, fuzzy +#~ msgid "Reference" +#~ msgstr "Referenční Signál" + +#~ msgid "Momentary" +#~ msgstr "Chvilkové" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Jednorázové" + +#~ msgid "Integrated" +#~ msgstr "Sjednocené" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Použít přechod" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Použít přechod" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Použít přechod" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Použít přechod" + +#, fuzzy +#~ msgid "Reset History" +#~ msgstr "Vymazat Historii" + +#~ msgid "Relative" +#~ msgstr "Relativní" + +#~ msgid "Range" +#~ msgstr "Rozsah" + +#~ msgid "Loudness" +#~ msgstr "Hlasitost" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Vstupní zesílení" + +#~ msgid "Input" +#~ msgstr "Vstup" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Vstupní zesílení" + +#~ msgid "Output" +#~ msgstr "Výstup" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Vstupní zesílení" + +#~ msgid "Reset" +#~ msgstr "Vrátit na výchozí" + +#, fuzzy +#~ msgid "Device" +#~ msgstr "Omezovač vstupu" + +#~ msgid "Name" +#~ msgstr "Název" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Přednastavení" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Odstranit tento soubor s přednastavením" + +#~ msgid "Listen" +#~ msgstr "Poslouchat" + +#~ msgid "Blend Harmonics" +#~ msgstr "Míchat harmonické kmity" + +#~ msgid "3rd" +#~ msgstr "3." + +#~ msgid "2nd" +#~ msgstr "2." + +#~ msgid "Amount" +#~ msgstr "Množství" + +#~ msgid "Harmonics" +#~ msgstr "Harmonické kmity" + +#~ msgid "Scope" +#~ msgstr "Rozsah" + +#~ msgid "Floor" +#~ msgstr "Spodní mez" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Spodní mez" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Zobrazit Aplikace z Blocklistu na Hlavní Kartě" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Zobrazit Aplikace z Blocklistu na Hlavní Kartě" + +#~ msgid "Compressor" +#~ msgstr "Kompresor" + +#~ msgid "Mode" +#~ msgstr "Režim" + +#~ msgid "Downward" +#~ msgstr "Dolů" + +#~ msgid "Upward" +#~ msgstr "Nahoru" + +#~ msgid "Compression Mode" +#~ msgstr "Kompresní režim" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Práh" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Množství" + +#~ msgid "Attack" +#~ msgstr "Náběh" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Ve skutečném čase" + +#~ msgid "Threshold" +#~ msgstr "Práh" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Náběh" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Práh" + +#~ msgid "Release" +#~ msgstr "Uvolnění" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Uvolnění" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Relativní Práh Uvolnění" + +#~ msgid "Ratio" +#~ msgstr "Poměr" + +#~ msgid "Knee" +#~ msgstr "Přechod" + +#~ msgid "Makeup" +#~ msgstr "Pozvednutí" + +#~ msgid "Sidechain" +#~ msgstr "Postranní řetězec" + +#~ msgid "Peak" +#~ msgstr "Vrchol" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Dolní pásmo" + +#~ msgid "Uniform" +#~ msgstr "Rovnoměrný" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Postranní řetězec" + +#~ msgid "Source" +#~ msgstr "Zdroj" + +#~ msgid "Middle" +#~ msgstr "Střední" + +#~ msgid "Side" +#~ msgstr "Postranní" + +#~ msgid "Left" +#~ msgstr "Levý" + +#~ msgid "Right" +#~ msgstr "Pravý" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Postranní řetězec" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Feed-forward" +#~ msgstr "Kanál-vpřed" + +#~ msgid "Feed-back" +#~ msgstr "Kanál-zpět" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Postranní řetězec" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Omezovač vstupu" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Předzesílení" + +#~ msgid "Reactivity" +#~ msgstr "Reaktivita" + +#~ msgid "Lookahead" +#~ msgstr "Výhled" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Postranní řetězec" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Horní pásmo" + +#~ msgid "Frequency" +#~ msgstr "Kmitočet" + +#~ msgid "Off" +#~ msgstr "Vypnuto" + +#, fuzzy +#~ msgid "12 dB/oct" +#~ msgstr "Nízká pásmová propust 12 dB/okt" + +#, fuzzy +#~ msgid "24 dB/oct" +#~ msgstr "Nízká pásmová propust 24 dB/okt" + +#, fuzzy +#~ msgid "36 dB/oct" +#~ msgstr "Nízká pásmová propust 36 dB/okt" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Vysokopásmový filtr" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Tlumení vysokého kmitočtu" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Vysokopásmový filtr" + +#~ msgid "Gain" +#~ msgstr "Zesílení" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Sklon" + +#~ msgid "Curve" +#~ msgstr "Křivka" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Kanály" + +#~ msgid "R" +#~ msgstr "P" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Rozdělit kanály" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Odpověď impulsu" + +#~ msgid "Stereo Width" +#~ msgstr "Šířka sterea" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Log Scale" +#~ msgstr "Měřítko" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Automatické zesílení" + +#~ msgid "Rate" +#~ msgstr "Kmitočet" + +#~ msgid "Samples" +#~ msgstr "Vzorky" + +#~ msgid "Duration" +#~ msgstr "Doba trvání" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Odpověď impulsu" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Výstup" + +#~ msgid "Import Impulse" +#~ msgstr "Zavést impuls" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Zavést soubor s impulsem" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Zavést soubor s impulsem" + +#~ msgid "Default" +#~ msgstr "Výchozí" + +#~ msgid "Cutoff" +#~ msgstr "Useknutí" + +#~ msgid "Feed" +#~ msgstr "Kanál" + +#~ msgid "Bypass" +#~ msgstr "Překlenutí" + +#~ msgid "Mute" +#~ msgstr "Ztlumit" + +#~ msgid "Detection" +#~ msgstr "Zjištění" + +#~ msgid "Wide" +#~ msgstr "Rozšířit" + +#~ msgid "Split" +#~ msgstr "Rozdělit" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Rozdělit" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Kmitočet" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Vrchol" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Kmitočet" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Zesílení" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Kmitočet" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Úroveň" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Kmitočet" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Vrchol Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Kmitočet" + +#~ msgid "Laxity" +#~ msgstr "Nedbalost" + +#~ msgid "Detected" +#~ msgstr "Zjištěno" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Snížení" + +#~ msgid "Frame Size" +#~ msgstr "Rozměry rámečku" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filtr" + +#~ msgid "Bands" +#~ msgstr "Pásma" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "Split Channels" +#~ msgstr "Rozdělit kanály" + +#~ msgid "Flat Response" +#~ msgstr "Uhladit" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Vypočítat Kmitočty" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "APO Přednastavení" + +#~ msgid "Bell" +#~ msgstr "Zvonek" + +#~ msgid "High Pass" +#~ msgstr "Horní pásmo" + +#~ msgid "High Shelf" +#~ msgstr "Horní práh" + +#~ msgid "Low Pass" +#~ msgstr "Dolní pásmo" + +#~ msgid "Low Shelf" +#~ msgstr "Dolní práh" + +#~ msgid "Notch" +#~ msgstr "Vroubek" + +#~ msgid "Resonance" +#~ msgstr "Rezonance" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Dolní pásmo" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Překlenutí" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Pásma" + +#~ msgid "Slope" +#~ msgstr "Sklon" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Sklon" + +#~ msgid "Width" +#~ msgstr "Šířka" + +#~ msgid "Quality" +#~ msgstr "Jakost" + +#~ msgid "Solo" +#~ msgstr "Sólo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Strop" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Zjištění" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Odstranit tento soubor s přednastavením" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "Nízká pásmová propust 12 dB/okt" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "Nízká pásmová propust 24 dB/okt" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "Nízká pásmová propust 36 dB/okt" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "Vysoká pásmová propust 12 dB/okt" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "Vysoká pásmová propust 24 dB/okt" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "Vysoká pásmová propust 36 dB/okt" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "Pásmová propustnost 6 dB/okt" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "Pásmová propustnost 12 dB/okt" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "Pásmová propustnost 18 dB/okt" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "Vyloučení pásma 6 dB/okt" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "Vyloučení pásma 12 dB/okt" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "Vyloučení pásma 18 dB/okt" + +#~ msgid "Inertia" +#~ msgstr "Setrvačnost" + +#~ msgid "Gate" +#~ msgstr "Brána" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Uvolnění" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Sjednocené" + +#~ msgid "Gating" +#~ msgstr "Hradlo" + +#~ msgid "Oversampling" +#~ msgstr "Převzorkování" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Rozšířit" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Rozšířit" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Šířka čáry" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Šířka čáry" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Šířka čáry" + +#~ msgid "None" +#~ msgstr "Žádný" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Předzesílení" + +#~ msgid "Stereo Link" +#~ msgstr "Spojení sterea" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Postranní řetězec" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Automatické Úrovně" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Automatické Úrovně" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Automatické Úrovně" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Automatické Úrovně" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Levý" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Pravý" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Postranní řetězec" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Postranní řetězec" + +#~ msgid "Standard" +#~ msgstr "Standardní" + +#~ msgid "Flat" +#~ msgstr "Rovný" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Rozměry rámečku" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Výstup" + +#~ msgid "Ceiling" +#~ msgstr "Strop" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Zavést impuls" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Režim" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Postranní řetězec" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Kompresní režim" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Překlenutí" + +#, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Postranní řetězec" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Nízkopropustný Mód Filtru" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Nízkopropustný Mód Filtru" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Vysokopásmový filtr" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Vysokopásmový filtr" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Vstupní zesílení" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Křivka" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Rozdělit" + +#~ msgid "Split 1/2" +#~ msgstr "Rozdělit 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Kmitočet" + +#~ msgid "Split 2/3" +#~ msgstr "Rozdělit 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Kmitočet" + +#~ msgid "Split 3/4" +#~ msgstr "Rozdělit 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Kmitočet" + +#~ msgid "Sub Band" +#~ msgstr "Spodní pásmo" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Překlenutí" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Zmenšení zesílení" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Náběh" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Uvolnění" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Práh" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Pozvednutí" + +#~ msgid "Max Reduction" +#~ msgstr "Snížení" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Zmenšení zesílení" + +#~ msgid "Low Band" +#~ msgstr "Nízké pásmo" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Překlenutí" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Zmenšení zesílení" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Náběh" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Uvolnění" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Práh" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Pozvednutí" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Zmenšení zesílení" + +#~ msgid "Mid Band" +#~ msgstr "Střední pásmo" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Překlenutí" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Zmenšení zesílení" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Náběh" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Uvolnění" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Práh" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Pozvednutí" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Zmenšení zesílení" + +#~ msgid "High Band" +#~ msgstr "Vysoké pásmo" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Překlenutí" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Zmenšení zesílení" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Náběh" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Uvolnění" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Práh" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Pozvednutí" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Zmenšení zesílení" + +#~ msgid "General" +#~ msgstr "Obecné" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Použít Výchozí" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Omezovač vstupu" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Použít Výchozí" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Vstupní zesílení" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Dozvuk" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Verze" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Verze" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Vzorkování" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Minimální Kmitočet" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Největší zesílení" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Výchozí zeslabení" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Vstupní zesílení" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Výstupní přednastavení:" + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Výstupní přednastavení:" + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Omezovač vstupu" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Vstupní přednastavení:" + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Vstupní přednastavení:" + +#~ msgid "Modules" +#~ msgstr "Moduly" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Moduly" + +#~ msgid "Clients" +#~ msgstr "Klienti" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Klienti" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Zkušební signály" + +#~ msgid "State" +#~ msgstr "Stav" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Povolit" + +#~ msgid "Channels" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Sinusová tabulka" + +#~ msgid "White Noise" +#~ msgstr "Bílý šum" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Horní práh" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Jakost" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formát" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Přednastavení" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Křehkost" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Zjištění" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Komprese" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Softclip" + +#~ msgid "Cents" +#~ msgstr "Centy" + +#~ msgid "Semitones" +#~ msgstr "Půltóny" + +#~ msgid "Octaves" +#~ msgstr "Oktávy" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Odstranit tento soubor s přednastavením" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Vstupní efekty" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "Obecné" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Omezovač vstupu" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Zpracovat všechny výstupy" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Zpracovat všechny vstupy" + +#~ msgid "Use Dark Theme" +#~ msgstr "Použít tmavý vzhled" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Spektrum" + +#~ msgid "Bars" +#~ msgstr "Pruhy" + +#~ msgid "Lines" +#~ msgstr "Čáry" + +#~ msgid "Points" +#~ msgstr "Body" + +#~ msgid "Height" +#~ msgstr "Výška" + +#~ msgid "Line Width" +#~ msgstr "Šířka čáry" + +#~ msgid "Fill" +#~ msgstr "Výplň" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Kmitočet" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Nejvýše" + +#~ msgid "Maximum" +#~ msgstr "Nejvýše" + +#~ msgid "Load" +#~ msgstr "Načíst" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Uložit nynější nastavení do tohoto souboru s přednastavením" + +#~ msgid "Remove this preset file" +#~ msgstr "Odstranit tento soubor s přednastavením" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Výstupní přednastavení:" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Vytvořit přednastavení" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Zavést přednastavení" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Výstupní přednastavení:" + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Výstupní přednastavení:" + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Vstupní přednastavení:" + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Vstupní přednastavení:" + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Vstupní přednastavení:" + +#~ msgid "High Frequency Damping" +#~ msgstr "Tlumení vysokého kmitočtu" + +#~ msgid "Room Size" +#~ msgstr "Velikost prostoru" + +#~ msgid "Small" +#~ msgstr "Malý" + +#~ msgid "Medium" +#~ msgstr "Střední" + +#~ msgid "Large" +#~ msgstr "Velký" + +#~ msgid "Tunnel" +#~ msgstr "Chodba" + +#~ msgid "Large/smooth" +#~ msgstr "Velký/plynulý" + +#~ msgid "Experimental" +#~ msgstr "Pokusný" + +#~ msgid "Diffusion" +#~ msgstr "Rozptylování" + +#~ msgid "Pre Delay" +#~ msgstr "Předzpoždění" + +#~ msgid "Decay Time" +#~ msgstr "Čas dozvuku" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Množství" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Úroveň cíle" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Množství" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Úroveň" + +#~ msgid "Bass Cut" +#~ msgstr "Ořezání hloubek" + +#~ msgid "Treble Cut" +#~ msgstr "Ořezání výšek" + +#~ msgid "Ambience" +#~ msgstr "Okolní prostředí" + +#~ msgid "Empty Walls" +#~ msgstr "Prázdné zdi" + +#~ msgid "Room" +#~ msgstr "Pokoj" + +#~ msgid "Large Empty Hall" +#~ msgstr "Velký prázdný sál" + +#~ msgid "Disco" +#~ msgstr "Disko" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Velký obsazený sál" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Zavést impuls" + +#, fuzzy +#~ msgid "Models" +#~ msgstr "Režim" + +#, fuzzy +#~ msgid "Standard Model" +#~ msgstr "Standardní" + +#, fuzzy +#~ msgid "Active Model" +#~ msgstr "Agresivní režim" + +#, fuzzy +#~ msgid "Overview" +#~ msgstr "Omezovač vstupu" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Vynulovat EasyEffects." + +#, fuzzy +#~ msgid "Close the Window" +#~ msgstr "Skrýt Okno" + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Vyvážení" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Vyvážení" + +#~ msgid "Softclip" +#~ msgstr "Softclip" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Softclip" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matrice sterea" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LP > LP (výchozí stereo)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LP > SS (stereo ke střední straně)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "SS > LP (střední strana ke stereu)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LP > LL (mono levý kanál)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LP > PP (mono pravý kanál)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LP > L+P (mono součet L+P)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (stereo obrácení kanálů)" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Základ sterea" + +#~ msgid "Invert Phase" +#~ msgstr "Obrátit fázi" + +#~ msgid "Side Level" +#~ msgstr "Postranní úroveň" + +#~ msgid "Side Balance" +#~ msgstr "Postranní vyvážení" + +#~ msgid "Middle Level" +#~ msgstr "Prostřední úroveň" + +#~ msgid "Middle Panorama" +#~ msgstr "Prostřední panorama" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Vstupní zesílení" + +#~ msgid "Delay L/R" +#~ msgstr "Zpoždění L/P" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Zpoždění L/P" + +#~ msgid "Stereo Base" +#~ msgstr "Základ sterea" + +#~ msgid "Stereo Phase" +#~ msgstr "Fáze sterea" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "Hradlo" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Kanály" + +#~ msgid "Output Presets: " +#~ msgstr "Výstupní přednastavení:" + +#~ msgid "Input Presets: " +#~ msgstr "Vstupní přednastavení:" + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Zvukové efekty pro programy využívající PulseAudio" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Ukončit EasyEffects. Užitečné, když běži ve služebním režimu." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Nahrát přednastavení. Příklad: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Vynulovat EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Skrýt Okno" + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Globální propuštění. 1 pro zapnutí, 2 pro vypnutí, 3 pro získání stavu" + +#~ msgid "Show available presets." +#~ msgstr "Ukázat dostupná přednastavení." + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Zavést soubor s impulsem" + +#~ msgid "Import Impulse File" +#~ msgstr "Zavést soubor s impulsem" + +#~ msgid "Open" +#~ msgstr "Otevřít" + +#~ msgid "Cancel" +#~ msgstr "Zrušit" + +#~ msgid "Impulse Response" +#~ msgstr "Odpověď impulsu" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Odpověď impulsu" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Zavést impuls" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Zavést soubor s impulsem" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Nepodařilo se nahrát soubor s impulsem" + +#, fuzzy +#~ msgid "Recorders" +#~ msgstr "Okraj" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "nekonečno" + +#, fuzzy +#~ msgid "Import APO Preset File" +#~ msgstr "Zavést APO přednastavení" + +#, fuzzy +#~ msgid "APO Presets" +#~ msgstr "APO Přednastavení" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Odstranit tento soubor s přednastavením" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Vstupní zesílení" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Zavést přednastavení" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "Zavést soubor s impulsem" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Agresivní režim" + +#~ msgid "Bass Enhancer" +#~ msgstr "Zlepšovač hloubek" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Hlasitost" + +#~ msgid "Convolver" +#~ msgstr "Svinovač" + +#~ msgid "Crossfeed" +#~ msgstr "Prolínání kanálů" + +#~ msgid "Crystalizer" +#~ msgstr "Krystalizátor" + +#~ msgid "Deesser" +#~ msgstr "Odstraňovač sykotu" + +#~ msgid "Delay" +#~ msgstr "Zpoždění" + +#~ msgid "Echo Canceller" +#~ msgstr "Potlačovač echa" + +#~ msgid "Equalizer" +#~ msgstr "Ekvalizér" + +#~ msgid "Exciter" +#~ msgstr "Zvukový budič" + +#~ msgid "Filter" +#~ msgstr "Filtr" + +#~ msgid "Limiter" +#~ msgstr "Omezovač" + +#~ msgid "Maximizer" +#~ msgstr "Zvětšovač" + +#~ msgid "Multiband Compressor" +#~ msgstr "Vícepásmový kompresor" + +#~ msgid "Multiband Gate" +#~ msgstr "Vícepásmová brána" + +#~ msgid "Pitch" +#~ msgstr "Výška tónu" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Dozvuk" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Zmenšení zesílení" + +#~ msgid "Stereo Tools" +#~ msgstr "Nástroje sterea" + +#~ msgid "Average" +#~ msgstr "Průměr" + +#~ msgid "Failed" +#~ msgstr "Nepodařilo se" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Použít Výchozí" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Odstranit tento soubor s přednastavením" + +#~ msgid "Import Presets" +#~ msgstr "Zavést přednastavení" + +#~ msgid "Start Service at Login" +#~ msgstr "Spustit službu při přihlášení" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Agresivní režim" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Černá listina" + +#~ msgid "Blocklist" +#~ msgstr "Černá listina" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibrace mikrofonu" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Povolit" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Povolit" + +#~ msgid "Format" +#~ msgstr "Formát" + +#~ msgid "Latency" +#~ msgstr "Prodleva" + +#~ msgid "Faster" +#~ msgstr "Rychleji" + +#~ msgid "Preserve Formant" +#~ msgstr "Zachovat složku rozhodující o barvě zvuku" + +#~ msgid "Cmoy" +#~ msgstr "Sluchátkový zesilovač (CMoy)" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Vstupní zesílení" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Spodní mez" + +#~ msgid "Output Effects" +#~ msgstr "Výstupní efekty" + +#~ msgid "Settings" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Doba trvání" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Zkušební signály" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Zkušební signály" + +#~ msgid "Show Spectrum" +#~ msgstr "Ukázat spektrum" + +#~ msgid "Border" +#~ msgstr "Okraj" + +#~ msgid "Spectrum Type" +#~ msgstr "Typ spektra" + +#~ msgid "Spectrum Color" +#~ msgstr "Barva spektra" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Agresivní režim" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Zmenšení zesílení" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Váhy" + +#~ msgid "Dry" +#~ msgstr "Zkušební" + +#~ msgid "S/C Level" +#~ msgstr "Úroveň S/C" + +#~ msgid "Short Term" +#~ msgstr "Jednorázové" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Dolní pásmo" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Nastavit hlasitost a zapnout/vypnout efekty" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Zahrnuje ekvalizér s vestavěnými přednastaveními" + +#~ msgid "Input Limiter" +#~ msgstr "Omezovač vstupu" + +#~ msgid "Calibration" +#~ msgstr "Kalibrace" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatické Vyhlazení" + +#~ msgid "Limit" +#~ msgstr "Omezení" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Tlumení" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Zvukové efekty pro programy využívající PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Zvukové efekty pro programy PulseAudio" + +#~ msgid "Help" +#~ msgstr "Nápověda" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrace mikrofonu" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automaticky použít toto přednastavení, když je nyní používané zařízení " +#~ "zapojeno v systému" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Verze" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Čtverec" + +#~ msgid "Saw" +#~ msgstr "Pila" + +#~ msgid "Triangle" +#~ msgstr "Trojúhelník" + +#~ msgid "Silence" +#~ msgstr "Ticho" + +#~ msgid "Pink Noise" +#~ msgstr "Růžový šum" + +#~ msgid "Ticks" +#~ msgstr "Tiknutí" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussovský šum" + +#~ msgid "Red Noise" +#~ msgstr "Červený šum" + +#~ msgid "Blue Noise" +#~ msgstr "Modrý šum" + +#~ msgid "Violet Noise" +#~ msgstr "Fialový šum" + +#~ msgid "Volume" +#~ msgstr "Hlasitost" + +#~ msgid "Window" +#~ msgstr "Okno" + +#~ msgid "Measure Noise" +#~ msgstr "Změřit šum" + +#~ msgid "Subtract Noise" +#~ msgstr "Odečíst šum" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Provided by" +#~ msgstr "Poskytuje" + +#~ msgid "Extended Filter" +#~ msgstr "Rozšířený filtr" + +#~ msgid "Low" +#~ msgstr "Nízký" + +#~ msgid "Moderate" +#~ msgstr "Střední" + +#~ msgid "High" +#~ msgstr "Vysoký" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Úroveň potlačení" + +#~ msgid "Delay Agnostic" +#~ msgstr "Zpozdit absolutní" + +#~ msgid "Very High" +#~ msgstr "Velmi vysoký" + +#~ msgid "Noise Suppressor" +#~ msgstr "Potlačovač šumu" + +#~ msgid "Adaptive Digital" +#~ msgstr "Přizpůsobivý digitální" + +#~ msgid "Fixed Digital" +#~ msgstr "Pevný digitální" + +#~ msgid "Gain Controller" +#~ msgstr "Ovladač zesílení" + +#~ msgid "Detection Likelihood" +#~ msgstr "Pravděpodobnost zjištění" + +#~ msgid "Very Low" +#~ msgstr "Velmi nízká" + +#~ msgid "Voice Detector" +#~ msgstr "Zjišťovatel hlasu" + +#~ msgid "Use Custom Color" +#~ msgstr "Použít vlastní barvu" + +#~ msgid "Use Gradient" +#~ msgstr "Použít přechod" + +#~ msgid "Gradient Color" +#~ msgstr "Barva přechodu" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Zavést soubor s odpovědí impulsu" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Vybrat soubor s odpovědí impulsu" + +#~ msgid "Aggressive Mode" +#~ msgstr "Agresivní režim" + +#~ msgid "Before" +#~ msgstr "Před" + +#~ msgid "After" +#~ msgstr "Po" + +#~ msgid "Loudness Range" +#~ msgstr "Rozsah hlasitosti" + +#~ msgid "Loudness Compensator" +#~ msgstr "Kompenzace Hlasitosti" + +#~ msgid "Apply" +#~ msgstr "Použít" + +#~ msgid "Based on" +#~ msgstr "Na základě" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Výchozí rychlost vzorkování" + +#~ msgid "Default Source" +#~ msgstr "Výchozí zdroj" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "File" +#~ msgstr "Soubor" + +#~ msgid "Configuration" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Based on a" +#~ msgstr "Na základě" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Spočítat kmitočty" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Nastavení" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "APO Přednastavení" + +#~ msgid "Auto Gain" +#~ msgstr "Automatické zesílení" + +#~ msgid "Detect Silence" +#~ msgstr "Zjištění Ticha" + +#~ msgid "Muted" +#~ msgstr "Ztlumeno" + +#~ msgid "Distant Headphones" +#~ msgstr "Vzdálená sluchátka" + +#~ msgid "Priority Type" +#~ msgstr "Typ přednosti" + +#~ msgid "Niceness" +#~ msgstr "Přívětivost" + +#~ msgid "Priority" +#~ msgstr "Přednost" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Minimální Kmitočet" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Maximální Kmitočet" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "Znovu připojit mikrofon pro použití změn provedených v Blocklistu" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "Restartovat přehrávač pro použití změn provedených v Blocklistu" + +#~ msgid "About" +#~ msgstr "O programu" + +#~ msgid "Protocol" +#~ msgstr "Protokol" + +#~ msgid "Default Sample Format" +#~ msgstr "Výchozí formát vzorku" + +#~ msgid "Channel Mapping" +#~ msgstr "Přiřazení kanálu" + +#~ msgid "Resamplers" +#~ msgstr "Převzorkovače" + +#~ msgid "Buffer" +#~ msgstr "Vyrovnávací paměť" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Ekvalizér - výstup" + +#~ msgid "Block Size" +#~ msgstr "Velikost Bloku" + +#~ msgid "Resampler" +#~ msgstr "Převzorkovač" + +#~ msgid "paused" +#~ msgstr "Pozastaveno" + +#~ msgid "playing" +#~ msgstr "Přehrává se" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "Import APO Presets" +#~ msgstr "Zavést APO Přednastavení" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Zmenšení zesílení" + +#~ msgid "Exponent" +#~ msgstr "Exponent" diff --git a/po/news/da.po b/po/news/da.po new file mode 100644 index 0000000..798d6ae --- /dev/null +++ b/po/news/da.po @@ -0,0 +1,2552 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-05-23 08:18+0000\n" +"Last-Translator: Grooty12 \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.13-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "Easyeffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Lyd Effekter for PipeWire Applikationer" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects er en advanceret lydmanipuleringsværktøj. Det inkluderer en " +"equalizer, begrænser, kompressor og et efterklangsværktøj, for blot at nævne " +"nogle få. For at supplere til dette er der også en indbygget " +"spektrumanalysator." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects er efterfølgeren til PulseEffects. EasyEffects understøtter kun " +"PipeWires lydserver. PulseAudio brugere bør i stedet bruge PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Da EasyEffects bruger PipeWires standard lydserver, vil den virke med de " +"fleste, hvis ikke alle, progammer du bruger." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Ud over manipulering af lydudgange, er EasyEffects i stand til at anvende " +"effekter på en input-enhed, f.eks. en mikrofon. Dette er f.eks. nyttigt i " +"lydoptagelse, men det virker også godt under samtaler." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Når EasyEffects startes, husker den automatisk den konfiguration, der blev " +"brugt i sidste session. Det er også muligt at gemme alle nuværende " +"indstillinger som profiler." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "Hovedsiden viser to lydoutput apps" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "Basforstærkersiden, der viser lydkontroller" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "Convolver-siden, der viser lydkontrolelementer" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"Autogain-pluginet giver nu brugeren mulighed for at vælge, hvilken af de tre " +"lydstyrker der bruges til at beregne den geometriske" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"Autogain-pluginet tillader nu at indstille den maksimale historik og bruger " +"ikke længere `libebur128` histogramtilstand." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"EasyEffects-ikonet er blevet opdateret på en måde, der burde gøre det " +"synligt i QT-skriveborde." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "Denne udgivelse tilføjer følgende funktioner:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bånd 1" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Der er en ny indstilling, der giver brugeren mulighed for at vælge en " +#~ "inaktivitetstimeout for pipelinen. Når ingen klient spiller" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "til eller optagelse fra vores enheder vil filtrene blive fjernet, når " +#~ "timeout er nået. Dette gøres for at sikre" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "vi spilder ikke CPU-kraft på at processerer tavshed." + +#~ msgid "mean." +#~ msgstr "middel." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Dette bør undgå de tilfælde, hvor den 'Integrerede' lydstyrke bliver " +#~ "hængende for evigt i den samme værdi." + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Equalizer, Kompressor og Andre Lydeffekter" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "begrænser;kompressor;efterklang;equalizer;autovolume;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Forindstillinger\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Aktiveret" + +#~ msgid "Mute Application" +#~ msgstr "Stum applikation" + +#~ msgid "Application Volume" +#~ msgstr "Applikationvolume" + +#~ msgid "_Preferences" +#~ msgstr "_Præferencer" + +#~ msgid "_Manual" +#~ msgstr "_Manuel" + +#~ msgid "_Reset Settings" +#~ msgstr "_Nulstil Indstillinger" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Om EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Forindstillinger" + +#~ msgid "Presets Menu" +#~ msgstr "Forindstillinger Menu" + +#~ msgid "Global Bypass" +#~ msgstr "Global Omgåelse" + +#~ msgid "Primary Menu" +#~ msgstr "Primær Menu" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects-vindue" + +#~ msgid "Applications List" +#~ msgstr "Applikationsliste" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Tomme Vægge" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Applikationvolume" + +#~ msgid "Target" +#~ msgstr "Mål" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Maksimum" + +#~ msgid "Reference" +#~ msgstr "Hanvisning" + +#~ msgid "Momentary" +#~ msgstr "Øjeblikkelig" + +#~ msgid "Short-Term" +#~ msgstr "Kortfristet" + +#~ msgid "Integrated" +#~ msgstr "Integreret" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Geometrisk Gennemsnit" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Geometrisk Gennemsnit" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Geometrisk Gennemsnit" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Geometrisk Gennemsnit" + +#~ msgid "Reset History" +#~ msgstr "Nustil historie" + +#~ msgid "Relative" +#~ msgstr "Relativ" + +#~ msgid "Range" +#~ msgstr "Rækkevidde" + +#~ msgid "Loudness" +#~ msgstr "Hørestyrke" + +#~ msgid "Output Gain" +#~ msgstr "Udgangsforstærkning" + +#~ msgid "Input" +#~ msgstr "Indgang" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Plugin-Indgangsforstærkning" + +#~ msgid "Output" +#~ msgstr "Udgang" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Plugin-Udgangsforstærkning" + +#~ msgid "Reset" +#~ msgstr "Nustil" + +#~ msgid "Using" +#~ msgstr "Bruger" + +#~ msgid "Device" +#~ msgstr "Enhed" + +#~ msgid "Name" +#~ msgstr "Navn" + +#~ msgid "Profile" +#~ msgstr "Profil" + +#~ msgid "Preset" +#~ msgstr "Forindstilling" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Fjern Autoindlæst Forudindstilling" + +#~ msgid "Listen" +#~ msgstr "Lyt" + +#~ msgid "Blend Harmonics" +#~ msgstr "Bland Harmonik" + +#~ msgid "3rd" +#~ msgstr "Tredje" + +#~ msgid "2nd" +#~ msgstr "Anden" + +#~ msgid "Amount" +#~ msgstr "Mængde" + +#~ msgid "Harmonics" +#~ msgstr "Harmonik" + +#~ msgid "Scope" +#~ msgstr "Omfang" + +#~ msgid "Floor" +#~ msgstr "Gulv" + +#~ msgid "Floor Value" +#~ msgstr "Gulvværdi" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Applikationvolume" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Liste over Blokerede Applikationer" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Liste over Blokerede Applikationer" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Liste over Blokerede Applikationer" + +#~ msgid "Compressor" +#~ msgstr "Kompressor" + +#~ msgid "Mode" +#~ msgstr "Tilstand" + +#~ msgid "Downward" +#~ msgstr "Nedadrettet" + +#~ msgid "Upward" +#~ msgstr "Opadrettet" + +#~ msgid "Boosting" +#~ msgstr "Øge" + +#~ msgid "Compression Mode" +#~ msgstr "Kompressortilstand" + +#~ msgid "Boost Threshold" +#~ msgstr "Øg Grænseværdi" + +#~ msgid "Boost Amount" +#~ msgstr "Øgningsbeløb" + +#~ msgid "Attack" +#~ msgstr "Angreb" + +#~ msgid "Time" +#~ msgstr "Tid" + +#~ msgid "Threshold" +#~ msgstr "Grænseværdi" + +#~ msgid "Attack Time" +#~ msgstr "Angrebstid" + +#~ msgid "Attack Threshold" +#~ msgstr "Angreb Grænseværdi" + +#~ msgid "Release" +#~ msgstr "Frigør" + +#~ msgid "Release Time" +#~ msgstr "Frigøringstid" + +#~ msgid "Release Threshold" +#~ msgstr "Grænseværdi af Frigivelse" + +#~ msgid "Ratio" +#~ msgstr "Forhold" + +#~ msgid "Knee" +#~ msgstr "Knæ" + +#~ msgid "Makeup" +#~ msgstr "Makeup" + +#~ msgid "Sidechain" +#~ msgstr "Sidekæde" + +#~ msgid "Peak" +#~ msgstr "Top" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Lavpas" + +#~ msgid "Uniform" +#~ msgstr "Ensartet" + +#~ msgid "Sidechain Mode" +#~ msgstr "Sidekæde-tilstand" + +#~ msgid "Source" +#~ msgstr "Kilde" + +#~ msgid "Middle" +#~ msgstr "Midte" + +#~ msgid "Side" +#~ msgstr "Side" + +#~ msgid "Left" +#~ msgstr "Venstre" + +#~ msgid "Right" +#~ msgstr "Højre" + +#~ msgid "Sidechain Source" +#~ msgstr "Sidekæde Kilde" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Feed-forward" +#~ msgstr "Fremadrettet" + +#~ msgid "Feed-back" +#~ msgstr "Tilbagemelding" + +#~ msgid "External" +#~ msgstr "Ekstern" + +#~ msgid "Sidechain Type" +#~ msgstr "Sidekæde Type" + +#~ msgid "Input Device" +#~ msgstr "Input-enhed" + +#~ msgid "PreAmplification" +#~ msgstr "Forforstærkning" + +#~ msgid "Reactivity" +#~ msgstr "Reaktivitet" + +#~ msgid "Lookahead" +#~ msgstr "Fremadskuen" + +#~ msgid "Sidechain Filters" +#~ msgstr "Sidekæde Filter" + +#~ msgid "High-Pass" +#~ msgstr "Højpas" + +#~ msgid "Frequency" +#~ msgstr "Frekvens" + +#~ msgid "Off" +#~ msgstr "Slukket" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Højpasfiltertilstand" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Højpasfilterfrekvens" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Lavpasfiltertilstand" + +#~ msgid "Gain" +#~ msgstr "Gain" + +#~ msgid "Envelope" +#~ msgstr "Konvolut" + +#~ msgid "Curve" +#~ msgstr "Kurve" + +#~ msgid "L" +#~ msgstr "L" + +#~ msgid "Left Channel" +#~ msgstr "Venstre Kanal" + +#~ msgid "R" +#~ msgstr "R" + +#~ msgid "Right Channel" +#~ msgstr "Højre Kanal" + +#~ msgid "Impulses" +#~ msgstr "Impulser" + +#~ msgid "Combine" +#~ msgstr "Kombiner" + +#~ msgid "Stereo Width" +#~ msgstr "Stereo-bredde" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#~ msgid "Rate" +#~ msgstr "Rate" + +#~ msgid "Samples" +#~ msgstr "Prøver" + +#~ msgid "Duration" +#~ msgstr "Varighed" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "Kombiner Impulsresponser" + +#~ msgid "First Kernel" +#~ msgstr "Første Kerne" + +#~ msgid "Second Kernel" +#~ msgstr "Anden Kerne" + +#~ msgid "Output File Name" +#~ msgstr "Udgang Filnavn" + +#~ msgid "Combined Kernel Name" +#~ msgstr "Kombineret Kernenavn" + +#~ msgid "Import Impulse" +#~ msgstr "Import Impulser" + +#~ msgid "Search" +#~ msgstr "Søg" + +#~ msgid "Search Impulse File" +#~ msgstr "Søg Impulsfiler" + +#~ msgid "Impulse Files List" +#~ msgstr "Impulsfiler liste" + +#~ msgid "Default" +#~ msgstr "Standard" + +#~ msgid "Cutoff" +#~ msgstr "Afskæring" + +#~ msgid "Feed" +#~ msgstr "Foder" + +#~ msgid "Bypass" +#~ msgstr "Omgåelse" + +#~ msgid "Mute" +#~ msgstr "Stum" + +#~ msgid "Detection" +#~ msgstr "Opsporing" + +#~ msgid "Wide" +#~ msgstr "Bred" + +#~ msgid "Split" +#~ msgstr "Opdeling" + +#~ msgid "F1 Split" +#~ msgstr "F1 Opdeling" + +#~ msgid "Frequency 1 Split" +#~ msgstr "Frekvens 1 Opdeling" + +#~ msgid "F2 Peak" +#~ msgstr "F2 Top" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frekvens 2 Top" + +#~ msgid "F1 Gain" +#~ msgstr "F1 Gain" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frekvens 1 Gain" + +#~ msgid "F2 Level" +#~ msgstr "F2 Niveau" + +#~ msgid "Frequency 2 Level" +#~ msgstr "Frekvens 2 Niveau" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2 Top Q" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frekvens 2 Top Q" + +#~ msgid "Laxity" +#~ msgstr "Lakshed" + +#~ msgid "Detected" +#~ msgstr "Detektet" + +#~ msgid "Reduction" +#~ msgstr "Reduktion" + +#~ msgid "Frame Size" +#~ msgstr "Rammestørrelse" + +#~ msgid "Filter Length" +#~ msgstr "Filterlængde" + +#~ msgid "Bands" +#~ msgstr "Bånd" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Opdel kanaler" + +#~ msgid "Flat Response" +#~ msgstr "Flad Respons" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Beregn Frekvenser" + +#~ msgid "Load APO Preset" +#~ msgstr "Indlæs APO-Forindstilling" + +#~ msgid "Bell" +#~ msgstr "Klokke" + +#~ msgid "High Pass" +#~ msgstr "Højpas" + +#~ msgid "High Shelf" +#~ msgstr "Høj Hylde" + +#~ msgid "Low Pass" +#~ msgstr "Lavpas" + +#~ msgid "Low Shelf" +#~ msgstr "Lav Hylde" + +#~ msgid "Notch" +#~ msgstr "Indhak" + +#~ msgid "Resonance" +#~ msgstr "Resonans" + +#~ msgid "All Pass" +#~ msgstr "Alle Pas" + +#~ msgid "Band Type" +#~ msgstr "Båndtype" + +#~ msgid "Band Mode" +#~ msgstr "Båndtilstand" + +#~ msgid "Slope" +#~ msgstr "Hældning" + +#~ msgid "Band Slope" +#~ msgstr "Båndhældning" + +#~ msgid "Width" +#~ msgstr "Bredde" + +#~ msgid "Quality" +#~ msgstr "Kvalitet" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#~ msgid "Ceil" +#~ msgstr "Ceil" + +#~ msgid "Ceil Value" +#~ msgstr "Ceil Værdi" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Adgang" + +#~ msgid "Description" +#~ msgstr "Beskrivelse" + +#~ msgid "Remove this model file" +#~ msgstr "Fjern denne modelfil" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Lavpas" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Lavpas" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Lavpas" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Højpas" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Højpas" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Højpas" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Båndpas" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Båndpas" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Båndpas" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Båndafvise" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Båndafvise" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct Båndafvise" + +#~ msgid "Inertia" +#~ msgstr "Inerti" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Frigøringstid" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Ekstern" + +#~ msgid "Gating" +#~ msgstr "Gating" + +#~ msgid "Oversampling" +#~ msgstr "Oversampling" + +#~ msgid "Dither" +#~ msgstr "Tøve" + +#~ msgid "Herm Thin" +#~ msgstr "Herm Tynd" + +#~ msgid "Herm Wide" +#~ msgstr "Herm Bred" + +#~ msgid "Herm Tail" +#~ msgstr "Herm Hale" + +#~ msgid "Herm Duck" +#~ msgstr "Herm Duck" + +#~ msgid "Exp Thin" +#~ msgstr "Exp Tynd" + +#~ msgid "Exp Wide" +#~ msgstr "Exp Bred" + +#~ msgid "Exp Tail" +#~ msgstr "Exp Hale" + +#~ msgid "Exp Duck" +#~ msgstr "Exp Duck" + +#~ msgid "Line Thin" +#~ msgstr "Linje Tynd" + +#~ msgid "Line Wide" +#~ msgstr "Linje Bred" + +#~ msgid "Line Tail" +#~ msgstr "Linje Hale" + +#~ msgid "Line Duck" +#~ msgstr "Linje Duck" + +#~ msgid "None" +#~ msgstr "Ingen" + +#~ msgid "Half x2(2L)" +#~ msgstr "Halv x2(2L)" + +#~ msgid "Half x2(3L)" +#~ msgstr "Halv x2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "Halv x3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "Halv x3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "Halv x4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "Halv x4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "Halv x6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "Halv x6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "Halv x8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "Halv x8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "Fuld x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "Fuld x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "Fuld x3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "Fuld x3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "Fuld x4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "Fuld x4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "Fuld x6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "Fuld x6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "Fuld x8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "Fuld x8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "SC PræAmp" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Sidekæde Forforstærkning" + +#~ msgid "Boost" +#~ msgstr "Boost" + +#~ msgid "Stereo Link" +#~ msgstr "Stereoforbindelse" + +#~ msgid "External Sidechain" +#~ msgstr "Ekstern Sidekæde" + +#~ msgid "External Sidechain Source" +#~ msgstr "Ekstern Sidekæde Kilde" + +#~ msgid "Auto Leveling" +#~ msgstr "Auto-Nivellering" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "Auto-Nivelleringsangreb" + +#~ msgid "Auto Leveling Release" +#~ msgstr "Auto-Nivelleringsudløse" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "Auto-Nivellering Knæ" + +#~ msgid "Gain Left" +#~ msgstr "Gain Venstre" + +#~ msgid "Gain Right" +#~ msgstr "Gain Højre" + +#~ msgid "Sidechain Left" +#~ msgstr "Sidekæde Venstre" + +#~ msgid "Sidechain Right" +#~ msgstr "Sidekæde Højre" + +#~ msgid "Standard" +#~ msgstr "Standard" + +#~ msgid "Flat" +#~ msgstr "Flad" + +#~ msgid "FFT Size" +#~ msgstr "FFT Størrelse" + +#~ msgid "Fast Fourier Transform Size" +#~ msgstr "Fast Fourier Transform Størrelse" + +#~ msgid "Output Volume" +#~ msgstr "Udgang Volume" + +#~ msgid "Ceiling" +#~ msgstr "Loft" + +#~ msgid "Operating Mode" +#~ msgstr "Driftstilstand" + +#~ msgid "Classic" +#~ msgstr "Klassik" + +#~ msgid "Modern" +#~ msgstr "Moderne" + +#~ msgid "Sidechain Boost" +#~ msgstr "Sidekæde Boost" + +#~ msgid "Pink BT" +#~ msgstr "Pink BT" + +#~ msgid "Pink MT" +#~ msgstr "Pinkt MT" + +#~ msgid "Brown BT" +#~ msgstr "Brun BT" + +#~ msgid "Brown MT" +#~ msgstr "Brun MT" + +#~ msgid "Bands List" +#~ msgstr "Båndsliste" + +#~ msgid "Band 1" +#~ msgstr "Bånd 1" + +#~ msgid "Band 2" +#~ msgstr "Bånd 2" + +#~ msgid "Band 3" +#~ msgstr "Bånd 3" + +#~ msgid "Band 4" +#~ msgstr "Bånd 4" + +#~ msgid "Band 5" +#~ msgstr "Bånd 5" + +#~ msgid "Band 6" +#~ msgstr "Bånd 6" + +#~ msgid "Band 7" +#~ msgstr "Bånd 7" + +#~ msgid "Band 8" +#~ msgstr "Bånd 8" + +#~ msgid "Band Start" +#~ msgstr "Bånd start" + +#~ msgid "Band End" +#~ msgstr "Bånd Slut" + +#~ msgid "Band Compression Mode" +#~ msgstr "Bånd Kompressionstilstand" + +#~ msgid "Band Bypass" +#~ msgstr "Bånd Omgåelse" + +#~ msgid "Band Sidechain Options" +#~ msgstr "Bånd Sidekæde Valgmuligheder" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Lavskåret Filter" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Lavskåret Filter Frekvens" + +#~ msgid "High-Cut Filter" +#~ msgstr "Højskåret Filter" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Højskåret Filter Frekvens" + +#~ msgid "PreAmp" +#~ msgstr "PræAmp" + +#~ msgid "Band Gain" +#~ msgstr "Bånd Gain" + +#~ msgid "Band Envelope" +#~ msgstr "Bånd Konvolut" + +#~ msgid "Band Curve" +#~ msgstr "Bånd Kurve" + +#~ msgid "Split Mode" +#~ msgstr "Opdelt Tilstand" + +#~ msgid "Split 1/2" +#~ msgstr "Opdel 1/2" + +#~ msgid "Split Frequency 1" +#~ msgstr "Opdelt Frekvens 1" + +#~ msgid "Split 2/3" +#~ msgstr "Opdel 2/3" + +#~ msgid "Split Frequency 2" +#~ msgstr "Opdel Frekvens 2" + +#~ msgid "Split 3/4" +#~ msgstr "Opdelt 3/4" + +#~ msgid "Split Frequency 3" +#~ msgstr "Opdel Frekvens 3" + +#~ msgid "Sub Band" +#~ msgstr "Underbånd" + +#~ msgid "Band 1 Bypass" +#~ msgstr "Bånd 1 Omgåelse" + +#~ msgid "Band 1 Solo" +#~ msgstr "Bånd 1 Solo" + +#~ msgid "Band 1 Detection" +#~ msgstr "Bånd 1 Opsporing" + +#~ msgid "Band 1 Attack" +#~ msgstr "Bånd 1 Angreb" + +#~ msgid "Band 1 Release" +#~ msgstr "Bånd 1 Frigivelse" + +#~ msgid "Band 1 Threshold" +#~ msgstr "Bånd 1 Grænseværdi" + +#~ msgid "Band 1 Ratio" +#~ msgstr "Bånd 1 Forhold" + +#~ msgid "Band 1 Knee" +#~ msgstr "Bånd 1 Knæ" + +#~ msgid "Band 1 Makeup" +#~ msgstr "Bånd 1 Makeup" + +#~ msgid "Max Reduction" +#~ msgstr "Max Reduktion" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Bånd 1 Max Reduktion" + +#~ msgid "Low Band" +#~ msgstr "Lavbånd" + +#~ msgid "Band 2 Bypass" +#~ msgstr "Bånd 2 Omgåelse" + +#~ msgid "Band 2 Solo" +#~ msgstr "Bånd 2 Solo" + +#~ msgid "Band 2 Detection" +#~ msgstr "Bånd 2 Opsporing" + +#~ msgid "Band 2 Attack" +#~ msgstr "Bånd 2 Angreb" + +#~ msgid "Band 2 Release" +#~ msgstr "Bånd 2 Frigivelse" + +#~ msgid "Band 2 Threshold" +#~ msgstr "Bånd 2 Grænseværdi" + +#~ msgid "Band 2 Ratio" +#~ msgstr "Bånd 2 Forhold" + +#~ msgid "Band 2 Knee" +#~ msgstr "Bånd 2 Knæ" + +#~ msgid "Band 2 Makeup" +#~ msgstr "Bånd 2 Makeup" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Bånd 2 Max Reduktion" + +#~ msgid "Mid Band" +#~ msgstr "Mellembånd" + +#~ msgid "Band 3 Bypass" +#~ msgstr "Bånd 3 Omgåelse" + +#~ msgid "Band 3 Solo" +#~ msgstr "Bånd 3 Solo" + +#~ msgid "Band 3 Detection" +#~ msgstr "Bånd 3 Opsporing" + +#~ msgid "Band 3 Attack" +#~ msgstr "Bånd 3 Angreb" + +#~ msgid "Band 3 Release" +#~ msgstr "Bånd 3 Frigivelse" + +#~ msgid "Band 3 Threshold" +#~ msgstr "Bånd 3 Grænseværdi" + +#~ msgid "Band 3 Ratio" +#~ msgstr "Bånd 3 Forhold" + +#~ msgid "Band 3 Knee" +#~ msgstr "Bånd 3 Knæ" + +#~ msgid "Band 3 Makeup" +#~ msgstr "Bånd 3 Makeup" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Bånd 3 Max Reduktion" + +#~ msgid "High Band" +#~ msgstr "Højbånd" + +#~ msgid "Band 4 Bypass" +#~ msgstr "Bånd 4 Omgåelse" + +#~ msgid "Band 4 Solo" +#~ msgstr "Bånd 4 Solo" + +#~ msgid "Band 4 Detection" +#~ msgstr "Bånd 4 Opsporing" + +#~ msgid "Band 4 Attack" +#~ msgstr "Bånd 4 Angreb" + +#~ msgid "Band 4 Release" +#~ msgstr "Bånd 4 Frigivelse" + +#~ msgid "Band 4 Threshold" +#~ msgstr "Bånd 4 Grænseværdi" + +#~ msgid "Band 4 Ratio" +#~ msgstr "Bånd 4 Forhold" + +#~ msgid "Band 4 Knee" +#~ msgstr "Bånd 4 Knæ" + +#~ msgid "Band 4 Makeup" +#~ msgstr "Bånd 4 Makeup" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Bånd 4 Max Reduktion" + +#~ msgid "General" +#~ msgstr "Generelt" + +#~ msgid "Use Default Input" +#~ msgstr "Brug Standard Input" + +#~ msgid "Custom Input Device" +#~ msgstr "Brugerdefineret Input-Enhed" + +#~ msgid "Use Default Output" +#~ msgstr "Brug Standard Udgang" + +#~ msgid "Custom Output Device" +#~ msgstr "Brugerdefineret Udgangs-Enhed" + +#~ msgid "Server Information" +#~ msgstr "Serveroplysninger" + +#~ msgid "Header Version" +#~ msgstr "Overskriftsversion" + +#~ msgid "Library Version" +#~ msgstr "Bibloteksversion" + +#~ msgid "Sampling Rate" +#~ msgstr "Prøvetagningsfrekvens" + +#~ msgid "Minimum Quantum" +#~ msgstr "Minimumsantal" + +#~ msgid "Maximum Quantum" +#~ msgstr "Maksimumantal" + +#~ msgid "Default Quantum" +#~ msgstr "Standard Antal" + +#~ msgid "Presets Autoloading" +#~ msgstr "Forindstil Autolæsning" + +#~ msgid "Output Devices" +#~ msgstr "Udgangsenheder" + +#~ msgid "Output Presets" +#~ msgstr "Udgangsforindstillinger" + +#~ msgid "Create Association" +#~ msgstr "Skab Associering" + +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "Tilføj Autolæsning Udgangsforindstilling" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Udgangsautolæsingsforindstillinger Liste" + +#~ msgid "Input Devices" +#~ msgstr "Indgangsenheder" + +#~ msgid "Input Presets" +#~ msgstr "Indgangsforindstillinger" + +#~ msgid "Add Autoloading Input Preset" +#~ msgstr "Tilføj Autolæsning Indgangsforindstilling" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Indgangsautolæsingsforindstillinger Liste" + +#~ msgid "Modules" +#~ msgstr "Moduler" + +#~ msgid "Modules List" +#~ msgstr "Liste over moduler" + +#~ msgid "Clients" +#~ msgstr "Klienter" + +#~ msgid "Clients List" +#~ msgstr "Liste over klienter" + +#~ msgid "Test Signal" +#~ msgstr "Test-Signal" + +#~ msgid "State" +#~ msgstr "Tilstand" + +#~ msgid "Enabled" +#~ msgstr "Aktiveret" + +#~ msgid "Channels" +#~ msgstr "Kanaler" + +#~ msgid "Both" +#~ msgstr "Begge" + +#~ msgid "Both Channels" +#~ msgstr "Begge Kanaler" + +#~ msgid "Waveform" +#~ msgstr "Bølgeform" + +#~ msgid "Sine Wave" +#~ msgstr "Sinusbølge" + +#~ msgid "White Noise" +#~ msgstr "Hvid Støj" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Høj Hylde" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Kvalitet" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formater" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Forindstilling" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Sprødhed" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Opsporing" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Softclip" + +#~ msgid "Cents" +#~ msgstr "Cent" + +#~ msgid "Semitones" +#~ msgstr "Semitoner" + +#~ msgid "Octaves" +#~ msgstr "Oktaver" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Fjern denne modelfil" + +#~ msgid "Used Plugins List" +#~ msgstr "Liste over Anvendte Plugins" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "Easyeffects" + +#~ msgid "Search Plugin" +#~ msgstr "Søgeplugin" + +#~ msgid "Plugins List" +#~ msgstr "Plugins-liste" + +#~ msgid "_General" +#~ msgstr "_Generelt" + +#~ msgid "Service" +#~ msgstr "Tjeneste" + +#, fuzzy +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Luk helt ved vinduelukning" + +#~ msgid "Audio" +#~ msgstr "Lyd" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Behandle Alle Udgange" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Behandle Alle Indgange" + +#~ msgid "Use Cubic Volume" +#~ msgstr "Brug Kubisk Volumen" + +#~ msgid "Style" +#~ msgstr "Stil" + +#~ msgid "Use Dark Theme" +#~ msgstr "Brug Mørk-tilstand" + +#~ msgid "_Spectrum" +#~ msgstr "_Spektrum" + +#~ msgid "Shape" +#~ msgstr "Form" + +#~ msgid "Bars" +#~ msgstr "Bjælke" + +#~ msgid "Lines" +#~ msgstr "Linjer" + +#~ msgid "Points" +#~ msgstr "Point" + +#~ msgid "Height" +#~ msgstr "Højde" + +#~ msgid "Line Width" +#~ msgstr "Linje Bredde" + +#~ msgid "Fill" +#~ msgstr "Fil" + +#~ msgid "Show Bars Border" +#~ msgstr "Vis Bjælkerammer" + +#~ msgid "Color" +#~ msgstr "Farve" + +#~ msgid "Lines and Bars" +#~ msgstr "Linjer og Bjælker" + +#~ msgid "Axis Labels" +#~ msgstr "Etiketter på akserne" + +#~ msgid "Frequency Range" +#~ msgstr "Frekvens Rækkevidde" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maksimum" + +#~ msgid "Load" +#~ msgstr "Indlæs" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Gem nuværende indstillinger til denne forindstillingsfil" + +#~ msgid "Remove this preset file" +#~ msgstr "Fjern denne forindstillingsfil" + +#~ msgid "New Output Preset Name" +#~ msgstr "Ny Udgangsforindstillingsnavn" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Opret Forindstilling" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Import Forudindstilling" + +#~ msgid "Search Output Preset" +#~ msgstr "Søg Udgangeforindstillinger" + +#~ msgid "Output Presets List" +#~ msgstr "Liste af Udgangeforindstillinger" + +#~ msgid "New Input Preset Name" +#~ msgstr "Ny Indgangsforindstillingsnavn" + +#~ msgid "Search Input Preset" +#~ msgstr "Søg Indgangsforindstillinger" + +#~ msgid "Input Presets List" +#~ msgstr "Liste Af Indgangsforindstillinger" + +#~ msgid "High Frequency Damping" +#~ msgstr "Højfrekvensdæmpning" + +#~ msgid "Room Size" +#~ msgstr "Størrelse af Værelse" + +#~ msgid "Small" +#~ msgstr "Lille" + +#~ msgid "Medium" +#~ msgstr "Mellem" + +#~ msgid "Large" +#~ msgstr "Stor" + +#~ msgid "Tunnel" +#~ msgstr "Tunnel" + +#~ msgid "Large/smooth" +#~ msgstr "Stor/Glat" + +#~ msgid "Experimental" +#~ msgstr "Eksperimentelt" + +#~ msgid "Diffusion" +#~ msgstr "Diffusion" + +#~ msgid "Pre Delay" +#~ msgstr "Pre Forsinkelse" + +#~ msgid "Decay Time" +#~ msgstr "Nedbrydningstime" + +#~ msgid "Wet Amount" +#~ msgstr "Vådmængde" + +#~ msgid "Wet Level" +#~ msgstr "Vådniveau" + +#~ msgid "Dry Amount" +#~ msgstr "Tørmængde" + +#~ msgid "Dry Level" +#~ msgstr "TørNiveau" + +#~ msgid "Bass Cut" +#~ msgstr "Bas Snit" + +#~ msgid "Treble Cut" +#~ msgstr "Diskant Snit" + +#~ msgid "Ambience" +#~ msgstr "Stemning" + +#~ msgid "Empty Walls" +#~ msgstr "Tomme Vægge" + +#~ msgid "Room" +#~ msgstr "Værelse" + +#~ msgid "Large Empty Hall" +#~ msgstr "Stor Tom Hal" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Large Optaget Hal" + +#~ msgid "Import Model" +#~ msgstr "Import Model" + +#~ msgid "Models" +#~ msgstr "Modeller" + +#~ msgid "Standard Model" +#~ msgstr "Standard Model" + +#~ msgid "RNNoise Models List" +#~ msgstr "Liste over RNNoise-Modeller" + +#~ msgid "Active Model" +#~ msgstr "Aktive Modeller" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Standard RNNoise-Model" + +#, fuzzy +#~ msgid "Overview" +#~ msgstr "Tjeneste" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Nustli EasyEffects." + +#, fuzzy +#~ msgid "Close the Window" +#~ msgstr "Skjul Vinduet." + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "_Om EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#~ msgid "Input Balance" +#~ msgstr "Indgangsbalance" + +#~ msgid "Softclip" +#~ msgstr "Softclip" + +#~ msgid "Softclip Level" +#~ msgstr "Softclip-niveau" + +#~ msgid "Stereo Matrix" +#~ msgstr "Stereo-matrix" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Stereo-Standard)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Stereo til Midtside)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Midtside til Stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (Mono Venstre Kanal)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Mono Højre Kanal)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Mono sum L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Stereo Vend Kanaler)" + +#~ msgid "Stereo Mode" +#~ msgstr "Stereotilstand" + +#~ msgid "Invert Phase" +#~ msgstr "Inverter Fase" + +#~ msgid "Side Level" +#~ msgstr "Side Niveau" + +#~ msgid "Side Balance" +#~ msgstr "Side Balance" + +#~ msgid "Middle Level" +#~ msgstr "Mellem-Niveau" + +#~ msgid "Middle Panorama" +#~ msgstr "Mellem-Panorama" + +#~ msgid "Output Balance" +#~ msgstr "Udgangsbalance" + +#~ msgid "Delay L/R" +#~ msgstr "Forsinkelse L/R" + +#~ msgid "Delay Left Right" +#~ msgstr "Forsinkelse Venstre Højre" + +#~ msgid "Stereo Base" +#~ msgstr "Stereo-Base" + +#~ msgid "Stereo Phase" +#~ msgstr "Stereo-Fase" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "Gating" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Kanaler" + +#~ msgid "Output Presets: " +#~ msgstr "Udgangsforindstillinger:" + +#~ msgid "Input Presets: " +#~ msgstr "Indgangsforindstillinger:" + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Lydeffekter for PipeWire applikationer" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Afslut EasyEffects. Nyttigt når man kører i servicetilstand." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Indlæs en forindstilling. Eksempelvis: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Nustli EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Skjul Vinduet." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Global Omgåelse. 1 for at aktivere, 2 for at deaktivere og 3 for at få " +#~ "status" + +#~ msgid "Show available presets." +#~ msgstr "Vis tilgængelige forindstillinger." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Impulsfiler liste" + +#~ msgid "Import Impulse File" +#~ msgstr "Import Impulsfil" + +#~ msgid "Open" +#~ msgstr "Åben" + +#~ msgid "Cancel" +#~ msgstr "Annuller" + +#~ msgid "Impulse Response" +#~ msgstr "Impulsrespons" + +#~ msgid "Load Impulse" +#~ msgstr "Indlæs Impuls" + +#~ msgid "Remove Impulse" +#~ msgstr "Fjern Impuls" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Impulsfiler liste" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Kunne Ikke Indlæse Impulsfilen" + +#~ msgid "Recorders" +#~ msgstr "Optagere" + +#~ msgid "Players" +#~ msgstr "Spillere" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "Easyeffects" + +#~ msgid "infinity" +#~ msgstr "uendelighed" + +#~ msgid "Import APO Preset File" +#~ msgstr "Import APO Forindstillingsfil" + +#~ msgid "APO Presets" +#~ msgstr "APO-Forindstillinger" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Fjern Autoindlæst Forudindstilling" + +#~ msgid "Remove" +#~ msgstr "Fjern" + +#~ msgid "Output Device" +#~ msgstr "Udgangsenhed" + +#~ msgid "Add" +#~ msgstr "Tilføj" + +#~ msgid "Import Preset" +#~ msgstr "Import Forudindstilling" + +#~ msgid "Import Model File" +#~ msgstr "Import Modelfil" + +#~ msgid "RNNoise Models" +#~ msgstr "RNNoise-modeller" + +#, fuzzy +#~ msgid "Bass Enhancer" +#~ msgstr "Balance" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Hørestyrke" + +#, fuzzy +#~ msgid "Delay" +#~ msgstr "Pre Forsinkelse" + +#, fuzzy +#~ msgid "Echo Canceller" +#~ msgstr "Annuller" + +#, fuzzy +#~ msgid "Filter" +#~ msgstr "Filterlængde" + +#, fuzzy +#~ msgid "Maximizer" +#~ msgstr "Maksimum" + +#, fuzzy +#~ msgid "Multiband Compressor" +#~ msgstr "Kompressor" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Serveroplysninger" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Reduktion" + +#, fuzzy +#~ msgid "Stereo Tools" +#~ msgstr "Stereotilstand" + +#~ msgid "Average" +#~ msgstr "Gennemsnitlig" + +#~ msgid "Failed" +#~ msgstr "Fejlede" + +#~ msgid "Use Default" +#~ msgstr "Brug Standard" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Fjern denne modelfil" + +#~ msgid "Import Presets" +#~ msgstr "Importer Forindstillinger" + +#~ msgid "Start Service at Login" +#~ msgstr "Start Tjeneste ved Login" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktive Modeller" + +#~ msgid "Add to Blocklist" +#~ msgstr "Tilføj til Blokliste" + +#~ msgid "Blocklist" +#~ msgstr "Blockliste" + +#~ msgid "Add Plugin" +#~ msgstr "Tilføj Plugin" + +#~ msgid "Speakers" +#~ msgstr "Højtalerer" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Plugins" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Aktiveret" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Aktiveret" + +#~ msgid "Format" +#~ msgstr "Formater" + +#~ msgid "Latency" +#~ msgstr "Forsinkelse" + +#~ msgid "Faster" +#~ msgstr "Hurtigere" + +#~ msgid "Preserve Formant" +#~ msgstr "Bevar Formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Player Name" +#~ msgstr "Spillernavn" + +#~ msgid "Show Blocklisted Players" +#~ msgstr "Vis Bloklistede Spillere" + +#~ msgid "RLC (BT)" +#~ msgstr "BLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "7bit" +#~ msgstr "7bit" + +#~ msgid "8bit" +#~ msgstr "8bit" + +#~ msgid "11bit" +#~ msgstr "11bit" + +#~ msgid "12bit" +#~ msgstr "12bit" + +#~ msgid "15bit" +#~ msgstr "15bit" + +#~ msgid "16bit" +#~ msgstr "16bit" + +#~ msgid "23bit" +#~ msgstr "23bit" + +#~ msgid "24bit" +#~ msgstr "24bit" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Output Channel" +#~ msgstr "Udgangskanal" + +#~ msgid "Channel" +#~ msgstr "Kanal" + +#~ msgid "Value" +#~ msgstr "Værdi" diff --git a/po/news/de.po b/po/news/de.po new file mode 100644 index 0000000..82ff4ea --- /dev/null +++ b/po/news/de.po @@ -0,0 +1,3106 @@ +# German translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the EasyEffects package. +# Bleuzen , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-15 14:19+0000\n" +"Last-Translator: Florian Schaupp \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Audio Effekte für PipeWire Anwendungen" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects ist ein fortgeschrittenes Audio-Manipulations-Tool. Es enthält " +"einen Equalizer, Limiter, Kompressor, einen Hall und viele weitere. Dies " +"wird zudem mit einem eingebauten Spektrumanalysator ergänzt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects ist der Nachfolger von PulseEffects. EasyEffects unterstützt nur " +"den Audioserver von PipeWire. PulseAudio-Nutzer sollte stattdessen " +"PulseEffects verwenden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Da EasyEffects den Standard PulseAudio Sound Server benutzt, funktioniert es " +"mit so ziemlich allen Anwendungen. Alle unterstützten Anwendungen werden im " +"Hauptfenster angezeigt, wo diese individuell ein-/ausgeschaltet werden " +"können." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Neben der Audiomanipulation des Ausgangs kann EasyEffects auch Effekte auf " +"Eingabegeräte, z.B. Mikrofone, anwenden. Dies ist sinnvoll für z.B. " +"Audioaufnahmen oder VOIP Anwendungen." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Wenn EasyEffects startet, stellt es die Konfiguration der letzten Sitzung " +"wieder her. Es ist auch möglich, die aktuellen Einstellungen als Profile zu " +"speichern." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "Die Hauptseite mit zwei Audioausgabe-Apps" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "Die Bassverstärkerseite mit den Audiosteuerelementen" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "Die Convolverseite mit den Audiosteuerelementen" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +#, fuzzy +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" +"Das Begrenzer Plugin verwendet jetzt das Begrenzer Plugin von Linux Studio " +"Plugins statt das von Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +#, fuzzy +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" +"Wenn jetzt Effekte einer Anwendung deaktiviert werden, setzen wir dessen " +"Ziel-Metadaten auf null. Dies ermöglicht der Medien Session" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +#, fuzzy +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" +"Es wurde eine neue Einstellungsmöglichkeit hinzugefügt. Diese erlaubt " +"EasyEffects überwachende Eingänge zu ignorieren" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "Der Code zum Anzeigen des Stream-Auflösungsformats wurde verbessert" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +#, fuzzy +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" +"Die rnnoise-Bibliothek ist jetzt optional. Dadurch sollten Paket-Maintainer " +"einfacher" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" +"In den Logs werden jetzt die Sourcecode-Zeilen angezeigt, welche die " +"Nachricht ausgelöst hat" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +#, fuzzy +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" +"Die \"Effekte aktivieren\" Checkbox im Fenster wurde nicht aktualisiert, " +"wenn Programme wie Pavucontrol" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" +"Ein Absturz-Problem wurde behoben, wenn der Verlauf der automatischen " +"Verstärkungsregelung verändert wurde." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "Absturz-Probleme durch pw-mididump wurden behoben" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "Die Benutzer-Oberfläche der Tonhöhe-Erweiterung wurde verbessert" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "Unser App-Symbol ist jetzt auch mit QT-basierten Desktops kompatibel" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" +"Unser Blocklist-Code berücksichtigt jetzt den `application.id` Tag, sofern " +"dieser gesetzt ist" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +#, fuzzy +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" +"Um Probleme beim Maus-Scrollen zu vermeiden, werden Einträge in der " +"Anwendungen-Liste jetzt unter `Spieler` angezeigt" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" +"Wenn keine Anwendungen verfügbar sind, wird in `Spieler` eine Nachricht dem " +"Nutzer angezeigt" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "Unzählige Übersetzungen aktualisiert" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +#, fuzzy +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" +"Es wurde ein Fehler behoben, der EasyEffects zum Absturz brachte, wenn die " +"Anzahl der angezeigten Punkte im Spektrum geändert wurde, während" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" +"Der angezeigte Pipeline-Latenz-Wert war in bestimmten Situationen falsch. " +"Dies wurde behoben." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"Das Autogain-Plugin erlaubt es dem Benutzer nun auszuwählen, welche der drei " +"Lautstärken für die Berechnung der geometrischen Werte verwendet werden " +"sollen" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"Das Autogain-Plugin erlaubt nun die Einstellung des maximalen Verlaufs und " +"verwendet nicht mehr den Histogramm-Modus `libebur128`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"Das EasyEffects-Symbol wurde aktualisiert, damit es auf QT-Desktops sichtbar " +"ist." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"Die Kommandozeilen-Option, welche den globalen `bypass`-Status " +"zurückliefert, funktioniert wieder." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Der Crossfeed-Filter sollte nun besser mit PipeWire's dynamischem Wechsel " +"der Latenz klarkommen. Unstetigkeiten in der Lautstärke sollten in diesen " +"Situationen nicht mehr auftreten." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Es wurde ein Fehler behoben, der verhinderte, dass Monomikrofone " +"ordnungsgemäß mit EasyEffects funktionierten" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Unterstützung für die nächste PipeWire Version '0.3.44'" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Der Autogain-Filter sollte nun besser mit den dynamischen Latenzschaltern " +"von PipeWire umgehen. Lautstärke-Sprünge sollten in diesen Situationen nicht " +"mehr auftreten." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Wir haben eine Option hinzugefügt, mit der die Lautstärke und die " +"Stummschaltung der virtuellen Geräte beim Start von EasyEffects " +"zurückgesetzt werden können. Das sollte in den Fällen helfen, in denen die " +"Geräte aus unbekannten Gründen vom Audioserver selbst stummgeschaltet werden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Computer in Bereitschaft werden nun besser unterstützt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Übersetzungen wurden aktualisiert" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Es wurde ein Fehler behohen, der die Anwendung zum Absturz brachte, wenn " +"versucht wurde, automatisch ein Profil ohne Voreinstellungen anzulegen." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"Es wurde ein Fehler behoben, der beim Setzen der Equalizer Flankensteilheit " +"(Q-Wert) auf `Null`die Anwendung zum Abstürzen brachte." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita wird verwendet in manchen Teilen unseres Fensters und um zwischen " +"dunklem und hellem Farbschema umzuschalten." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "Das Einstellungs-Menü wurde auf LibAdwaita-Komponenten umgebaut." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +#, fuzzy +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"Der Import von Equalizer APO Vorlagen wurde verbessert, sodass dieses nicht " +"mehr nur auf Glocken-Filter, sondern auch auf andere unterstützte angewendet " +"werden kann" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"Die `alle Einstellungen zurücksetzen`-Funktion sollte jetzt auch für Flatpak " +"funktionieren." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"Jetzt gibt es eine Möglichkeit das automatische Verstecken des Menüs zu " +"deaktivieren. Dies könnte bei einigen Problemen mit den GTK 4.0 Popover-" +"Menüs helfen." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"APO Voreinstellungen parsen ist jetzt robuster dank Komma als " +"Tausendertrennzeichen im mittleren Frequenzbereich." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"Die fmt Bibliothek ist eine neue Abhängigkeit; zumindest solange der C++ " +"Kompiler dies nicht unterstützt. Dies sollte in den kommenden Jahren der " +"Fall sein." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM und GLIBMM sind jetzt keine Abhängigkeiten mehr. Jetzt verwenden wir " +"GTK 4.0 direkt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"Jetzt ist es möglich Impulsantworten im Convolver zu kombinieren. Eine neue " +"Impuls-Datei wird generiert und sollte in der Impuls-Liste sichtbar sein." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"X-Achsen-Anzeige in unseren Graphen verbessert. Jetzt wird die Anzahl der " +"Beschriftungen dynamisch an die Fensterbreite angepasst." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"Die Dokumentation wurde um die neuen EasyEffects-Funktionen erweitert. " +"PulseEffects-Referenzen wurden entfernt. Ein Button zur Dokumentation wurde " +"dem Menü hinzugefügt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"Wenn ein Drehknopf einen Wertebereich außerhalb des möglichen Bereichs hat, " +"wird dieser jetzt an die Grenzen angepasst - statt den vorherigen Wert zu " +"verwenden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" +"Das Anwengungsfenster speichert sich jetzt den Maximiert-Status und stellt " +"diesen beim nächsten Öffnen wieder her." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "Die `tbb`-Bibliothek ist jetzt eine neue Abhängigkeit" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" +"Die Begrenzer- und Multiband-Kompressor-Plugins können jetzt optional eine " +"externe Sidechain verwenden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" +"Der Benutzer kann jetzt im Autogain-Plugin auswählen, welche Loudness als " +"Referenz zur Lautstärken-Korrektur verwendet werden soll." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" +"Das APO-Profile-Import-Feature des Equalizer-Plugins parst jetzt auch den " +"\"Pre Amplification\" Parameter." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" +"Kubische Lautstärke kann jetzt optional in den allgemeinen Einstellungen " +"aktiviert werden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" +"PipeWire Monitor-Streams werden jetzt von der Applikaitonsliste " +"ausgeschlossen." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +#, fuzzy +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "Hoffentlich sind jetzt Abstürze, wie in [1172] gemeldet, behoben." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "Ein Absturz durch die Spektrum-Anzeige wurde verindert." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"Pavucontrol wird jetzt nicht mehr in der Liste der Aufnahme-Anwendungen auf " +"nicht-englischen Systemen angezeigt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +#, fuzzy +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" +"Kompatibilität mit WirePlumber verbesser. Dies ist notwendig, um auf " +"Systemen zu laufen, die sich dazu entschieden haben, es statt" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" +"Die Ziel-Voreinstellung für Geräte in der Liste werden aktualisiert, wenn " +"ein Standardprofil hinterlegt wird. So kann die Profil-Voreinstellung " +"angepasst werden, ohne das es komplett neu angelegt werden muss." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +#, fuzzy +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" +"Das Laden von Standard-Voreinstellungen wurde wieder verändert. Jetzt " +"sollten mehr Geräte damit funktionieren. Für weitere Informationen siehe " +"Ticket [1051](" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" +"Wenn der Begrenzer oder Maximierer an der letzten Position der Plugin-Kette " +"stehen, werden weitere Plugins an der zweitletzen Position hinzugefügt, um " +"eventuelle Schäden an den Geräten durch zu hohe Laustärke zu vermeiden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" +"Wird eine Anwendung von der Blockliste entfernt, so werden die zuvor " +"aktivierten Einstellungen wiederhergestellt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" +"Manchmal wurde beim Entfernen von importierten Rauschreduzierungs-Modellen " +"das aktuelle Modell nicht korrekt gesetzt. Dies sollte nun behoben sein." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" +"Wenn Voreinstellungs-Datein in einem externen Editor verändert wurden, " +"konnten duplizierte Einträge nicht mehr in dem Menü für Voreinstellungen " +"angezeigt werden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" +"Jetzt wird die Blockliste korrekt gesetzt, wenn Voreinstellungen gewechselt " +"werden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" +"Jetzt wird der Status der Knopfes für die globalen Umleitung korrekt " +"aktualisiert, wenn die Plugin-Liste verändert wird." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" +"Manche Symbole, die auf der Plasma-Desktopoberfläche gefehlt haben, sollten " +"jetzt wieder angezeigt werden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "Die chinesische Übersetzung wurde aktualisiert." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "Die italienische Übersetzung wurde aktualisiert." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "Der Kompressor-Parameter `Boost Amount`wird jetzt unterstützt" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" +"Das Multiband-Kompressor Plugin verwendet jetzt das Stereo Multiband-" +"Kompressor Plugin von Linux Studio anstatt des Plugins von Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" +"Das Begrenzer Plugin verwendet jetzt das Begrenzer Plugin von Linux Studio " +"Plugins statt das von Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" +"LV2 Filter werden jetzt in der PipeWire nur beim ersten Mal eingehängt. " +"Jetzt bleiben diese eingehängt, bis EasyEffects beendet wird." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "Die Abtastrate der Echounterdrückung wird jetzt korrekt gesetzt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" +"Der Grenz-Parameter des Deesser Plugins wird jetzt in der Voreinstellungs-" +"Datei gespeichert." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" +"Die Balkenvisualisierung konnte nicht abhängig von der Eingangs- oder " +"Ausgangsverstäkung angepasst werden." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" +"Beim Hinzufügen von Equalizer-Bereichen, werden diese jetzt mit `Glocke` " +"statt `Aus` vorbesetzt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" +"Laden der Equalizer APO Voreinstellungen funktioniert jetzt auch in anderen " +"Sprachen korrekt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" +"Verbessertes Verknüfungs-Management zwischen Schnittstellenfilter-Knoten in " +"PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" +"Die Signalverstärkung des Crystalizer Plugins war zuvor zu hoch. Jetzt " +"sollte es mit sinnvolleren Werten vorbelegt sein." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" +"Der Resampler, der in verschiedenen Plugins (z.B. der Rauschunterdrückung) " +"verwendet wird, wurde verbessert" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" +"Setzen von mehreren Standard-Voreinstellungen sollte jetzt funktionieren" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "Die Dialog-Fenster mancher Plugins werden jetzt korrekt dargestellt" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" +"Die Anwendung und dessen Repository wurde von PulseEffects zu `EasyEffects` " +"umbenannt" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "GStreamer wurde durch PipeWire-Filter ersetzt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "Dieser Release fügt die folgenden Features hinzu:" + +#~ msgid "manager" +#~ msgstr "Manager" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr ". Dies sollte einige Probleme in Verbindung mit OBS beheben." + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "" +#~ "Debian Pakete bauen können. Siehe Problem #1000 für weiter Informationen." + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Dieser Release behebt die folgenden Fehler:" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "den Stream von unserem virtuellem Gerät entfernt haben. Dies sollte jetzt " +#~ "behoben sein." + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "Tab ohne Lautstärke-Skala angezeigt. Weitere Details zu dem Problem und " +#~ "dessen Lösung kann bei Ticket #1211" + +#~ msgid "and #1427" +#~ msgstr "und #1427 nachgelesen werden" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "die Pipeline aktiv und das Spektrum-Widget sichtbar war" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Es gibt eine neue Einstellung, die es den BenutzerInnen erlaubt, einen " +#~ "Timeout nach Inaktivität für den Audioeffekt festzulegen. Wenn kein " +#~ "Client spielt" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "oder von einem Geräte aufnimmt, werden die Filter getrennt, nachdem der " +#~ "Timeout erreicht ist. Dies wird getan um sicherzustellen," + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "" +#~ "dass keine CPU-Leistung für das Verarbeiten von Stille verschwendet wird." + +#~ msgid "mean." +#~ msgstr "gemein." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Dies sollte verhindern, dass die \"Integrierte\" Lautheit für immer auf " +#~ "demselben Wert stehen bleibt." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Diese Version behebt den folgenden Fehler:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Dieser Release fügt die folgenden Features hinzu:" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "dem mitgelieferten PipeWire-Sitzungsmanager zu verwenden. Weitere " +#~ "Informationen bei Fehlerticket [1144](" + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Fehlende Symbole des Systems sollten jetzt nicht mehr in der " +#~ "Applikationsinfo-Oberfläche angezeigt werden" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Equalizer, Kompressor und andere Audioeffekte" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "Limiter;Kompressor;Hall;Equalizer;Autovolumen;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Voreinstellungen\"" + +#~ msgid "Enable" +#~ msgstr "Aktiviert" + +#~ msgid "Exclude" +#~ msgstr "Ausschließen" + +#~ msgid "Mute Application" +#~ msgstr "Anwendung stummschalten" + +#~ msgid "Application Volume" +#~ msgstr "Anwendungs-Lautstärke" + +#~ msgid "_Preferences" +#~ msgstr "_Einstellungen" + +#~ msgid "_Manual" +#~ msgstr "_Handbuch" + +#~ msgid "_Shortcuts" +#~ msgstr "_Tastenkürzel" + +#~ msgid "_Reset Settings" +#~ msgstr "_Einstellungen zurücksetzen" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Über EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Voreinstellungen" + +#~ msgid "Presets Menu" +#~ msgstr "Voreinstellungs-Menü" + +#~ msgid "Global Bypass" +#~ msgstr "Globale Umleitung" + +#~ msgid "Primary Menu" +#~ msgstr "Hauptmenü" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects Fenster" + +#~ msgid "Applications List" +#~ msgstr "Anwendungs-Liste" + +#~ msgid "Empty List" +#~ msgstr "Leere Liste" + +#~ msgid "No Audio Application Available" +#~ msgstr "Keine Audio-Anwendungen verfügbar" + +#~ msgid "Target" +#~ msgstr "Ziel" + +#~ msgid "Maximum History" +#~ msgstr "Gesamter Verlauf" + +#~ msgid "Reference" +#~ msgstr "Referenz" + +#~ msgid "Momentary" +#~ msgstr "Momentan" + +#~ msgid "Short-Term" +#~ msgstr "Kurzzeitig" + +#~ msgid "Integrated" +#~ msgstr "Integriert" + +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Geometrisches Mittel (MSI)" + +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Geometrisches Mittel (MS)" + +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Geometrisches Mittel (MI)" + +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Geometrisches Mittel (SI)" + +#~ msgid "Reset History" +#~ msgstr "Verlauf löschen" + +#~ msgid "Relative" +#~ msgstr "Relativ" + +#~ msgid "Range" +#~ msgstr "Umfang" + +#~ msgid "Loudness" +#~ msgstr "Lautstärke" + +#~ msgid "Output Gain" +#~ msgstr "Ausgangsverstärkung" + +#~ msgid "Input" +#~ msgstr "Eingabe" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Eingangsverstärkungs-Plugin" + +#~ msgid "Output" +#~ msgstr "Ausgang" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Ausgangsverstärkungs-Plugin" + +#~ msgid "Reset" +#~ msgstr "Zurücksetzen" + +#~ msgid "Using" +#~ msgstr "Nutze" + +#~ msgid "Device" +#~ msgstr "Gerät" + +#~ msgid "Name" +#~ msgstr "Name" + +#~ msgid "Profile" +#~ msgstr "Profil" + +#~ msgid "Preset" +#~ msgstr "Voreinstellung" + +#~ msgid "Remove this autoload preset" +#~ msgstr "automatisch geladene Voreinstellung entfernen" + +#~ msgid "Listen" +#~ msgstr "Zuhören" + +#~ msgid "Blend Harmonics" +#~ msgstr "Oberwellen mischen" + +#~ msgid "3rd" +#~ msgstr "Dritte" + +#~ msgid "2nd" +#~ msgstr "Zweite" + +#~ msgid "Amount" +#~ msgstr "Betrag" + +#~ msgid "Harmonics" +#~ msgstr "Obertöne" + +#~ msgid "Scope" +#~ msgstr "Bereich" + +#~ msgid "Floor" +#~ msgstr "Boden" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "untere Grenze" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Application Name" +#~ msgstr "Anwendungen" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "Zu ausgeschlossenen Anwendungen hinzufügen" + +#~ msgid "Excluded Applications List" +#~ msgstr "Liste der ausgeschlossenen Anwendungen" + +#~ msgid "Show Excluded Applications" +#~ msgstr "Ausgeschlossene Anwendungen anzeigen" + +#~ msgid "Compressor" +#~ msgstr "Kompressor" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Downward" +#~ msgstr "Abwärts" + +#~ msgid "Upward" +#~ msgstr "Aufwärts" + +#~ msgid "Boosting" +#~ msgstr "Boosten" + +#~ msgid "Compression Mode" +#~ msgstr "Kompressionsmodus" + +#~ msgid "Boost Threshold" +#~ msgstr "Verstärkungsschwelle" + +#~ msgid "Boost Amount" +#~ msgstr "Verstärkung" + +#~ msgid "Attack" +#~ msgstr "Ansprechzeit" + +#~ msgid "Time" +#~ msgstr "Zeit" + +#~ msgid "Threshold" +#~ msgstr "Schwelle" + +#~ msgid "Attack Time" +#~ msgstr "Ansprechzeit" + +#~ msgid "Attack Threshold" +#~ msgstr "Anprech-Schwelle" + +#~ msgid "Release" +#~ msgstr "Freigabe" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Ausklingzeit" + +#~ msgid "Release Threshold" +#~ msgstr "Abkling-Schwelle" + +#~ msgid "Ratio" +#~ msgstr "Verhältnis" + +#~ msgid "Knee" +#~ msgstr "Übergang" + +#~ msgid "Makeup" +#~ msgstr "Hebung" + +#~ msgid "Sidechain" +#~ msgstr "Sidechain" + +#~ msgid "Peak" +#~ msgstr "Hochpunkt" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Tiefpass" + +#~ msgid "Uniform" +#~ msgstr "Einheitlich" + +#~ msgid "Sidechain Mode" +#~ msgstr "Sidechain-Modus" + +#~ msgid "Source" +#~ msgstr "Quelle" + +#~ msgid "Middle" +#~ msgstr "Mitte" + +#~ msgid "Side" +#~ msgstr "Seite" + +#~ msgid "Left" +#~ msgstr "Links" + +#~ msgid "Right" +#~ msgstr "Rechts" + +#~ msgid "Sidechain Source" +#~ msgstr "Sidechain-Quelle" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Feed-forward" +#~ msgstr "Feedforward" + +#~ msgid "Feed-back" +#~ msgstr "Feedback" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Sidechain Type" +#~ msgstr "Sidechain-Typ" + +#~ msgid "Input Device" +#~ msgstr "Eingabegerät" + +#~ msgid "PreAmplification" +#~ msgstr "Vorverstärkung" + +#~ msgid "Reactivity" +#~ msgstr "Reaktivität" + +#~ msgid "Lookahead" +#~ msgstr "Ausblick" + +#~ msgid "Sidechain Filters" +#~ msgstr "Sidechain-Filter" + +#~ msgid "High-Pass" +#~ msgstr "Hochpass" + +#~ msgid "Frequency" +#~ msgstr "Frequenz" + +#~ msgid "Off" +#~ msgstr "Aus" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/okt" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/okt" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/okt" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Hochpassfilter-Modus" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Hochpassfilter-Frequenz" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Tiefpassfilter-Modus" + +#~ msgid "Gain" +#~ msgstr "Verstärkung" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Steigung" + +#~ msgid "Curve" +#~ msgstr "Kurve" + +#~ msgid "L" +#~ msgstr "L" + +#~ msgid "Left Channel" +#~ msgstr "Linker Kanal" + +#~ msgid "R" +#~ msgstr "R" + +#~ msgid "Right Channel" +#~ msgstr "Rechter Kanal" + +#~ msgid "Impulses" +#~ msgstr "Impulse" + +#~ msgid "Stereo Width" +#~ msgstr "Stereo-Breite" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#~ msgid "Log Scale" +#~ msgstr "logarithmische Skala" + +#~ msgid "Autogain" +#~ msgstr "Automatische Verstärkungsregelung" + +#~ msgid "Rate" +#~ msgstr "Rate" + +#~ msgid "Samples" +#~ msgstr "Probenahme" + +#~ msgid "Duration" +#~ msgstr "Dauer" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "Impulsantworten kombinieren" + +#~ msgid "Output File Name" +#~ msgstr "Name der Ausgabedatei" + +#~ msgid "Import Impulse" +#~ msgstr "Impuls importieren" + +#~ msgid "Search" +#~ msgstr "Suche" + +#~ msgid "Search Impulse File" +#~ msgstr "Impulsdatei suchen" + +#~ msgid "Impulse Files List" +#~ msgstr "Impulsfilter-Liste" + +#~ msgid "Default" +#~ msgstr "Standard" + +#~ msgid "Cutoff" +#~ msgstr "Abgrenzung" + +#~ msgid "Feed" +#~ msgstr "Speisung" + +#~ msgid "Bypass" +#~ msgstr "Umleiten" + +#~ msgid "Mute" +#~ msgstr "Stummschalten" + +#~ msgid "Detection" +#~ msgstr "Erkennung" + +#~ msgid "Wide" +#~ msgstr "Breit" + +#~ msgid "Split" +#~ msgstr "Teilen" + +#~ msgid "F1 Split" +#~ msgstr "F1 Teilen" + +#~ msgid "Frequency 1 Split" +#~ msgstr "Teilfrequenz 1" + +#~ msgid "F2 Peak" +#~ msgstr "F2 Peak" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frequenz 2 Peak" + +#~ msgid "F1 Gain" +#~ msgstr "F1 Verstärkung" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frequenz 1 Verstärkung" + +#~ msgid "F2 Level" +#~ msgstr "F2 Level" + +#~ msgid "Frequency 2 Level" +#~ msgstr "Frequenz 2 Level" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2 Peak Q" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frequenz 2 Peak Q" + +#~ msgid "Laxity" +#~ msgstr "Nachgiebigkeit" + +#~ msgid "Detected" +#~ msgstr "Erkannt" + +#~ msgid "Reduction" +#~ msgstr "Senkung" + +#~ msgid "Frame Size" +#~ msgstr "Rahmengröße" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filter" + +#~ msgid "Excluded Apps" +#~ msgstr "Ausgeschlossene Anwendungen" + +#~ msgid "Bands" +#~ msgstr "Bereiche" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Kanäle trennen" + +#~ msgid "Flat Response" +#~ msgstr "Flacher Frequenzgang" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Frequenzen berechnen" + +#~ msgid "Load APO Preset" +#~ msgstr "APO Preset laden" + +#~ msgid "Bell" +#~ msgstr "Glocke" + +#~ msgid "High Pass" +#~ msgstr "Hochpass" + +#~ msgid "High Shelf" +#~ msgstr "Höhen-Kuhschwanzfilter" + +#~ msgid "Low Pass" +#~ msgstr "Tiefpass" + +#~ msgid "Low Shelf" +#~ msgstr "Tiefen-Kuhschwanzfilter" + +#~ msgid "Notch" +#~ msgstr "Badewannenfilter" + +#~ msgid "Resonance" +#~ msgstr "Resonanz" + +#~ msgid "All Pass" +#~ msgstr "Allpass" + +#~ msgid "Band Type" +#~ msgstr "Band Typ" + +#~ msgid "Band Mode" +#~ msgstr "Band Modus" + +#~ msgid "Slope" +#~ msgstr "Steigung" + +#~ msgid "Band Slope" +#~ msgstr "Band Kurve" + +#~ msgid "Width" +#~ msgstr "Breite" + +#~ msgid "Quality" +#~ msgstr "Qualität" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#~ msgid "Ceil" +#~ msgstr "obere Grenze" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Zugriff" + +#~ msgid "Description" +#~ msgstr "Beschreibung" + +#~ msgid "Remove this model file" +#~ msgstr "diese Modell-Datei entfernen" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/okt Tiefpass" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/okt Tiefpass" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/okt Tiefpass" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/okt Hochpass" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/okt Hochpass" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/okt Hochpass" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/okt Bandpass" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/okt Bandpass" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/okt Bandpass" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/okt Bandsperre" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/okt Bandsperre" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/okt Bandsperre" + +#~ msgid "Inertia" +#~ msgstr "Trägheit" + +#~ msgid "Gate" +#~ msgstr "Gate" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Ausklingzeit" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Extern" + +#~ msgid "Gating" +#~ msgstr "Gating" + +#~ msgid "Oversampling" +#~ msgstr "Überabtastung" + +#~ msgid "Herm Wide" +#~ msgstr "Herm Breit" + +#~ msgid "Exp Wide" +#~ msgstr "Exp Breit" + +#~ msgid "Line Thin" +#~ msgstr "Line Thin" + +#~ msgid "Line Wide" +#~ msgstr "Line Wide" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Line Tail" + +#~ msgid "None" +#~ msgstr "Keine" + +#~ msgid "Half x2(2L)" +#~ msgstr "Halb x2(2L)" + +#~ msgid "Half x2(3L)" +#~ msgstr "Halb x2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "Halb x3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "Halb x3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "Halb x4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "Halb x4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "Halb x6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "Halb x6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "Halb x8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "Halb x8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "Voll x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "Voll x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "Voll x3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "Voll x3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "Voll x4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "Voll x4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "Voll x6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "Voll x6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "Voll x8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "Voll x8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "SC Vorverstärker" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Sidechain Vorverstärkung" + +#~ msgid "Boost" +#~ msgstr "Boost" + +#~ msgid "Stereo Link" +#~ msgstr "Stereoverbindung" + +#~ msgid "External Sidechain" +#~ msgstr "Externe Sidechain" + +#~ msgid "External Sidechain Source" +#~ msgstr "Externe Sidechain-Quelle" + +#~ msgid "Auto Leveling" +#~ msgstr "Auto Leveling" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "Auto Leveling Attack" + +#~ msgid "Auto Leveling Release" +#~ msgstr "Auto Leveling Release" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "Auto Leveling Knee" + +#~ msgid "Gain Left" +#~ msgstr "Verstärkung Links" + +#~ msgid "Gain Right" +#~ msgstr "Verstärkung Rechts" + +#~ msgid "Sidechain Left" +#~ msgstr "Sidechain Links" + +#~ msgid "Sidechain Right" +#~ msgstr "Sidechain Rechts" + +#~ msgid "Standard" +#~ msgstr "Standard" + +#~ msgid "Flat" +#~ msgstr "Flach" + +#~ msgid "FFT Size" +#~ msgstr "FFT-Größe" + +#~ msgid "Fast Fourier Transform Size" +#~ msgstr "Auflösung der schnellen Fourier-Transformation" + +#~ msgid "Output Volume" +#~ msgstr "Ausgangslautstärke" + +#~ msgid "Ceiling" +#~ msgstr "Grenze" + +#~ msgid "Operating Mode" +#~ msgstr "Betriebsmodus" + +#~ msgid "Classic" +#~ msgstr "Klassisch" + +#~ msgid "Modern" +#~ msgstr "Modern" + +#~ msgid "Sidechain Boost" +#~ msgstr "Sidechain Boost" + +#~ msgid "Bands List" +#~ msgstr "Band-Liste" + +#~ msgid "Band 1" +#~ msgstr "Band 1" + +#~ msgid "Band 2" +#~ msgstr "Band 2" + +#~ msgid "Band 3" +#~ msgstr "Band 3" + +#~ msgid "Band 4" +#~ msgstr "Band 4" + +#~ msgid "Band 5" +#~ msgstr "Band 5" + +#~ msgid "Band 6" +#~ msgstr "Band 6" + +#~ msgid "Band 7" +#~ msgstr "Band 7" + +#~ msgid "Band 8" +#~ msgstr "Band 8" + +#~ msgid "Band Start" +#~ msgstr "Band Beginn" + +#~ msgid "Band End" +#~ msgstr "Band Ende" + +#~ msgid "Band Compression Mode" +#~ msgstr "Band Kompressionsmodus" + +#~ msgid "Band Bypass" +#~ msgstr "Band Umleitung" + +#~ msgid "Band Sidechain Options" +#~ msgstr "Band Sidechain Einstellungen" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Hochpass-Filter" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Tiefpassfilter-Frequenz" + +#~ msgid "High-Cut Filter" +#~ msgstr "Tiefpass-Filter" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Tiefpassfilter-Frequenz" + +#~ msgid "PreAmp" +#~ msgstr "Vorverstärker" + +#~ msgid "Band Gain" +#~ msgstr "Bereichs-Verstärkung" + +#~ msgid "Band Envelope" +#~ msgstr "Band Bereich" + +#~ msgid "Band Curve" +#~ msgstr "Band-Kurve" + +#~ msgid "Split Mode" +#~ msgstr "Teilungsmodus" + +#~ msgid "Split 1/2" +#~ msgstr "1/2 Teilen" + +#~ msgid "Split Frequency 1" +#~ msgstr "Teilfrequenz 1" + +#~ msgid "Split 2/3" +#~ msgstr "2/3 Teilen" + +#~ msgid "Split Frequency 2" +#~ msgstr "Teilfrequenz 2" + +#~ msgid "Split 3/4" +#~ msgstr "3/4 Teilen" + +#~ msgid "Split Frequency 3" +#~ msgstr "Teilfrequenz 3" + +#~ msgid "Sub Band" +#~ msgstr "Subband" + +#~ msgid "Band 1 Bypass" +#~ msgstr "Band 1 Umleitung" + +#~ msgid "Band 1 Solo" +#~ msgstr "Nur Band 1" + +#~ msgid "Band 1 Detection" +#~ msgstr "Band 1 Erkennung" + +#~ msgid "Band 1 Attack" +#~ msgstr "Band 1 Ansprechzeit" + +#~ msgid "Band 1 Release" +#~ msgstr "Band 1 Freigabe" + +#~ msgid "Band 1 Threshold" +#~ msgstr "Band 1 Schwelle" + +#~ msgid "Band 1 Ratio" +#~ msgstr "Band 1 Verhältnis" + +#~ msgid "Band 1 Knee" +#~ msgstr "Band 1 Knie" + +#~ msgid "Band 1 Makeup" +#~ msgstr "Band 1 Hebung" + +#~ msgid "Max Reduction" +#~ msgstr "Senkung" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "maximale Band 1 Reduktion" + +#~ msgid "Low Band" +#~ msgstr "Tiefband" + +#~ msgid "Band 2 Bypass" +#~ msgstr "Band 2 Umleitung" + +#~ msgid "Band 2 Solo" +#~ msgstr "Nur Band 2" + +#~ msgid "Band 2 Detection" +#~ msgstr "Band 2 Erkennung" + +#~ msgid "Band 2 Attack" +#~ msgstr "Band 2 Ansprechzeit" + +#~ msgid "Band 2 Release" +#~ msgstr "Band 2 Freigabe" + +#~ msgid "Band 2 Threshold" +#~ msgstr "Band 2 Schwelle" + +#~ msgid "Band 2 Ratio" +#~ msgstr "Band 2 Verhältnis" + +#~ msgid "Band 2 Knee" +#~ msgstr "Band 2 Knie" + +#~ msgid "Band 2 Makeup" +#~ msgstr "Band 2 Hebung" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "maximale Band 2 Reduktion" + +#~ msgid "Mid Band" +#~ msgstr "Mittelband" + +#~ msgid "Band 3 Bypass" +#~ msgstr "Band 3 Umleitung" + +#~ msgid "Band 3 Solo" +#~ msgstr "Nur Band 3" + +#~ msgid "Band 3 Detection" +#~ msgstr "Band 3 Erkennung" + +#~ msgid "Band 3 Attack" +#~ msgstr "Band 3 Ansprechzeit" + +#~ msgid "Band 3 Release" +#~ msgstr "Band 3 Freigabe" + +#~ msgid "Band 3 Threshold" +#~ msgstr "Band 3 Schwelle" + +#~ msgid "Band 3 Ratio" +#~ msgstr "Band 3 Verhältnis" + +#~ msgid "Band 3 Knee" +#~ msgstr "Band 3 Knie" + +#~ msgid "Band 3 Makeup" +#~ msgstr "Band 3 Hebung" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "maximale Band 3 Reduktion" + +#~ msgid "High Band" +#~ msgstr "Hochband" + +#~ msgid "Band 4 Bypass" +#~ msgstr "Band 4 Umleitung" + +#~ msgid "Band 4 Solo" +#~ msgstr "Nur Band 4" + +#~ msgid "Band 4 Detection" +#~ msgstr "Band 4 Erkennung" + +#~ msgid "Band 4 Attack" +#~ msgstr "Band 4 Ansprechzeit" + +#~ msgid "Band 4 Release" +#~ msgstr "Band 4 Freigabe" + +#~ msgid "Band 4 Threshold" +#~ msgstr "Band 4 Schwelle" + +#~ msgid "Band 4 Ratio" +#~ msgstr "Band 4 Verhältnis" + +#~ msgid "Band 4 Knee" +#~ msgstr "Band 4 Knie" + +#~ msgid "Band 4 Makeup" +#~ msgstr "Band 4 Hebung" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Maximale Band 4 Reduktion" + +#~ msgid "General" +#~ msgstr "Allgemein" + +#~ msgid "Use Default Input" +#~ msgstr "Standardeingang nutzen" + +#~ msgid "Custom Input Device" +#~ msgstr "benutzerdefiniertes Eingabegerät" + +#~ msgid "Use Default Output" +#~ msgstr "Standardausgang nutzen" + +#~ msgid "Custom Output Device" +#~ msgstr "benutzerdefiniertes Ausgabegerät" + +#~ msgid "Server Information" +#~ msgstr "Serverinformation" + +#~ msgid "Header Version" +#~ msgstr "Header-Version" + +#~ msgid "Library Version" +#~ msgstr "Bibliotheksversion" + +#~ msgid "Sampling Rate" +#~ msgstr "Abtastrate" + +#~ msgid "Minimum Quantum" +#~ msgstr "Minimales Quantum" + +#~ msgid "Maximum Quantum" +#~ msgstr "Maximales Quantum" + +#~ msgid "Default Quantum" +#~ msgstr "Standard Quantum" + +#~ msgid "Presets Autoloading" +#~ msgstr "automatisch geladene Voreinstellungen" + +#~ msgid "Output Devices" +#~ msgstr "Ausgabegeräte" + +#~ msgid "Output Presets" +#~ msgstr "Ausgabe-Voreinstellungen" + +#~ msgid "Create Association" +#~ msgstr "Assoziation erstellen" + +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "automatische Ausgabe-Voreinstellung hinzufügen" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "automatisch geladene Ausgabe-Voreinstellungen" + +#~ msgid "Input Devices" +#~ msgstr "Eingabegeräte" + +#~ msgid "Input Presets" +#~ msgstr "Eingabe-Voreinstellungen" + +#~ msgid "Add Autoloading Input Preset" +#~ msgstr "automatische Eingangs-Voreinstellung hinzufügen" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "automatisch geladene Eingang-Voreinstellungen" + +#~ msgid "Modules" +#~ msgstr "Module" + +#~ msgid "Modules List" +#~ msgstr "Modulliste" + +#~ msgid "Clients" +#~ msgstr "Clienten" + +#~ msgid "Clients List" +#~ msgstr "Client-Liste" + +#~ msgid "Test Signal" +#~ msgstr "Testsignal" + +#~ msgid "State" +#~ msgstr "Status" + +#~ msgid "Enabled" +#~ msgstr "Aktiviert" + +#~ msgid "Properties" +#~ msgstr "Eigenschaften" + +#~ msgid "Channels" +#~ msgstr "Kanäle" + +#~ msgid "Both" +#~ msgstr "Beide" + +#~ msgid "Both Channels" +#~ msgstr "Beide Kanäle" + +#~ msgid "Waveform" +#~ msgstr "Schwingungsverlauf" + +#~ msgid "Sine Wave" +#~ msgstr "Sinuswelle" + +#~ msgid "White Noise" +#~ msgstr "Weißes Rauschen" + +#~ msgid "High Speed" +#~ msgstr "Schnell" + +#~ msgid "High Quality" +#~ msgstr "Hohe Qualität" + +#~ msgid "High Consistency" +#~ msgstr "Hohe Konsistenz" + +#~ msgid "Formant" +#~ msgstr "Format" + +#~ msgid "Shifted" +#~ msgstr "Verschoben" + +#~ msgid "Preserved" +#~ msgstr "Beibehalten" + +#~ msgid "Transients" +#~ msgstr "Transient" + +#~ msgid "Crisp" +#~ msgstr "Klar" + +#~ msgid "Mixed" +#~ msgstr "Gemischt" + +#~ msgid "Smooth" +#~ msgstr "Sanft" + +#~ msgid "Detector" +#~ msgstr "Erkennung" + +#~ msgid "Compound" +#~ msgstr "Verbindung" + +#~ msgid "Percussive" +#~ msgstr "Hart" + +#~ msgid "Soft" +#~ msgstr "Weich" + +#~ msgid "Phase" +#~ msgstr "Phase" + +#~ msgid "Laminar" +#~ msgstr "Laminar" + +#~ msgid "Independent" +#~ msgstr "Unabhängig" + +#~ msgid "Cents" +#~ msgstr "Cent" + +#~ msgid "Semitones" +#~ msgstr "Halbtöne" + +#~ msgid "Octaves" +#~ msgstr "Oktaven" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Diese Preset-Datei entfernen" + +#~ msgid "Add Effect" +#~ msgstr "Effekt hinzufügen" + +#~ msgid "Used Plugins List" +#~ msgstr "Benutzte Plugins" + +#~ msgid "No Effects" +#~ msgstr "Keine Effekte" + +#~ msgid "Audio Stream Not Modified" +#~ msgstr "Audio Stream nicht verändert" + +#~ msgid "Search Plugin" +#~ msgstr "Plugin suchen" + +#~ msgid "Plugins List" +#~ msgstr "Pluginliste" + +#~ msgid "_General" +#~ msgstr "_Allgemein" + +#~ msgid "Service" +#~ msgstr "Dienst" + +#~ msgid "Launch Service at System Startup" +#~ msgstr "Dienst beim Systemstart starten" + +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Beim Schließen des Fensters beenden" + +#~ msgid "Audio" +#~ msgstr "Audio" + +#~ msgid "Process All Output Streams" +#~ msgstr "Alle Ausgänge verarbeiten" + +#~ msgid "Process All Input Streams" +#~ msgstr "Alle Eingänge verarbeiten" + +#~ msgid "Ignore Streams from Monitor of Devices" +#~ msgstr "Streams von Monitor-Geräten ignorieren" + +#~ msgid "Use Cubic Volume" +#~ msgstr "Verwende kubische Lautstärke" + +#~ msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +#~ msgstr "" +#~ "Lautstärke von virtuellen EasyEffects Geräten beim Start zurücksetzen" + +#~ msgid "Inactivity Timeout" +#~ msgstr "Timeout durch Inaktivität" + +#~ msgid "Style" +#~ msgstr "Stil" + +#~ msgid "Use Dark Theme" +#~ msgstr "Benutze dunkles Thema" + +#~ msgid "Hide Menus on Outside Clicks" +#~ msgstr "Menüs beim Rausklicken schließen" + +#~ msgid "_Spectrum" +#~ msgstr "_Spektrum" + +#~ msgid "Shape" +#~ msgstr "Form" + +#~ msgid "Bars" +#~ msgstr "Balken" + +#~ msgid "Lines" +#~ msgstr "Linien" + +#~ msgid "Dots" +#~ msgstr "Punkte" + +#~ msgid "Points" +#~ msgstr "Punkte" + +#~ msgid "Height" +#~ msgstr "Höhe" + +#~ msgid "Line Width" +#~ msgstr "Linienbreite" + +#~ msgid "Fill" +#~ msgstr "Ausfüllen" + +#~ msgid "Show Bars Border" +#~ msgstr "Balkenbegrenzung anzeigen" + +#~ msgid "Rounded Corners" +#~ msgstr "Abgerundete Ecken" + +#~ msgid "Color" +#~ msgstr "Farbe" + +#~ msgid "Lines and Bars" +#~ msgstr "Linien und Leisten" + +#~ msgid "Axis Labels" +#~ msgstr "Achsentitel" + +#~ msgid "Frequency Range" +#~ msgstr "Frequenzspanne" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maximum" + +#~ msgid "Load" +#~ msgstr "Laden" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Aktuelle Einstellungen in dieser Preset-Datei speichern" + +#~ msgid "Remove this preset file" +#~ msgstr "Diese Preset-Datei entfernen" + +#~ msgid "New Output Preset Name" +#~ msgstr "Neuer Ausgabe-Presetname" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Preset erstellen" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Preset importieren" + +#~ msgid "Search Output Preset" +#~ msgstr "Ausgabe-Preset suchen" + +#~ msgid "Output Presets List" +#~ msgstr "Liste der Ausgabe-Voreinstellungen" + +#~ msgid "New Input Preset Name" +#~ msgstr "Neuer Eingabe-Presetname" + +#~ msgid "Search Input Preset" +#~ msgstr "Eingabe-Preset suchen" + +#~ msgid "Input Presets List" +#~ msgstr "Eingabe-Voreinstellungen" + +#~ msgid "High Frequency Damping" +#~ msgstr "Hochfrequenz-Dämpfung" + +#~ msgid "Room Size" +#~ msgstr "Raumgröße" + +#~ msgid "Small" +#~ msgstr "Klein" + +#~ msgid "Medium" +#~ msgstr "Mittel" + +#~ msgid "Large" +#~ msgstr "Groß" + +#~ msgid "Tunnel" +#~ msgstr "Tunnel" + +#~ msgid "Large/smooth" +#~ msgstr "Groß/sanft" + +#~ msgid "Experimental" +#~ msgstr "Experimentell" + +#~ msgid "Diffusion" +#~ msgstr "Verbreitung" + +#~ msgid "Pre Delay" +#~ msgstr "Vorverzögerung" + +#~ msgid "Decay Time" +#~ msgstr "Abklingzeit" + +#~ msgid "Wet Amount" +#~ msgstr "Feuchtigkeits-Anteil" + +#~ msgid "Wet Level" +#~ msgstr "Feuchtigkeit" + +#~ msgid "Dry Amount" +#~ msgstr "Trockenheits-Anteil" + +#~ msgid "Dry Level" +#~ msgstr "Trockenheit" + +#~ msgid "Bass Cut" +#~ msgstr "Bassschnitt" + +#~ msgid "Treble Cut" +#~ msgstr "Höhenschnitt" + +#~ msgid "Ambience" +#~ msgstr "Atmosphäre" + +#~ msgid "Empty Walls" +#~ msgstr "Leere Wände" + +#~ msgid "Room" +#~ msgstr "Raum" + +#~ msgid "Large Empty Hall" +#~ msgstr "Große leere Halle" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Große besetzte Halle" + +#~ msgid "Import Model" +#~ msgstr "Modell importieren" + +#~ msgid "Models" +#~ msgstr "Modelle" + +#~ msgid "Standard Model" +#~ msgstr "Standard-Modell" + +#~ msgid "RNNoise Models List" +#~ msgstr "RNNoise-Modell Liste" + +#~ msgid "Active Model" +#~ msgstr "Aktives Modell" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Standard RNNoise-Modell" + +#~ msgid "Overview" +#~ msgstr "Übersicht" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Öffne die EasyEffects Bedinungsanleitung" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Vollbildschirm/Vom Vollbildschirm wiederherstellen" + +#~ msgid "Close the Window" +#~ msgstr "Fenster schließen" + +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects beenden" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#~ msgid "Input Balance" +#~ msgstr "Eingangsverstärkung" + +#~ msgid "Softclip" +#~ msgstr "Softclip" + +#~ msgid "Softclip Level" +#~ msgstr "Softclip-Stufe" + +#~ msgid "Stereo Matrix" +#~ msgstr "Stereo-Matrix" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Stereo Standard)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Stereo zu Mittelseite)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Mittelseite zu Stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (Linker Monokanal)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Rechter Monokanal)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Monosumme L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Stereo Kanäle tauschen)" + +#~ msgid "Stereo Mode" +#~ msgstr "Stereo Modus" + +#~ msgid "Invert Phase" +#~ msgstr "Phase umkehren" + +#~ msgid "Side Level" +#~ msgstr "Seitenebene" + +#~ msgid "Side Balance" +#~ msgstr "Seitenausgleich" + +#~ msgid "Middle Level" +#~ msgstr "Mittlere Ebene" + +#~ msgid "Middle Panorama" +#~ msgstr "Mittleres Panorama" + +#~ msgid "Output Balance" +#~ msgstr "Ausgabe-Balance" + +#~ msgid "Delay L/R" +#~ msgstr "Verzögerung L/R" + +#~ msgid "Delay Left Right" +#~ msgstr "Verzögerung L/R" + +#~ msgid "Stereo Base" +#~ msgstr "Stereo Basis" + +#~ msgid "Stereo Phase" +#~ msgstr "Stereo Phase" + +#~ msgid "Running" +#~ msgstr "läuft" + +#~ msgid "Suspended" +#~ msgstr "pausiert" + +#~ msgid "Idle" +#~ msgstr "Untätig" + +#~ msgid "Creating" +#~ msgstr "Erstellen" + +#~ msgid "Error" +#~ msgstr "Fehler" + +#~ msgid "Unknown" +#~ msgstr "Unbekannt" + +#~ msgid "channels" +#~ msgstr "Kanäle" + +#~ msgid "Output Presets: " +#~ msgstr "Ausgabe-Voreinstellungen: " + +#~ msgid "Input Presets: " +#~ msgstr "Eingabe-Voreinstellungen: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Audioeffekte für PipeWire Anwendungen" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Beende EasyEffects. Nützlich bei der Ausführung als Service." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Lade ein Preset. Beispiel: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "EasyEffects zurücksetzen." + +#~ msgid "Hide the Window." +#~ msgstr "Fenster verstecken." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Globale Umleitung. 1 zum Aktivieren, 2 zum Deaktivieren und 3 zum " +#~ "Erhalten des Status" + +#~ msgid "Show available presets." +#~ msgstr "Verfügbare Voreinstellungen anzeigen." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Impulsfilter-Liste" + +#~ msgid "Import Impulse File" +#~ msgstr "Impulsdatei importieren" + +#~ msgid "Open" +#~ msgstr "Öffnen" + +#~ msgid "Cancel" +#~ msgstr "Abbrechen" + +#~ msgid "Impulse Response" +#~ msgstr "Impulsantwort" + +#~ msgid "Load Impulse" +#~ msgstr "Impuls laden" + +#~ msgid "Remove Impulse" +#~ msgstr "Impuls entfernen" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Impulsfilter-Liste" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Die Impulsdatei konnte nicht geladen werden" + +#~ msgid "Recorders" +#~ msgstr "Rekorder" + +#~ msgid "Players" +#~ msgstr "Spieler" + +#~ msgid "Effects" +#~ msgstr "Effekte" + +#~ msgid "infinity" +#~ msgstr "unendlich" + +#~ msgid "Import APO Preset File" +#~ msgstr "APO Preset-Datei importieren" + +#~ msgid "APO Presets" +#~ msgstr "APO Voreinstellungen" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Voreinstellung automatisch laden" + +#~ msgid "Remove" +#~ msgstr "Entfernen" + +#~ msgid "Output Device" +#~ msgstr "Ausgabegerät" + +#~ msgid "Add" +#~ msgstr "Hinzufügen" + +#~ msgid "Import Preset" +#~ msgstr "Preset importieren" + +#~ msgid "Import Model File" +#~ msgstr "Modell-Datei importieren" + +#~ msgid "RNNoise Models" +#~ msgstr "RNNoise-Modelle" + +#~ msgid "Bass Enhancer" +#~ msgstr "Bassverstärker" + +#~ msgid "Bass Loudness" +#~ msgstr "Bass Lautheit" + +#~ msgid "Convolver" +#~ msgstr "Convolver" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Crystalizer" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Verzögerung" + +#~ msgid "Echo Canceller" +#~ msgstr "Echounterdrückung" + +#~ msgid "Equalizer" +#~ msgstr "Equalizer" + +#~ msgid "Exciter" +#~ msgstr "Exciter" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Limiter" +#~ msgstr "Limiter" + +#~ msgid "Maximizer" +#~ msgstr "Maximierer" + +#~ msgid "Multiband Compressor" +#~ msgstr "Multiband-Kompressor" + +#~ msgid "Multiband Gate" +#~ msgstr "Multiband Gate" + +#~ msgid "Pitch" +#~ msgstr "Tonhöhe" + +#~ msgid "Reverberation" +#~ msgstr "Nachhall" + +#~ msgid "Noise Reduction" +#~ msgstr "Rauschreduzierung" + +#~ msgid "Stereo Tools" +#~ msgstr "Stereowerkzeuge" + +#~ msgid "Average" +#~ msgstr "Durchschnitt" + +#~ msgid "Failed" +#~ msgstr "Gescheitert" + +#~ msgid "Use Default" +#~ msgstr "Standard verwenden" + +#~ msgid "Remove this plugin" +#~ msgstr "Dieses Plugin entfernen" + +#~ msgid "Import Presets" +#~ msgstr "Presets importieren" + +#~ msgid "Start Service at Login" +#~ msgstr "Dienst beim Login starten" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktives Modell" + +#~ msgid "Add to Blocklist" +#~ msgstr "Zur Sperrliste hinzufügen" + +#~ msgid "Blocklist" +#~ msgstr "Sperrliste" + +#~ msgid "Add Plugin" +#~ msgstr "Plugin hinzufügen" + +#~ msgid "Speakers" +#~ msgstr "Lautsprecher" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Plugins" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Aktiviert" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Aktiviert" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latenz" + +#~ msgid "idle" +#~ msgstr "inaktiv" + +#~ msgid "Faster" +#~ msgstr "Schneller" + +#~ msgid "Preserve Formant" +#~ msgstr "Formant erhalten" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Player Name" +#~ msgstr "Spielername" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Ausgangsverstärkung" + +#~ msgid "Channel" +#~ msgstr "Kanal" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Boden" + +#~ msgid "Output Effects" +#~ msgstr "Ausgabeeffekte" + +#~ msgid "Settings" +#~ msgstr "Einstellungen" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Einstellungen" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Dauer" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Testsignal" + +#~ msgid "Signal" +#~ msgstr "Signal" + +#~ msgid "Show Spectrum" +#~ msgstr "Spektrum anzeigen" + +#~ msgid "Border" +#~ msgstr "Grenze" + +#~ msgid "Spectrum Type" +#~ msgstr "Spektrumstyp" + +#~ msgid "Spectrum Color" +#~ msgstr "Spektrumfarbe" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Aktives Modell" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Maximale Amplitudenreduktion" + +#~ msgid "Wet" +#~ msgstr "Nass" + +#~ msgid "Dry" +#~ msgstr "Trocken" + +#~ msgid "S/C Level" +#~ msgstr "S/C-Level" + +#~ msgid "Phase Correlation" +#~ msgstr "Phasenkorrelation" + +#~ msgid "Short Term" +#~ msgstr "Kurzfristig" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Low-pass" +#~ msgstr "Tiefpass" + +#~ msgid "Run in Background" +#~ msgstr "Im Hintergrund ausführen" + +#~ msgid "ceil" +#~ msgstr "Begrenzen" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Setze die Lautstärke und schalte Effekte ein/aus" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Enthält einen Equalizer mit integrierten Presets" + +#~ msgid "Input Limiter" +#~ msgstr "Eingabe-Limiter" + +#~ msgid "Calibration" +#~ msgstr "Kalibrierung" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatische Glättungsregelung" + +#~ msgid "Limit" +#~ msgstr "Grenze" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Dämpfung" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Audio-Effekte für Pulseaudio Anwendungen" + +#~ msgid "using" +#~ msgstr "nutzt" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Audioeffekte für Pulseaudio-Anwendungen" + +#~ msgid "Help" +#~ msgstr "Hilfe" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrationsmikrofon" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Dieses Preset automatisch anwenden, wenn das aktuell verwendete Gerät an " +#~ "das System angeschlossen ist" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Version" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Rechteck" + +#~ msgid "Saw" +#~ msgstr "Sägezahn" + +#~ msgid "Triangle" +#~ msgstr "Dreieck" + +#~ msgid "Silence" +#~ msgstr "Ruhe" + +#~ msgid "Pink Noise" +#~ msgstr "Rosa Rauschen" + +#~ msgid "Ticks" +#~ msgstr "Ticken" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaußsches Rauschen" + +#~ msgid "Red Noise" +#~ msgstr "Rotes Rauschen" + +#~ msgid "Blue Noise" +#~ msgstr "Blaues Rauschen" + +#~ msgid "Violet Noise" +#~ msgstr "Violettes Rauschen" + +#~ msgid "Volume" +#~ msgstr "Lautstärke" + +#~ msgid "Window" +#~ msgstr "Fenster" + +#~ msgid "Measure Noise" +#~ msgstr "Rauschen messen" + +#~ msgid "Subtract Noise" +#~ msgstr "Rauschen reduzieren" + +#~ msgid "Extended Filter" +#~ msgstr "Erweiterter Filter" + +#~ msgid "Low" +#~ msgstr "Tief" + +#~ msgid "Moderate" +#~ msgstr "Mäßig" + +#~ msgid "High" +#~ msgstr "Hoch" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Unterdrückungsgrad" + +#~ msgid "Delay Agnostic" +#~ msgstr "Verzögerungsagnostisch" + +#~ msgid "Very High" +#~ msgstr "Sehr hoch" + +#~ msgid "Noise Suppressor" +#~ msgstr "Rauschunterdrücker" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptiv Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Fixiert Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Verstärkungsregler" + +#~ msgid "Detection Likelihood" +#~ msgstr "Erkennungswahrscheinlichkeit" + +#~ msgid "Very Low" +#~ msgstr "Sehr Tief" + +#~ msgid "Voice Detector" +#~ msgstr "Spracherkennung" + +#~ msgid "Use Custom Color" +#~ msgstr "Benutzerdefinierte Farbe benutzen" + +#~ msgid "Use Gradient" +#~ msgstr "Farbverlauf nutzen" + +#~ msgid "Gradient Color" +#~ msgstr "Verlaufsfarbe" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Impulsantwortdatei importieren" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Auswahl der Impulsantwortdatei" + +#~ msgid "Aggressive Mode" +#~ msgstr "Aggressiver Modus" + +#~ msgid "Before" +#~ msgstr "Vorher" + +#~ msgid "After" +#~ msgstr "Nachher" + +#~ msgid "Loudness Range" +#~ msgstr "Lautstärkebereich" + +#~ msgid "Apply" +#~ msgstr "Anwenden" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Standard Samplingrate" + +#~ msgid "Default Source" +#~ msgstr "Standard Audioquelle" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "File" +#~ msgstr "Datei" + +#~ msgid "Configuration" +#~ msgstr "Konfiguration" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Frequenz zurücksetzen" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Einstellungen" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Presets" + +#~ msgid "Auto Gain" +#~ msgstr "Automatische Verstärkungsregelung" + +#~ msgid "Detect Silence" +#~ msgstr "Stille erkennen" + +#~ msgid "Muted" +#~ msgstr "Stumm" + +#~ msgid "Distant Headphones" +#~ msgstr "Entfernte Kopfhörer" + +#~ msgid "Priority Type" +#~ msgstr "Prioritätstyp" + +#~ msgid "Niceness" +#~ msgstr "Qualität" + +#~ msgid "Priority" +#~ msgstr "Priorität" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frequenz" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frequenz" + +#~ msgid "About" +#~ msgstr "Über" + +#~ msgid "Protocol" +#~ msgstr "Protokoll" + +#~ msgid "Default Sample Format" +#~ msgstr "Standard Samplingformat" + +#~ msgid "Channel Mapping" +#~ msgstr "Kanalzuordnung" + +#~ msgid "Resamplers" +#~ msgstr "Resampler" + +#~ msgid "Pipeline Input" +#~ msgstr "Pipeline-Eingang" + +#~ msgid "Buffer" +#~ msgstr "Puffer" + +#~ msgid "Pipeline Output" +#~ msgstr "Pipeline-Ausgang" + +#~ msgid "Block Size" +#~ msgstr "Blockgröße" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#~ msgid "paused" +#~ msgstr "Pausiert" + +#~ msgid "playing" +#~ msgstr "Spielt" + +#~ msgid "Pulseaudio" +#~ msgstr "PulseAudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Presets importieren" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Amplitudenreduktion" + +#~ msgid "Exponent" +#~ msgstr "Exponent" diff --git a/po/news/easyeffects-news.pot b/po/news/easyeffects-news.pot new file mode 100644 index 0000000..0bcf678 --- /dev/null +++ b/po/news/easyeffects-news.pot @@ -0,0 +1,735 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects-news package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: easyeffects-news\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" diff --git a/po/news/es.po b/po/news/es.po new file mode 100644 index 0000000..f2e0620 --- /dev/null +++ b/po/news/es.po @@ -0,0 +1,2698 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-05-06 00:14+0000\n" +"Last-Translator: fjsevilla \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.12.1\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de sonido para las aplicaciones PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects es una herramienta avanzada de manipulación de audio. Entre sus " +"útiles incluye un ecualizador, un limitador, un compresor y una herramienta " +"de reverberación , solo por mencionar algunos. Para complementar lo " +"anterior, viene con un analizador de espectro incluido." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects es el sucesor de PulseEffects. EasyEffects solo soporta el " +"servidor de audio PipeWire. Los usuarios de PulseAudio deben usar " +"PulseEffects en su lugar." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Debido a que EasyEffects usa por defecto el servidor de audio PipeWire, " +"funcionará con la mayoría, sino todas, las aplicaciones que uses. Todas las " +"aplicaciones son mostradas en la ventana principal, donde pueden ser " +"habilitadas individualmente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Además de manipular el sonido de salida, EasyEffects también puede aplicar " +"efectos a dispositivos de entrada, como micrófonos. Esto es útil en la " +"grabación de audio, por poner un ejemplo, pero también funciona " +"correctamente durante las conversaciones de voz." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Cuando se inicie EasyEffects, este recordará convenientemente la " +"configuración utilizada en la última sesión. También es posible guardar " +"todos los ajustes actuales en un perfil." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "La página principal mostrando dos aplicaciones de salida de audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "La página del potenciador de graves mostrando los controles de audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "La página del convolucionador mostrando los controles de audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +#, fuzzy +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" +"El plugin del limitador ahora utiliza el plugin del limitador estéreo de " +"Linux Studio Plugins, en lugar del de Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +#, fuzzy +msgid "Many translation updates" +msgstr "Traducciones actualizadas" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"El plugin de ganancia automática ahora permite al usuario seleccionar cuál " +"de los tres tipos de sonoridad se utiliza para calcular" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"El plugin de ganancia automática ahora permite establecer el historial " +"máximo y ya no utiliza el modo histograma `libebur128`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"El icono de EasyEffects ha sido actualizado de forma que debería ser visible " +"en los escritorios QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"La opción de línea de comandos que retorna el estado de bypass global vuelve " +"a funcionar." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"El filtro de alimentación cruzada debería lidiar mejor con la gestión de " +"latencia dinámica de PipeWire. Ya no deberían producirse cambios bruscos en " +"el nivel de volumen en estas situaciones." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Se ha corregido un error que impedía que los micrófonos mono funcionaran " +"correctamente con EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Soporte para la próxima versión `0.3.44` de PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"El filtro de alimentación cruzada debería lidiar mejor con la gestión de " +"latencia dinámica de PipeWire. Ya no deberían producirse cambios bruscos en " +"el nivel de volumen en estas situaciones." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Hemos añadido una opción que permite restablecer el volumen y el estado de " +"silencio de nuestros dispositivos virtuales cuando se inicia EasyEffects. " +"Esto debería ayudar en los casos en que nuestros dispositivos son " +"silenciados por el servidor de audio por razones desconocidas." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Se ha mejorado el soporte para la suspensión del ordenador." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Traducciones actualizadas" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Se ha corregido un error que causaba que la aplicación se bloqueara al " +"intentar crear un perfil de carga automática que no disponía de preajustes." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"Se ha corregido un error por el que el ajuste de la `calidad` de una banda " +"del ecualizador a `cero` provocaba un bloqueo de la aplicación." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"Se hace uso de LibAdwaita para crear algunas partes de nuestra ventana y " +"para manejar el cambio entre temas oscuros y claros." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" +"El menú de ajustes ha sido rediseñado utilizando widgets de LibAdwaita." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +#, fuzzy +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"Se ha mejorado la función de importación de perfiles del ecualizador APO " +"para aplicar no sólo el filtro Bell, sino también otros compatibles" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"La función `Restablecer todos los ajustes` de nuestro menú debería funcionar " +"ahora en Flatpak." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"Tenemos una nueva opción `ocultar automáticamente`que permite al usuario " +"desactivar nuestros menús . Esto puede ayudar a solucionar algunos errores " +"que los menús Popover tienen actualmente en gtk4." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"Un análisis más robusto para importar perfiles APO guardados con una coma " +"como separador de miles en la banda de frecuencia central." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"La biblioteca fmt es una nueva dependencia, al menos mientras los " +"compiladores de c++ no implementen sus características. Se espera que esto " +"ocurra en los próximos años." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "GTKMM y GLIBMM ya no son dependencias. Ahora usamos gtk4 directamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"Ahora es posible combinar respuestas a impulsos en la interfaz del " +"convolucionador. Un nuevo archivo de respuesta a impulsos es generado y debe " +"ser visible en la lista de respuestas a impulsos." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"Se ha mejorado el diseño del `eje x`en nuestros gráficos. Ahora el número de " +"etiquetas se ajusta dinámicamente en función del ancho de la ventana." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"La documentación se ha actualizado para reflejar las nuevas características " +"de EasyEffects. Se han eliminado las antiguas referencias sobre " +"PulseEffects. Se ha añadido al menú el botón de documentación." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"Cuando se introduce un valor fuera de rango a un spinbutton, ahora se " +"actualiza con el valor más bajo o más alto en lugar de restablecerse al " +"valor previo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" +"La ventana principal ahora recuerda el estado maximizado y lo restaura " +"cuando se abre de nuevo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "La biblioteca `tbb` es una nueva dependencia" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" +"Los plugins Limitador y Compresor multibanda ahora pueden utilizar una " +"cadena lateral externa opcional." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" +"El plugin de ganancia automática ahora permite al usuario seleccionar el " +"tipo de sonoridad a usar como referencia en la corrección de volumen." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" +"La función de importación de perfiles APO del plugin Ecualizador ahora " +"analiza el parámetro \"PreAmplificación\"." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" +"El volumen cúbico puede activarse de forma opcional en la configuración " +"general." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" +"Los flujos de monitorización de PipeWire están ahora excluidos y eliminados " +"de la lista de aplicaciones." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +#, fuzzy +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" +"Esperamos que los fallos como el reportado en [1172]( se han solucionado." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" +"Se ha corregido un caso en el que el visualizador de espectro se bloqueaba." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"Pavucontrol ya no se añade a la lista de aplicaciones de entrada en los " +"sistemas con localización diferente a la inglesa." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +#, fuzzy +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" +"Se ha mejorado la compatibilidad con WirePlumber. Esto es necesario para que " +"funcione en los sistemas que decidieron utilizarlo en lugar del" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" +"Al intentar añadir un perfil de carga automática para un dispositivo que ya " +"está en la lista se actualizará su perfil de destino. De esta manera podemos " +"modificar los ajustes del perfil sin tener que eliminarlo y volver a crearlo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +#, fuzzy +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" +"Se ha rediseñado de nuevo la implementación del soporte de carga automática " +"de perfiles. Ahora debería funcionar en un conjunto mayor de hardware. " +"Consultar [1051]( para más información" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" +"Si el Limitador o el Maximizador se colocan en la última posición de la pila " +"de plugins, los nuevos plugins se añaden en la penúltima posición con el fin " +"de evitar la posibilidad de que el hardware se dañe por un nivel de salida " +"eventualmente alto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" +"Al eliminar una aplicación de la lista de aplicaciones bloqueadas, se " +"restablece su estado anterior de activación." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" +"En ocasiones, al eliminar los modelos importados del plugin de reducción de " +"ruido, el modelo en uso no se actualizaba correctamente. Esto debería estar " +"solucionado ahora." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" +"Al editar archivos de perfiles en un editor externo, las entradas duplicadas " +"no se mostrarán en el menú de perfiles." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" +"Ahora la lista de aplicaciones bloqueadas se ajusta correctamente al cambiar " +"de perfil." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" +"Ahora el estado del botón de bypass global se actualiza correctamente al " +"modificarse la pila de plugins." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" +"Algunos iconos que no se mostraban en el escritorio Plasma con el tema de " +"iconos Breeze deberían ser visibles ahora." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "Traducción al chino actualizada." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "Traducción al italiano actualizada." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" +"Se ha añadido soporte para el parámetro del compresor `Cantidad de refuerzo`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" +"El plugin de compresión multibanda ahora utiliza el plugin de compresión " +"multibanda estéreo de Linux Studio Plugins, en lugar del de Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" +"El plugin del limitador ahora utiliza el plugin del limitador estéreo de " +"Linux Studio Plugins, en lugar del de Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" +"Los filtros LV2 ahora se generan en el diagrama de PipeWire sólo cuando se " +"cargan por primera vez. Una vez cargados, permanecen conectados hasta el " +"cierre de EasyEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" +"La tasa de muestreo del plugin de cancelación de eco está ahora " +"correctamente ajustada." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" +"El parámetro umbral del plugin deesser se guarda ahora en el archivo de " +"perfil." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" +"Mejorada la división de bandas para el cristalizador con nuevos valores de " +"intensidad por defecto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" +"Dependiendo de los valores de la ganancia de entrada y de salida, las barras " +"de nivel correspondientes podrían no alinearse correctamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" +"Cuando se añaden nuevas bandas de ecualización se les asigna la modalidad " +"`Campana` en lugar de `Apagado`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" +"La carga de los perfiles del ecualizador APO ahora funciona correctamente en " +"localizaciones diferentes a C." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" +"Se ha mejorado la gestión de las conexiones entre puertos de nodos en " +"PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" +"La amplificación de la señal del plugin del cristalizador era demasiado alta " +"antes. Ahora debería estar dentro de niveles más razonables." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" +"Se ha mejorado el remuestreador (resampler) utilizado en los plugins que lo " +"requieren (como el plugin rnnoise)" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" +"La configuración de múltiples perfiles de autocarga debería funcionar ahora " +"correctamente" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" +"Las ventanas transitorias están ahora correctamente configuradas para " +"algunos diálogos de plugins" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +#, fuzzy +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" +"Se ha mejorado el menú de respuesta a impulsos del convolucionador. Esto " +"tiene como fin solucionar un problema que causaba que no se cargaran los " +"archivos de respuesta a impulsos cuando sólo había uno disponible en el menú" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" +"Se ha corregido un error que podía hacer que el plugin de tonalidad (pitch) " +"no se inicializara correctamente" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "El aviso de saturación ahora no desplaza a los widgets adyacentes" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "Se ha corregido la configuración regional en algunos widgets" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "Se ha corregido la alineación incorrecta de algunos widgets" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +#, fuzzy +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" +"El plugin Loudness es usado de nuevo por las razones descritas. Esto implica " +"que es una dependencia opcional de nuevo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" +"Se ha corregido un fallo de segmentación que ocurría cuando no se instalaban " +"las dependencias opcionales" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "Se ha mejorado la interfaz del ecualizador." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" +"Ahora se hace uso de un compresor LSP de cadena lateral que permite al " +"usuario seleccionar una fuente externa como entrada para la cadena lateral." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" +"Agregado soporte para el nuevo modo`Refuerzo` (`Boosting`) del compresor LSP." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" +"Cuando se activa la opción de \"dividir canales\" del ecualizador, el perfil " +"APO importado se aplicará sólo al canal que se visualiza actualmente en la " +"ventana. Esto permite importar diferentes perfiles para cada canal, en lugar " +"de asignar los mismos valores para ambos." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" +"Se han corregido algunos fallos de segmentación que podían producirse al " +"crear o eliminar un perfil de carga automática" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" +"Este es uno de los mayores lanzamientos que he hecho. El número de cambios " +"es tan grande que es difícil describirlos todos aquí." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +#, fuzzy +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" +"A continuación se indican sólo los más importantes. Quien esté interesado en " +"profundizar más puede echar" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" +"La aplicación y su repositorio han sido renombrados de PulseEffects a " +"`EasyEffects`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "Se ha sustituido gtkmm3 por gtkmm4" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "Se ha sustituido Gstreamer por filtros nativos de PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" +"Muchas características se han reimplementado desde cero. La carga automática " +"de perfiles es un ejemplo. Otro cambio notable se observa en el menú de " +"selección de plugins. Ahora el usuario puede mostrar en la ventana sólo los " +"plugins que desea utilizar." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" +"Boost ya no es una dependencia. El precio a pagar por esto es un pequeño " +"cambio en la estructura de nuestros perfiles. Con algo de paciencia, es " +"posible editar los perfiles de PulseEffects en un editor de texto y hacerlos " +"funcionar en EasyEffects. Con un poco de suerte puede que alguien cree un " +"script para automatizar esto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" +"Se utilizan nuevas bibliotecas y algunas de las que antes eran opcionales " +"ahora son requeridas" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta versión añade las siguientes características:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Esta versión corrige los siguientes errores:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Banda 1" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Hay disponible un nuevo ajuste que permite al usuario seleccionar un " +#~ "tiempo de inactividad para la tubería. Cuando ningún cliente está " +#~ "reproduciendo" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "o grabando desde nuestros dispositivos, los filtros se desconectarán una " +#~ "vez alcanzado el tiempo de espera. Esto se hace para asegurarse de que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "no desperdiciamos la potencia de la CPU procesando silencio." + +#~ msgid "mean." +#~ msgstr "la media geométrica." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Esto debería evitar los casos en los que la sonoridad `Integrada` se " +#~ "quedaba bloqueada indefinidamente en el mismo valor." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta versión corrige el siguiente error:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esta versión añade la siguiente funcionalidad:" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "gestor de sesiones de PipeWire integrado. Más información en [1144](" + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Los iconos no disponibles en el sistema no deberían mostrarse en la " +#~ "interfaz de información de la aplicación" + +#~ msgid "a look at and" +#~ msgstr "un vistazo y" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ecualizador, compresor y otros efectos de sonido" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Perfiles\"" + +#~ msgid "Enable" +#~ msgstr "Habilitar" + +#~ msgid "Exclude" +#~ msgstr "Excluir" + +#~ msgid "Mute Application" +#~ msgstr "Silenciar la aplicación" + +#~ msgid "Application Volume" +#~ msgstr "Volumen de aplicación" + +#~ msgid "_Preferences" +#~ msgstr "_Preferencias" + +#~ msgid "_Manual" +#~ msgstr "_Manual" + +#~ msgid "_Shortcuts" +#~ msgstr "_Atajos de teclado" + +#~ msgid "_Reset Settings" +#~ msgstr "_Restablecer ajustes" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Acerca de EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Perfiles" + +#~ msgid "Presets Menu" +#~ msgstr "Menú de perfiles" + +#~ msgid "Global Bypass" +#~ msgstr "Bypass global" + +#~ msgid "Primary Menu" +#~ msgstr "Menú principal" + +#~ msgid "EasyEffects Window" +#~ msgstr "Ventana de EasyEffects" + +#~ msgid "Applications List" +#~ msgstr "Lista de aplicaciones" + +#~ msgid "Empty List" +#~ msgstr "Lista vacía" + +#~ msgid "No Audio Application Available" +#~ msgstr "Ninguna aplicación de audio disponible" + +#~ msgid "Target" +#~ msgstr "Objetivo" + +#~ msgid "Maximum History" +#~ msgstr "Historial máximo" + +#~ msgid "Reference" +#~ msgstr "Referencia" + +#~ msgid "Momentary" +#~ msgstr "Momentánea" + +#~ msgid "Short-Term" +#~ msgstr "Corto plazo" + +#~ msgid "Integrated" +#~ msgstr "Integral" + +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Media geométrica (MSI)" + +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Media geométrica (MS)" + +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Media geométrica (MI)" + +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Media geométrica (SI)" + +#~ msgid "Reset History" +#~ msgstr "Restablecer el historial" + +#~ msgid "Relative" +#~ msgstr "Relativa" + +#~ msgid "Range" +#~ msgstr "Rango" + +#~ msgid "Loudness" +#~ msgstr "Sonoridad" + +#~ msgid "Output Gain" +#~ msgstr "Ganancia de salida" + +#~ msgid "Input" +#~ msgstr "Entrada" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Ganancia de entrada del plugin" + +#~ msgid "Output" +#~ msgstr "Salida" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Ganancia de salida del plugin" + +#~ msgid "Reset" +#~ msgstr "Restablecer" + +#~ msgid "Using" +#~ msgstr "Usando" + +#~ msgid "Device" +#~ msgstr "Dispositivo" + +#~ msgid "Name" +#~ msgstr "Nombre" + +#~ msgid "Profile" +#~ msgstr "Perfil" + +#~ msgid "Preset" +#~ msgstr "Perfil" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Eliminar perfil de carga automática" + +#~ msgid "Listen" +#~ msgstr "Escuchar" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mezclar armónicos" + +#~ msgid "3rd" +#~ msgstr "3ª" + +#~ msgid "2nd" +#~ msgstr "2ª" + +#~ msgid "Amount" +#~ msgstr "Cantidad" + +#~ msgid "Harmonics" +#~ msgstr "Harmónicos" + +#~ msgid "Scope" +#~ msgstr "Umbral" + +#~ msgid "Floor" +#~ msgstr "Límite inferior" + +#~ msgid "Floor Value" +#~ msgstr "Valor del límite inferior" + +#~ msgid "Link" +#~ msgstr "Enlace" + +#~ msgid "Application Name" +#~ msgstr "Nombre de la aplicación" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "Añadir a las aplicaciones excluidas" + +#~ msgid "Excluded Applications List" +#~ msgstr "Lista de aplicaciones excluidas" + +#~ msgid "Show Excluded Applications" +#~ msgstr "Mostrar aplicaciones excluidas" + +#~ msgid "Compressor" +#~ msgstr "Compresor" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Downward" +#~ msgstr "Descendente" + +#~ msgid "Upward" +#~ msgstr "Ascendente" + +#~ msgid "Boosting" +#~ msgstr "Refuerzo" + +#~ msgid "Compression Mode" +#~ msgstr "Modo de compresión" + +#~ msgid "Boost Threshold" +#~ msgstr "Umbral de refuerzo" + +#~ msgid "Boost Amount" +#~ msgstr "Cantidad de refuerzo" + +#~ msgid "Attack" +#~ msgstr "Ataque" + +#~ msgid "Time" +#~ msgstr "Tiempo" + +#~ msgid "Threshold" +#~ msgstr "Umbral" + +#~ msgid "Attack Time" +#~ msgstr "Tiempo de ataque" + +#~ msgid "Attack Threshold" +#~ msgstr "Umbral de ataque" + +#~ msgid "Release" +#~ msgstr "Decaimiento" + +#~ msgid "Release Time" +#~ msgstr "Tiempo de decaimiento" + +#~ msgid "Release Threshold" +#~ msgstr "Umbral de decaimiento" + +#~ msgid "Ratio" +#~ msgstr "Ratio (n:1)" + +#~ msgid "Knee" +#~ msgstr "Rótula" + +#~ msgid "Makeup" +#~ msgstr "Ganancia de compensación" + +#~ msgid "Sidechain" +#~ msgstr "Cadena lateral" + +#~ msgid "Peak" +#~ msgstr "Pico" + +#~ msgid "RMS" +#~ msgstr "RMS (media cuadrática)" + +#~ msgid "Low-Pass" +#~ msgstr "Paso bajo" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#~ msgid "Sidechain Mode" +#~ msgstr "Modo cadena lateral" + +#~ msgid "Source" +#~ msgstr "Fuente" + +#~ msgid "Middle" +#~ msgstr "Medio" + +#~ msgid "Side" +#~ msgstr "Lateral" + +#~ msgid "Left" +#~ msgstr "Izquierdo" + +#~ msgid "Right" +#~ msgstr "Derecho" + +#~ msgid "Sidechain Source" +#~ msgstr "Fuente de la cadena lateral" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Feed-forward" +#~ msgstr "Feed-forward" + +#~ msgid "Feed-back" +#~ msgstr "Feed-back" + +#~ msgid "External" +#~ msgstr "Externa" + +#~ msgid "Sidechain Type" +#~ msgstr "Tipo de cadena lateral" + +#~ msgid "Input Device" +#~ msgstr "Dispositivo de entrada" + +#~ msgid "PreAmplification" +#~ msgstr "Preamplificación" + +#~ msgid "Reactivity" +#~ msgstr "Reactividad" + +#~ msgid "Lookahead" +#~ msgstr "Anticipación" + +#~ msgid "Sidechain Filters" +#~ msgstr "Filtros de cadena lateral" + +#~ msgid "High-Pass" +#~ msgstr "Paso alto" + +#~ msgid "Frequency" +#~ msgstr "Frecuencia" + +#~ msgid "Off" +#~ msgstr "Desactivado" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Modo filtro de paso alto" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Frecuencia del filtro de paso alto" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Modo filtro de paso bajo" + +#~ msgid "Gain" +#~ msgstr "Ganancia" + +#~ msgid "Envelope" +#~ msgstr "Envolvente" + +#~ msgid "Curve" +#~ msgstr "Curva" + +#~ msgid "L" +#~ msgstr "L" + +#~ msgid "Left Channel" +#~ msgstr "Canal izquierdo" + +#~ msgid "R" +#~ msgstr "R" + +#~ msgid "Right Channel" +#~ msgstr "Canal derecho" + +#~ msgid "Impulses" +#~ msgstr "Respuestas a impulsos" + +#~ msgid "Combine" +#~ msgstr "Combinar" + +#~ msgid "Stereo Width" +#~ msgstr "Amplitud estéreo" + +#~ msgid "Spectrum" +#~ msgstr "Espectro" + +#~ msgid "Log Scale" +#~ msgstr "Escala logarítmica" + +#~ msgid "Autogain" +#~ msgstr "Ganancia automática" + +#~ msgid "Rate" +#~ msgstr "Tasa" + +#~ msgid "Samples" +#~ msgstr "Muestras" + +#~ msgid "Duration" +#~ msgstr "Duración" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "Combinar las respuestas a impulsos" + +#~ msgid "First Kernel" +#~ msgstr "Primer núcleo" + +#~ msgid "Second Kernel" +#~ msgstr "Segundo núcleo" + +#~ msgid "Output File Name" +#~ msgstr "Nombre del archivo de salida" + +#~ msgid "Combined Kernel Name" +#~ msgstr "Nombre del núcleo combinado" + +#~ msgid "Import Impulse" +#~ msgstr "Importar archivo de respuesta a impulsos" + +#~ msgid "Search" +#~ msgstr "Buscar" + +#~ msgid "Search Impulse File" +#~ msgstr "Buscar archivo de respuesta a impulsos" + +#~ msgid "Impulse Files List" +#~ msgstr "Lista de archivos de respuesta a impulsos" + +#~ msgid "Default" +#~ msgstr "Predeterminado" + +#~ msgid "Cutoff" +#~ msgstr "Corte" + +#~ msgid "Feed" +#~ msgstr "Alimentación" + +#~ msgid "Bypass" +#~ msgstr "Bypass" + +#~ msgid "Mute" +#~ msgstr "Silenciar" + +#~ msgid "Detection" +#~ msgstr "Detección" + +#~ msgid "Wide" +#~ msgstr "Banda ancha" + +#~ msgid "Split" +#~ msgstr "Banda dividida" + +#~ msgid "F1 Split" +#~ msgstr "División F1" + +#~ msgid "Frequency 1 Split" +#~ msgstr "División de la frecuencia 1" + +#~ msgid "F2 Peak" +#~ msgstr "Pico F2" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "Pico de la frecuencia 2" + +#~ msgid "F1 Gain" +#~ msgstr "Ganancia F1" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "Ganancia de la frecuencia 1" + +#~ msgid "F2 Level" +#~ msgstr "Nivel F2" + +#~ msgid "Frequency 2 Level" +#~ msgstr "Nivel de la frecuencia 2" + +#~ msgid "F2 Peak Q" +#~ msgstr "Pico Q F2" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Pico Q de la frecuencia 2" + +#~ msgid "Laxity" +#~ msgstr "Laxitud" + +#~ msgid "Detected" +#~ msgstr "Detectado" + +#~ msgid "Reduction" +#~ msgstr "Reducción" + +#~ msgid "Frame Size" +#~ msgstr "Tamaño del cuadro" + +#~ msgid "Filter Length" +#~ msgstr "Longitud del filtro" + +#~ msgid "Excluded Apps" +#~ msgstr "Aplicaciones excluidas" + +#~ msgid "Bands" +#~ msgstr "Bandas" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Dividir canales" + +#~ msgid "Flat Response" +#~ msgstr "Respuesta plana" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calcular frecuencias" + +#~ msgid "Load APO Preset" +#~ msgstr "Cargar el perfil APO" + +#~ msgid "Bell" +#~ msgstr "Campana" + +#~ msgid "High Pass" +#~ msgstr "Paso alto" + +#~ msgid "High Shelf" +#~ msgstr "Shelving de agudos" + +#~ msgid "Low Pass" +#~ msgstr "Pase bajo" + +#~ msgid "Low Shelf" +#~ msgstr "Shelving de graves" + +#~ msgid "Notch" +#~ msgstr "Rechazo de banda" + +#~ msgid "Resonance" +#~ msgstr "Resonancia" + +#~ msgid "All Pass" +#~ msgstr "Paso total" + +#~ msgid "Band Type" +#~ msgstr "Tipo de banda" + +#~ msgid "Band Mode" +#~ msgstr "Modo de banda" + +#~ msgid "Slope" +#~ msgstr "Pendiente" + +#~ msgid "Band Slope" +#~ msgstr "Pendiente de la banda" + +#~ msgid "Width" +#~ msgstr "Anchura" + +#~ msgid "Quality" +#~ msgstr "Calidad" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#~ msgid "Ceil" +#~ msgstr "Límite superior" + +#~ msgid "Ceil Value" +#~ msgstr "Valor del límite superior" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Acceder" + +#~ msgid "Description" +#~ msgstr "Descripción" + +#~ msgid "Remove this model file" +#~ msgstr "Borrar este perfil" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "Paso bajo 12dB/oct" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "Paso bajo 24dB/oct" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "Paso bajo 36dB/oct" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "Paso alto 12dB/oct" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "Paso alto 24dB/oct" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "Paso alto 36dB/oct" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "Paso banda 6dB/oct" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "Paso banda 12dB/oct" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "Paso banda 18dB/oct" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "Rechazo de banda 6dB/oct" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "Rechazo de banda 12dB/oct" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "Rechazo de banda 18dB/oct" + +#~ msgid "Inertia" +#~ msgstr "Inercia" + +#~ msgid "Gate" +#~ msgstr "Puerta de ruido" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Tiempo de decaimiento" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Externa" + +#~ msgid "Gating" +#~ msgstr "Actividad de la puerta" + +#~ msgid "Oversampling" +#~ msgstr "Sobremuestreo" + +#~ msgid "Dither" +#~ msgstr "Dither" + +#~ msgid "Herm Thin" +#~ msgstr "Herm Thin" + +#~ msgid "Herm Wide" +#~ msgstr "Herm Wide" + +#~ msgid "Herm Tail" +#~ msgstr "Herm Tail" + +#~ msgid "Herm Duck" +#~ msgstr "Herm Duck" + +#~ msgid "Exp Thin" +#~ msgstr "Exp Thin" + +#~ msgid "Exp Wide" +#~ msgstr "Exp Wide" + +#~ msgid "Exp Tail" +#~ msgstr "Exp Tail" + +#~ msgid "Exp Duck" +#~ msgstr "Exp Duck" + +#~ msgid "Line Thin" +#~ msgstr "Line Thin" + +#~ msgid "Line Wide" +#~ msgstr "Line Wide" + +#~ msgid "Line Tail" +#~ msgstr "Line Tail" + +#~ msgid "Line Duck" +#~ msgstr "Line Duck" + +#~ msgid "None" +#~ msgstr "Ninguno" + +#~ msgid "Half x2(2L)" +#~ msgstr "Parcial x2(2L)" + +#~ msgid "Half x2(3L)" +#~ msgstr "Parcial x2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "Parcial x3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "Parcial x3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "Parcial x4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "Parcial x4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "Parcial x6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "Parcial x6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "Parcial x8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "Parcial x8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "Completo x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "Completo x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "Completo x3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "Completo x3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "Completo x4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "Completo x4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "Completo x6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "Completo x6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "Completo x8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "Completo x8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "SC PreAmp" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Preamplificaión de la cadena lateral" + +#~ msgid "Boost" +#~ msgstr "Refuerzo" + +#~ msgid "Stereo Link" +#~ msgstr "Enlace estéreo" + +#~ msgid "External Sidechain" +#~ msgstr "Cadena lateral externa" + +#~ msgid "External Sidechain Source" +#~ msgstr "Fuente de la cadena lateral externa" + +#~ msgid "Auto Leveling" +#~ msgstr "Nivelación automática" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "Ataque de nivelación automática" + +#~ msgid "Auto Leveling Release" +#~ msgstr "Decaimiento de nivelación automática" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "Rótula (transición) de nivelación automática" + +#~ msgid "Gain Left" +#~ msgstr "Ganancia izquierda" + +#~ msgid "Gain Right" +#~ msgstr "Ganancia derecha" + +#~ msgid "Sidechain Left" +#~ msgstr "Cadena lateral izquierda" + +#~ msgid "Sidechain Right" +#~ msgstr "Cadena lateral derecha" + +#~ msgid "Standard" +#~ msgstr "Estándar" + +#~ msgid "Flat" +#~ msgstr "Plano" + +#~ msgid "FFT Size" +#~ msgstr "Tamaño de la FFT" + +#~ msgid "Fast Fourier Transform Size" +#~ msgstr "Tamaño de la transformada rápida de Fourier" + +#~ msgid "Output Volume" +#~ msgstr "Volumen de salida" + +#~ msgid "Ceiling" +#~ msgstr "Límite superior" + +#~ msgid "Operating Mode" +#~ msgstr "Modo de funcionamiento" + +#~ msgid "Classic" +#~ msgstr "Clásico" + +#~ msgid "Modern" +#~ msgstr "Moderno" + +#~ msgid "Sidechain Boost" +#~ msgstr "Refuerzo de la cadena lateral" + +#~ msgid "Pink BT" +#~ msgstr "Rosa BT" + +#~ msgid "Pink MT" +#~ msgstr "Rosa MT" + +#~ msgid "Brown BT" +#~ msgstr "Marrón BT" + +#~ msgid "Brown MT" +#~ msgstr "Marrón MT" + +#~ msgid "Bands List" +#~ msgstr "Lista de bandas" + +#~ msgid "Band 1" +#~ msgstr "Banda 1" + +#~ msgid "Band 2" +#~ msgstr "Banda 2" + +#~ msgid "Band 3" +#~ msgstr "Banda 3" + +#~ msgid "Band 4" +#~ msgstr "Banda 4" + +#~ msgid "Band 5" +#~ msgstr "Banda 5" + +#~ msgid "Band 6" +#~ msgstr "Banda 6" + +#~ msgid "Band 7" +#~ msgstr "Banda 7" + +#~ msgid "Band 8" +#~ msgstr "Banda 8" + +#~ msgid "Band Start" +#~ msgstr "Inicio de la banda" + +#~ msgid "Band End" +#~ msgstr "Fin de la banda" + +#~ msgid "Band Compression Mode" +#~ msgstr "Modo de compresión de banda" + +#~ msgid "Band Bypass" +#~ msgstr "Bypass de banda" + +#~ msgid "Band Sidechain Options" +#~ msgstr "Opciones de la cadena lateral de la banda" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtro paso bajo" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Frecuencia del filtro paso bajo" + +#~ msgid "High-Cut Filter" +#~ msgstr "Filtro paso alto" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Frecuencia del filtro paso alto" + +#~ msgid "PreAmp" +#~ msgstr "PreAmp" + +#~ msgid "Band Gain" +#~ msgstr "Ganancia de banda" + +#~ msgid "Band Envelope" +#~ msgstr "Envolvente de banda" + +#~ msgid "Band Curve" +#~ msgstr "Curva de la banda" + +#~ msgid "Split Mode" +#~ msgstr "Modo de división" + +#~ msgid "Split 1/2" +#~ msgstr "Dividir 1/2" + +#~ msgid "Split Frequency 1" +#~ msgstr "Dividir frecuencia 1" + +#~ msgid "Split 2/3" +#~ msgstr "Dividir 2/3" + +#~ msgid "Split Frequency 2" +#~ msgstr "Dividir frecuencia 2" + +#~ msgid "Split 3/4" +#~ msgstr "Dividir 3/4" + +#~ msgid "Split Frequency 3" +#~ msgstr "Dividir frecuencia 3" + +#~ msgid "Sub Band" +#~ msgstr "Sub-banda" + +#~ msgid "Band 1 Bypass" +#~ msgstr "Bypass de banda 1" + +#~ msgid "Band 1 Solo" +#~ msgstr "Solo de la banda 1" + +#~ msgid "Band 1 Detection" +#~ msgstr "Método de detección de la banda 1" + +#~ msgid "Band 1 Attack" +#~ msgstr "Ataque de la banda 1" + +#~ msgid "Band 1 Release" +#~ msgstr "Tiempo de decaimiento de la banda 1" + +#~ msgid "Band 1 Threshold" +#~ msgstr "Umbral de la banda 1" + +#~ msgid "Band 1 Ratio" +#~ msgstr "Ratio de la banda 1" + +#~ msgid "Band 1 Knee" +#~ msgstr "Rótula (transición) de la banda 1" + +#~ msgid "Band 1 Makeup" +#~ msgstr "Ganancia de compensación de la banda 1" + +#~ msgid "Max Reduction" +#~ msgstr "Atenuación máxima" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Reducción máx. de la banda 1" + +#~ msgid "Low Band" +#~ msgstr "Banda baja" + +#~ msgid "Band 2 Bypass" +#~ msgstr "Bypass de la banda 2" + +#~ msgid "Band 2 Solo" +#~ msgstr "Solo de la banda 2" + +#~ msgid "Band 2 Detection" +#~ msgstr "Método de detección de la banda 2" + +#~ msgid "Band 2 Attack" +#~ msgstr "Ataque de la banda 2" + +#~ msgid "Band 2 Release" +#~ msgstr "Tiempo de decaimiento de la banda 2" + +#~ msgid "Band 2 Threshold" +#~ msgstr "Umbral de la banda 2" + +#~ msgid "Band 2 Ratio" +#~ msgstr "Ratio de la banda 2" + +#~ msgid "Band 2 Knee" +#~ msgstr "Rótula (transición) de la banda 2" + +#~ msgid "Band 2 Makeup" +#~ msgstr "Ganancia de compensación de la banda 2" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Reducción máx. de la banda 2" + +#~ msgid "Mid Band" +#~ msgstr "Banda media" + +#~ msgid "Band 3 Bypass" +#~ msgstr "Bypass de la banda 3" + +#~ msgid "Band 3 Solo" +#~ msgstr "Solo de la banda 3" + +#~ msgid "Band 3 Detection" +#~ msgstr "Método de detección de la banda 3" + +#~ msgid "Band 3 Attack" +#~ msgstr "Ataque de la banda 3" + +#~ msgid "Band 3 Release" +#~ msgstr "Tiempo de decaimiento de la banda 3" + +#~ msgid "Band 3 Threshold" +#~ msgstr "Umbral de la banda 3" + +#~ msgid "Band 3 Ratio" +#~ msgstr "Ratio de la banda 3" + +#~ msgid "Band 3 Knee" +#~ msgstr "Rótula (transición) de la banda 3" + +#~ msgid "Band 3 Makeup" +#~ msgstr "Ganancia de compensación de la banda 3" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Reducción máx. de la banda 3" + +#~ msgid "High Band" +#~ msgstr "Banda alta" + +#~ msgid "Band 4 Bypass" +#~ msgstr "Bypass de la banda 4" + +#~ msgid "Band 4 Solo" +#~ msgstr "Solo de la banda 4" + +#~ msgid "Band 4 Detection" +#~ msgstr "Método de detección de la banda 4" + +#~ msgid "Band 4 Attack" +#~ msgstr "Ataque de la banda 4" + +#~ msgid "Band 4 Release" +#~ msgstr "Tiempo de decaimiento de la banda 4" + +#~ msgid "Band 4 Threshold" +#~ msgstr "Umbral de la banda 4" + +#~ msgid "Band 4 Ratio" +#~ msgstr "Ratio de la banda 4" + +#~ msgid "Band 4 Knee" +#~ msgstr "Rótula (transición) de la banda 4" + +#~ msgid "Band 4 Makeup" +#~ msgstr "Ganancia de compensación de la banda 4" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Reducción máx. de la banda 4" + +#~ msgid "General" +#~ msgstr "General" + +#~ msgid "Use Default Input" +#~ msgstr "Usar entrada predeterminada" + +#~ msgid "Custom Input Device" +#~ msgstr "Dispositivo de entrada personalizado" + +#~ msgid "Use Default Output" +#~ msgstr "Usar salida predeterminada" + +#~ msgid "Custom Output Device" +#~ msgstr "Dispositivo de salida personalizado" + +#~ msgid "Server Information" +#~ msgstr "Información del servidor" + +#~ msgid "Header Version" +#~ msgstr "Versión principal" + +#~ msgid "Library Version" +#~ msgstr "Versión de la biblioteca" + +#~ msgid "Sampling Rate" +#~ msgstr "Tasa de muestreo" + +#~ msgid "Minimum Quantum" +#~ msgstr "Quantum mínimo" + +#~ msgid "Maximum Quantum" +#~ msgstr "Quantum máximo" + +#~ msgid "Default Quantum" +#~ msgstr "Quantum por defecto" + +#~ msgid "Presets Autoloading" +#~ msgstr "Carga automática de perfiles" + +#~ msgid "Output Devices" +#~ msgstr "Dispositivos de salida" + +#~ msgid "Output Presets" +#~ msgstr "Perfiles de salida" + +#~ msgid "Create Association" +#~ msgstr "Crear asociación" + +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "Agregar un perfil de salida de carga automática" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Lista de perfiles de salida de carga automática" + +#~ msgid "Input Devices" +#~ msgstr "Dispositivos de entrada" + +#~ msgid "Input Presets" +#~ msgstr "Perfiles de entrada" + +#~ msgid "Add Autoloading Input Preset" +#~ msgstr "Agregar un perfil de entrada de carga automática" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Lista de perfiles de entrada de carga automática" + +#~ msgid "Modules" +#~ msgstr "Módulos" + +#~ msgid "Modules List" +#~ msgstr "Lista de los módulos" + +#~ msgid "Clients" +#~ msgstr "Clientes" + +#~ msgid "Clients List" +#~ msgstr "Lista de los clientes" + +#~ msgid "Test Signal" +#~ msgstr "Señal de prueba" + +#~ msgid "State" +#~ msgstr "Estado" + +#~ msgid "Enabled" +#~ msgstr "Habilitado" + +#~ msgid "Properties" +#~ msgstr "Propiedades" + +#~ msgid "Channels" +#~ msgstr "Canales" + +#~ msgid "Both" +#~ msgstr "Ambos" + +#~ msgid "Both Channels" +#~ msgstr "Ambos canales" + +#~ msgid "Waveform" +#~ msgstr "Forma de onda" + +#~ msgid "Sine Wave" +#~ msgstr "Onda sinusoidal" + +#~ msgid "White Noise" +#~ msgstr "Ruido blanco" + +#~ msgid "High Speed" +#~ msgstr "Alta velocidad" + +#~ msgid "High Quality" +#~ msgstr "Alta calidad" + +#~ msgid "High Consistency" +#~ msgstr "Alta consistencia" + +#~ msgid "Formant" +#~ msgstr "Formato" + +#~ msgid "Shifted" +#~ msgstr "Alterado" + +#~ msgid "Preserved" +#~ msgstr "Preservado" + +#~ msgid "Transients" +#~ msgstr "Transitorios" + +#~ msgid "Crisp" +#~ msgstr "Nítidos" + +#~ msgid "Mixed" +#~ msgstr "Intermedios" + +#~ msgid "Smooth" +#~ msgstr "Suavizados" + +#~ msgid "Detector" +#~ msgstr "Detección" + +#~ msgid "Compound" +#~ msgstr "Compuesto" + +#~ msgid "Percussive" +#~ msgstr "Percusivo" + +#~ msgid "Soft" +#~ msgstr "Suave" + +#~ msgid "Phase" +#~ msgstr "Fase" + +#~ msgid "Laminar" +#~ msgstr "Laminar" + +#~ msgid "Independent" +#~ msgstr "Independiente" + +#~ msgid "Cents" +#~ msgstr "Cents" + +#~ msgid "Semitones" +#~ msgstr "Semitonos" + +#~ msgid "Octaves" +#~ msgstr "Octavas" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Borrar este perfil" + +#~ msgid "Add Effect" +#~ msgstr "Agregar efecto" + +#~ msgid "Used Plugins List" +#~ msgstr "Lista de plugins utilizados" + +#~ msgid "No Effects" +#~ msgstr "Sin efectos" + +#~ msgid "Audio Stream Not Modified" +#~ msgstr "Flujo de audio no modificado" + +#~ msgid "Search Plugin" +#~ msgstr "Buscar plugin" + +#~ msgid "Plugins List" +#~ msgstr "Lista de plugins" + +#~ msgid "_General" +#~ msgstr "_General" + +#~ msgid "Service" +#~ msgstr "Servicio" + +#, fuzzy +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Apagar al cerrar la ventana" + +#~ msgid "Audio" +#~ msgstr "Audio" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Procesar todas las salidas" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Procesar todas las entradas" + +#~ msgid "Use Cubic Volume" +#~ msgstr "Usar volumen cúbico" + +#~ msgid "Inactivity Timeout" +#~ msgstr "Tiempo de inactividad" + +#~ msgid "Style" +#~ msgstr "Estilo" + +#~ msgid "Use Dark Theme" +#~ msgstr "Usar tema oscuro" + +#~ msgid "Hide Menus on Outside Clicks" +#~ msgstr "Ocultar los menús al hacer click fuera" + +#~ msgid "_Spectrum" +#~ msgstr "_Espectro" + +#~ msgid "Shape" +#~ msgstr "Forma" + +#~ msgid "Bars" +#~ msgstr "Barras" + +#~ msgid "Lines" +#~ msgstr "Líneas" + +#~ msgid "Dots" +#~ msgstr "Puntos" + +#~ msgid "Points" +#~ msgstr "Puntos" + +#~ msgid "Height" +#~ msgstr "Altura" + +#~ msgid "Line Width" +#~ msgstr "Ancho de la línea" + +#~ msgid "Fill" +#~ msgstr "Rellenar" + +#~ msgid "Show Bars Border" +#~ msgstr "Mostrar los bordes de las barras" + +#~ msgid "Rounded Corners" +#~ msgstr "Redondear las esquinas" + +#~ msgid "Color" +#~ msgstr "Color" + +#~ msgid "Lines and Bars" +#~ msgstr "Lineas y barras" + +#~ msgid "Axis Labels" +#~ msgstr "Etiquetas del eje" + +#~ msgid "Frequency Range" +#~ msgstr "Rango de frecuencia" + +#~ msgid "Minimum" +#~ msgstr "Mínima" + +#~ msgid "Maximum" +#~ msgstr "Máximo" + +#~ msgid "Load" +#~ msgstr "Cargar" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Guardar la configuración actual en este perfil" + +#~ msgid "Remove this preset file" +#~ msgstr "Eliminar este perfil" + +#~ msgid "New Output Preset Name" +#~ msgstr "Nombre del nuevo perfil de salida" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Crear perfil" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importar perfil" + +#~ msgid "Search Output Preset" +#~ msgstr "Buscar perfil de salida" + +#~ msgid "Output Presets List" +#~ msgstr "Lista de perfiles de salida" + +#~ msgid "New Input Preset Name" +#~ msgstr "Nombre del nuevo perfil de entrada" + +#~ msgid "Search Input Preset" +#~ msgstr "Buscar perfil de entrada" + +#~ msgid "Input Presets List" +#~ msgstr "Lista de perfiles de entrada" + +#~ msgid "High Frequency Damping" +#~ msgstr "Atenuación de alta frecuencia" + +#~ msgid "Room Size" +#~ msgstr "Tamaño de la sala" + +#~ msgid "Small" +#~ msgstr "Pequeña" + +#~ msgid "Medium" +#~ msgstr "Mediana" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Túnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/suave" + +#~ msgid "Experimental" +#~ msgstr "Experimental" + +#~ msgid "Diffusion" +#~ msgstr "Difusión" + +#~ msgid "Pre Delay" +#~ msgstr "Pre retraso" + +#~ msgid "Decay Time" +#~ msgstr "Tiempo de decaimiento" + +#~ msgid "Wet Amount" +#~ msgstr "Cantidad de señal con efectos" + +#~ msgid "Wet Level" +#~ msgstr "Nivel de señal con efectos" + +#~ msgid "Dry Amount" +#~ msgstr "Cantidad de señal sin efectos" + +#~ msgid "Dry Level" +#~ msgstr "Nivel de señal sin efectos" + +#~ msgid "Bass Cut" +#~ msgstr "Corte de graves" + +#~ msgid "Treble Cut" +#~ msgstr "Corte de agudos" + +#~ msgid "Ambience" +#~ msgstr "Ambiente" + +#~ msgid "Empty Walls" +#~ msgstr "Paredes vacías" + +#~ msgid "Room" +#~ msgstr "Sala" + +#~ msgid "Large Empty Hall" +#~ msgstr "Sala grande vacía" + +#~ msgid "Disco" +#~ msgstr "Discoteca" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Sala grande ocupada" + +#~ msgid "Import Model" +#~ msgstr "Importar modelo" + +#~ msgid "Models" +#~ msgstr "Modelos" + +#~ msgid "Standard Model" +#~ msgstr "Modelo estándar" + +#~ msgid "RNNoise Models List" +#~ msgstr "Lista de modelos de RNNoise" + +#~ msgid "Active Model" +#~ msgstr "Modelo activo" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Modelo RNNoise estándar" + +#~ msgid "Overview" +#~ msgstr "Resumen" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Abrir el manual de EasyEffects" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Pantalla completa/restaurar desde pantalla completa" + +#~ msgid "Close the Window" +#~ msgstr "Cerrar la ventana" + +#~ msgid "Quit EasyEffects" +#~ msgstr "Cerrar EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#~ msgid "Input Balance" +#~ msgstr "Balance de entrada" + +#~ msgid "Softclip" +#~ msgstr "Recorte suave" + +#~ msgid "Softclip Level" +#~ msgstr "Nivel del recorte suave (soft clipping)" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matriz estéreo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Estéreo predeterminado)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Estéreo a medio-lateral)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Medio-lateral a estéreo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "R > LL (Mono usando el canal izquierdo)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Mono usando el canal derecho)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Mono sumando los canales izq. y dcho.)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Estéreo invirtiendo los canales)" + +#~ msgid "Stereo Mode" +#~ msgstr "Modo estéreo" + +#~ msgid "Invert Phase" +#~ msgstr "Invertir la fase" + +#~ msgid "Side Level" +#~ msgstr "Nivel lateral" + +#~ msgid "Side Balance" +#~ msgstr "Balance lateral" + +#~ msgid "Middle Level" +#~ msgstr "Nivel medio" + +#~ msgid "Middle Panorama" +#~ msgstr "Panoramización media" + +#~ msgid "Output Balance" +#~ msgstr "Balance de salida" + +#~ msgid "Delay L/R" +#~ msgstr "Retraso L/R" + +#~ msgid "Delay Left Right" +#~ msgstr "Retardo izquierdo/derecho" + +#~ msgid "Stereo Base" +#~ msgstr "Base estéreo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fase estéreo" + +#~ msgid "Running" +#~ msgstr "En ejecución" + +#~ msgid "Suspended" +#~ msgstr "Suspendido" + +#~ msgid "Idle" +#~ msgstr "Inactivo" + +#~ msgid "Creating" +#~ msgstr "En creación" + +#~ msgid "Error" +#~ msgstr "Error" + +#~ msgid "Unknown" +#~ msgstr "Desconocido" + +#~ msgid "channels" +#~ msgstr "canales" + +#~ msgid "Output Presets: " +#~ msgstr "Perfiles de salida: " + +#~ msgid "Input Presets: " +#~ msgstr "Perfiles de entrada: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efectos de audio para aplicaciones que utilizan PipeWire" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "Salir de EasyEffects. Útil cuando se está ejecutando en modo servicio." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Cargar un perfil. Por ejemplo: easyeffects -l musica" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Restablecer EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Ocultar la ventana." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Bypass global. 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +#~ "estado actual" + +#~ msgid "Show available presets." +#~ msgstr "Mostrar los perfiles disponibles." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Lista de archivos de respuesta a impulsos" + +#~ msgid "Import Impulse File" +#~ msgstr "Importar archivo de respuesta a impulsos" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Impulse Response" +#~ msgstr "Respuesta a impulsos" + +#~ msgid "Load Impulse" +#~ msgstr "Cargar archivo de respuesta a impulsos" + +#~ msgid "Remove Impulse" +#~ msgstr "Eliminar archivo de respuesta a impulsos" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Lista de archivos de respuesta a impulsos" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "No se pudo cargar el archivo de respuesta a impulsos" + +#~ msgid "Recorders" +#~ msgstr "Gravadores" + +#~ msgid "Players" +#~ msgstr "Reproductores" + +#~ msgid "Effects" +#~ msgstr "Efectos" + +#~ msgid "infinity" +#~ msgstr "infinito" + +#~ msgid "Import APO Preset File" +#~ msgstr "Importar archivo de perfil APO" + +#~ msgid "APO Presets" +#~ msgstr "Perfiles APO" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Eliminar perfil de carga automática" + +#~ msgid "Remove" +#~ msgstr "Eliminar" + +#~ msgid "Output Device" +#~ msgstr "Dispositivo de salida" + +#~ msgid "Add" +#~ msgstr "Agregar" + +#~ msgid "Import Preset" +#~ msgstr "Importar perfil" + +#~ msgid "Import Model File" +#~ msgstr "Importar archivo de modelo" + +#~ msgid "RNNoise Models" +#~ msgstr "Modelos RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Refuerzo de graves" + +#~ msgid "Bass Loudness" +#~ msgstr "Sonoridad de graves" + +#~ msgid "Convolver" +#~ msgstr "Convolucinador" + +#~ msgid "Crossfeed" +#~ msgstr "Alimentación cruzada" + +#~ msgid "Crystalizer" +#~ msgstr "Cristalizador" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Retraso" + +#~ msgid "Echo Canceller" +#~ msgstr "Cancelación de eco" + +#~ msgid "Equalizer" +#~ msgstr "Ecualizador" + +#~ msgid "Exciter" +#~ msgstr "Excitador" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Limiter" +#~ msgstr "Limitador" + +#~ msgid "Maximizer" +#~ msgstr "Maximizador" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compresor multibanda" + +#~ msgid "Multiband Gate" +#~ msgstr "Puerta de ruido multibanda" + +#~ msgid "Pitch" +#~ msgstr "Tono" + +#~ msgid "Reverberation" +#~ msgstr "Reverberación" + +#~ msgid "Noise Reduction" +#~ msgstr "Reducción de ruido" + +#~ msgid "Stereo Tools" +#~ msgstr "Herramientas estéreo" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar predeterminado" + +#~ msgid "Remove this plugin" +#~ msgstr "Eliminar este plugin" + +#~ msgid "Import Presets" +#~ msgstr "Importar perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar el servicio en el inicio de sesión" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Restablecer el volumen de los dispositivos de EasyEffect al inicio" diff --git a/po/news/es_CO.po b/po/news/es_CO.po new file mode 100644 index 0000000..eee6889 --- /dev/null +++ b/po/news/es_CO.po @@ -0,0 +1,2714 @@ +# Spanish (CO) translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Pulseeffects package. +# CCaroV , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-18 18:11+0000\n" +"Last-Translator: Santiago José Gutiérrez Llanos \n" +"Language-Team: Spanish (Colombia) \n" +"Language: es_CO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de audio paras las aplicaciones PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects es una herramienta avanzada de manipulación de audio. Incluye un " +"ecualizador, limitador, compresor y una herramienta de reverberación, solo " +"por mencionar algunos. Para complementar esto también hay un analizador de " +"espectro incorporado." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects es el sucesor de PulseEffects. EasyEffects solo admite el " +"servidor de audio de PipeWire. Los usuarios de PulseAudio deben usar " +"PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Debido a que EasyEffects utiliza el servidor de sonido PipeWire " +"predeterminado, funcionará con la mayoría, si no todas, las aplicaciones que " +"utilice. Todas las aplicaciones soportadas se presentan en la ventana " +"principal, donde cada una se puede habilitar individualmente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Además de manipular el sonido de salida, EasyEffects puede aplicar efectos a " +"dispositivos de entrada, como micrófonos. Esto es útil, por ejemplo, en la " +"grabación de audio, pero también funciona correctamente durante " +"conversaciones de voces." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Cuando EasyEffects esté activo este convenientemente recordará la " +"configuración usada en la última sesión. También es posible guardar la " +"configuración actual como un perfil." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "La página principal que muestra dos aplicaciones de salida de audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "La página de potenciador de graves que muestra los controles de audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "La página convolver que muestra los controles de audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +#, fuzzy +msgid "Many translation updates" +msgstr "Traducciones actualizadas" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"El plugin autogain ahora permite al usuario seleccionar cuál de las tres " +"sonoridades se utilizan para calcular la geométrica" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"El plugin autogain ahora permite establecer el historial máximo y ya no usa " +"el modo `libebur128` histograma." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"El icono de EasyEffects se ha actualizado de una manera que debería hacerlo " +"visible en los escritorios QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"La opción de línea de comandos que devuelve el estado de derivación global " +"está funcionando de nuevo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"El filtro de crossfeed debería tratar mejor con los interruptores de " +"latencia dinámica de PipeWire. Los saltos en el nivel de volumen ya no " +"deberían ocurrir en estas situaciones." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Corregido un error que impedía que los micrófonos mono funcionaran " +"correctamente con EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Soporte para la próxima versión de PipeWire `0.3.44`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"El filtro de autogain debe tratar mejor con los interruptores de latencia " +"dinámica de PipeWire. Los saltos en el nivel de volumen ya no deberían " +"ocurrir en estas situaciones." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Hemos añadido una opción que permite restablecer el volumen y el estado de " +"silencio de nuestros dispositivos virtuales cuando se inicie EasyEffects. " +"Debería ayudar con los casos en los que nuestros dispositivos son " +"silenciados por el servidor de audio por razones desconocidas." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Mejor soporte para la suspensión de la computadora." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Traducciones actualizadas" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Se ha corregido un error por el que al intentar crear un perfil de carga " +"automática sin tener ajustes preestablecidos la aplicación se bloqueaba." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"se ha Corregido un error donde el establecimiento de una banda de " +"ecualizador `calidad` a `cero` daría lugar a un accidente de aplicación." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita se utiliza para crear algunas partes de nuestra ventana y para " +"manejar el cambio entre temas oscuros y claros." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" +"El menú de configuración ha sido rediseñado usando los widgets de LibAdwaita." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +#, fuzzy +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"Ecualizador APO función de importación preestablecida se ha mejorado para " +"aplicar no solo el filtro de Bell, sino también otros soportados" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"La función `Reiniciar todas las configuraciones` de nuestro menú debería " +"funcionar ahora en Flatpak." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"Tenemos una nueva opción que permite al usuario deshabilitar nuestros menús " +"`autohide`. Esto puede ayudar a solucionar algunos errores que los menús " +"Popover tienen actualmente en gtk4." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"Análisis más robusto para importar preajustes APO guardados con coma como " +"separador de miles en banda de frecuencia central." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"La biblioteca fmt es una nueva dependencia Al menos mientras los " +"compiladores de c++ no implementan sus características. Se espera que esto " +"suceda en los próximos años." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM y GLIBMM ya no son una dependencia. Ahora usamos gtk4 directamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"Ahora es posible combinar respuestas de impulso en la interfaz Convolver. Se " +"genera un nuevo archivo de impulso y debe ser visible en la lista de " +"impulsos." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"Dibujos `x ejes` mejorados en nuestras gráficas. Ahora el número de " +"etiquetas se ajusta dinámicamente dependiendo del ancho de nuestra ventana." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"La documentación se ha actualizado para reflejar las nuevas características " +"de EasyEffects. Se han eliminado las referencias antiguas sobre " +"PulseEffects. El botón de documentación se ha añadido en la sección de menú." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"Cuando un spinbutton se llena con un valor fuera de rango, ahora se " +"actualiza con el valor más bajo/ más alto en lugar de reinicializar al " +"anterior." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta versión añade las siguientes características:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Esta versión corrige los siguientes errores:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Hay una nueva configuración que permite al usuario seleccionar un tiempo " +#~ "de inactividad para la canalización. Cuando no se reproduce ningún cliente" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "desde nuestros dispositivos, los filtros se desvincularán después de que " +#~ "se alcance el tiempo de espera. Esto se hace para asegurarse de que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "" +#~ "no desperdiciamos el silencio de procesamiento de energía de la CPU." + +#~ msgid "mean." +#~ msgstr "medida." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Esto debe evitar los casos en los que el `Integrated` loudness se queda " +#~ "atascado para siempre en el mismo valor." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta versión corrige el siguiente error:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esta versión incluye las siguientes novedades:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ecualizador, Compresor y Otros Efectos de Sonido" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Perfiles\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Ajustes" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Perfiles" + +#~ msgid "Global Bypass" +#~ msgstr "Bypass Global" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Paredes Vacías" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplicaciones" + +#~ msgid "Target" +#~ msgstr "Objetivo" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Máximo" + +#~ msgid "Momentary" +#~ msgstr "Momentáneo" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Corto Plazo" + +#~ msgid "Integrated" +#~ msgstr "Integrado" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Usar la Media Geométrica" + +#~ msgid "Reset History" +#~ msgstr "Restablecer Historial" + +#~ msgid "Relative" +#~ msgstr "Reativo" + +#~ msgid "Range" +#~ msgstr "Rango" + +#~ msgid "Loudness" +#~ msgstr "Volumen" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Ganancia de Entrada" + +#~ msgid "Input" +#~ msgstr "Entrada" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Ganancia de Entrada" + +#~ msgid "Output" +#~ msgstr "Salida" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Caudal de Salida" + +#~ msgid "Reset" +#~ msgstr "Restablecer" + +#~ msgid "Name" +#~ msgstr "Nombre" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Remover preajuste de autocargar" + +#~ msgid "Listen" +#~ msgstr "Escuchar" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mezclar Harmónicos" + +#~ msgid "3rd" +#~ msgstr "3era" + +#~ msgid "2nd" +#~ msgstr "2nda" + +#~ msgid "Amount" +#~ msgstr "Cantidad" + +#~ msgid "Harmonics" +#~ msgstr "Harmónicos" + +#~ msgid "Scope" +#~ msgstr "Alcance" + +#~ msgid "Floor" +#~ msgstr "Fondo" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Fondo" + +#~ msgid "Link" +#~ msgstr "Acoplar" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Aplicaciones" + +#~ msgid "Compressor" +#~ msgstr "Compresor" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Downward" +#~ msgstr "Hacia Abajo" + +#~ msgid "Upward" +#~ msgstr "Hacia Arriba" + +#~ msgid "Compression Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Cantidad" + +#~ msgid "Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Tiempo Real" + +#~ msgid "Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Límite" + +#~ msgid "Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Tiempo Real" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Límite" + +#~ msgid "Ratio" +#~ msgstr "Radio" + +#~ msgid "Knee" +#~ msgstr "Codo" + +#~ msgid "Makeup" +#~ msgstr "Amplificación" + +#~ msgid "Sidechain" +#~ msgstr "Cadena Lateral" + +#~ msgid "Peak" +#~ msgstr "Pico" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Paso Bajo" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Cadena Lateral" + +#~ msgid "Source" +#~ msgstr "Fuente" + +#~ msgid "Middle" +#~ msgstr "Medio" + +#~ msgid "Side" +#~ msgstr "Lado" + +#~ msgid "Left" +#~ msgstr "Izquierda" + +#~ msgid "Right" +#~ msgstr "Derecha" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Cadena Lateral" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Feed-forward" +#~ msgstr "Adelantar" + +#~ msgid "Feed-back" +#~ msgstr "Realimentar" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Efectos de Entrada" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Pre-amplificación" + +#~ msgid "Reactivity" +#~ msgstr "Reactividad" + +#~ msgid "Lookahead" +#~ msgstr "Atenuación" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Pase Alto" + +#~ msgid "Frequency" +#~ msgstr "Frecuencia" + +#~ msgid "Off" +#~ msgstr "Apagdo" + +#, fuzzy +#~ msgid "12 dB/oct" +#~ msgstr "12dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "24 dB/oct" +#~ msgstr "24dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "36 dB/oct" +#~ msgstr "36dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Filtro de Pase Alto" + +#~ msgid "Gain" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Pendiente" + +#~ msgid "Curve" +#~ msgstr "Curva" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Canales" + +#~ msgid "R" +#~ msgstr "R" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Dividir Canales" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Respuesta de Impulse" + +#~ msgid "Stereo Width" +#~ msgstr "Amplitud Estéreo" + +#~ msgid "Spectrum" +#~ msgstr "Espectro" + +#, fuzzy +#~ msgid "Log Scale" +#~ msgstr "Escala" + +#~ msgid "Autogain" +#~ msgstr "AutoGain" + +#~ msgid "Rate" +#~ msgstr "Tasa" + +#~ msgid "Samples" +#~ msgstr "Muestras" + +#~ msgid "Duration" +#~ msgstr "Duración" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Respuesta de Impulse" + +#~ msgid "Import Impulse" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Default" +#~ msgstr "Predeterminado" + +#~ msgid "Cutoff" +#~ msgstr "Umbral" + +#~ msgid "Feed" +#~ msgstr "Alimentar" + +#~ msgid "Bypass" +#~ msgstr "Derivación" + +#~ msgid "Mute" +#~ msgstr "Silenciar" + +#~ msgid "Detection" +#~ msgstr "Detección" + +#~ msgid "Wide" +#~ msgstr "Ancho" + +#~ msgid "Split" +#~ msgstr "Dividir" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Dividir" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Pico" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Nivel" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Pico Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frecuencia" + +#~ msgid "Laxity" +#~ msgstr "Relajamiento" + +#~ msgid "Detected" +#~ msgstr "Detectado" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Reducción" + +#~ msgid "Frame Size" +#~ msgstr "Tamaño del Marco" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filtro" + +#~ msgid "Bands" +#~ msgstr "Bandas" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "Split Channels" +#~ msgstr "Dividir Canales" + +#~ msgid "Flat Response" +#~ msgstr "Respuesta Plana" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calcular Frecuencias" + +#~ msgid "Bell" +#~ msgstr "Timbre" + +#~ msgid "High Pass" +#~ msgstr "Pase Alto" + +#~ msgid "High Shelf" +#~ msgstr "Estante Alto" + +#~ msgid "Low Pass" +#~ msgstr "Paso Bajo" + +#~ msgid "Low Shelf" +#~ msgstr "Estante Bajo" + +#~ msgid "Notch" +#~ msgstr "Muesca" + +#~ msgid "Resonance" +#~ msgstr "Resonancia" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Paso Bajo" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Tipo" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Modo" + +#~ msgid "Slope" +#~ msgstr "Pendiente" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Pendiente" + +#~ msgid "Width" +#~ msgstr "Anchura" + +#~ msgid "Quality" +#~ msgstr "Calidad" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Borrar este perfil" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Paso Bajo" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Paso Bajo" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Paso Bajo" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Pase Alto" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Pase Alto" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Pase Alto" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Paso de Banda" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Paso de Banda" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Paso de Banda" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Rechazo de Banda" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Rechazo de Banda" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct Rechazo de Banda" + +#~ msgid "Inertia" +#~ msgstr "Inercia" + +#~ msgid "Gate" +#~ msgstr "Puerta de Ruido" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Tiempo Real" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Integrado" + +#~ msgid "Gating" +#~ msgstr "Puerta" + +#~ msgid "Oversampling" +#~ msgstr "Sobre Muestreo" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Ancho" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Ancho" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Ancho de Linea" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Ancho de Linea" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Mesa Sinusoidal" + +#~ msgid "None" +#~ msgstr "Ninguno" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Pre-amplificación" + +#~ msgid "Stereo Link" +#~ msgstr "Acoplamiento Estéreo" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Ganancia Automática" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Derecha" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Tamaño del Marco" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Salida" + +#~ msgid "Ceiling" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Modo" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtro" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Calcular Frecuencias" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Calcular Frecuencias" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Ganancia de Entrada" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Curva" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Dividir" + +#~ msgid "Split 1/2" +#~ msgstr "Dividir 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frecuencia" + +#~ msgid "Split 2/3" +#~ msgstr "Dividir 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frecuencia" + +#~ msgid "Split 3/4" +#~ msgstr "Dividir 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frecuencia" + +#~ msgid "Sub Band" +#~ msgstr "Sub Banda" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Amplificación" + +#~ msgid "Max Reduction" +#~ msgstr "Reducción" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "Low Band" +#~ msgstr "Banda Baja" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "Mid Band" +#~ msgstr "Banda Media" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "High Band" +#~ msgstr "Banda Alta" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Reverberación" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Tasa de Muestreo por Defecto" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Ganancia Máxima" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Profundidad Predeterminda" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Efectos de Salida" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Efectos de Entrada" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#~ msgid "Modules" +#~ msgstr "Módulos" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Módulos" + +#~ msgid "Clients" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Señal de Prueba" + +#~ msgid "State" +#~ msgstr "Estado" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Habilitar" + +#~ msgid "Channels" +#~ msgstr "Canales" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Canales" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Mesa Sinusoidal" + +#~ msgid "White Noise" +#~ msgstr "Ruido Blanco" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Estante Alto" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Calidad" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formato" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Frescura" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Compresión" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Clip Suave" + +#~ msgid "Cents" +#~ msgstr "Acentos" + +#~ msgid "Semitones" +#~ msgstr "Semitonos" + +#~ msgid "Octaves" +#~ msgstr "Octavas" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "Efectos" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Servidor" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Procesar Todas las Salidas" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Procesar Todas las Entradas" + +#~ msgid "Use Dark Theme" +#~ msgstr "Usar Tema Oscuro" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Espectro" + +#~ msgid "Bars" +#~ msgstr "Barras" + +#~ msgid "Lines" +#~ msgstr "Lineas" + +#~ msgid "Points" +#~ msgstr "Puntos" + +#~ msgid "Height" +#~ msgstr "Altura" + +#~ msgid "Line Width" +#~ msgstr "Ancho de Linea" + +#~ msgid "Fill" +#~ msgstr "Rellenar" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Máximo" + +#~ msgid "Maximum" +#~ msgstr "Máximo" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Guardar esta configuración a este perfil" + +#~ msgid "Remove this preset file" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Crear Perfil" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importar Preajuste" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#~ msgid "High Frequency Damping" +#~ msgstr "Amortiguación de Alta Frecuencia" + +#~ msgid "Room Size" +#~ msgstr "Tamaño de la Habitación" + +#~ msgid "Small" +#~ msgstr "Pequeña" + +#~ msgid "Medium" +#~ msgstr "Mediana" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Túnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/Liso" + +#~ msgid "Experimental" +#~ msgstr "Experimental" + +#~ msgid "Diffusion" +#~ msgstr "Difusión" + +#~ msgid "Pre Delay" +#~ msgstr "Pre Retraso" + +#~ msgid "Decay Time" +#~ msgstr "Tiempo de Decaimiento" + +#~ msgid "Wet Amount" +#~ msgstr "Cantidad húmeda" + +#~ msgid "Wet Level" +#~ msgstr "Nivel húmedo" + +#~ msgid "Dry Amount" +#~ msgstr "Gran cantidad" + +#~ msgid "Dry Level" +#~ msgstr "nivel seco" + +#~ msgid "Bass Cut" +#~ msgstr "Corte de Bajos" + +#~ msgid "Treble Cut" +#~ msgstr "Corte de Sobreagudos" + +#~ msgid "Ambience" +#~ msgstr "Ambiente" + +#~ msgid "Empty Walls" +#~ msgstr "Paredes Vacías" + +#~ msgid "Room" +#~ msgstr "Habitación" + +#~ msgid "Large Empty Hall" +#~ msgstr "Habitación Vacía Grande" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Habitación Ocupada Grande" + +#~ msgid "Import Model" +#~ msgstr "Importar Modelo" + +#~ msgid "Models" +#~ msgstr "Modelos" + +#~ msgid "Standard Model" +#~ msgstr "Modelo estándar" + +#~ msgid "RNNoise Models List" +#~ msgstr "RNNoise Lista de Modelos" + +#~ msgid "Active Model" +#~ msgstr "Modelo activo" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Modelo estándar RNNoise" + +#~ msgid "Overview" +#~ msgstr "Visión general" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Abrir el manual de EasyEffects" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Pantalla completa/Restaurar desde pantalla completa" + +#~ msgid "Close the Window" +#~ msgstr "Cierra la ventana" + +#~ msgid "Quit EasyEffects" +#~ msgstr "Salir de EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#~ msgid "Input Balance" +#~ msgstr "Balance de insumos" + +#~ msgid "Softclip" +#~ msgstr "Clip Suave" + +#~ msgid "Softclip Level" +#~ msgstr "Nivel del Clip Suave" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matriz Estéreo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Estéreo Predeterminado)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Estéreo hacia Medio Lado)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Medio Lado - Estéreo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (Canal Izquierdo Mono)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Canal Derecho Mono)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Suma Mono L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Intercambiar Canales)" + +#~ msgid "Stereo Mode" +#~ msgstr "Modo Estéreo" + +#~ msgid "Invert Phase" +#~ msgstr "Invertir Fase" + +#~ msgid "Side Level" +#~ msgstr "Nivel Lateral" + +#~ msgid "Side Balance" +#~ msgstr "Balance Lateral" + +#~ msgid "Middle Level" +#~ msgstr "Nivel Medio" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama Medio" + +#~ msgid "Output Balance" +#~ msgstr "Balance de producción" + +#~ msgid "Delay L/R" +#~ msgstr "Retraso L/R" + +#~ msgid "Delay Left Right" +#~ msgstr "Retraso Izquierda Derecha" + +#~ msgid "Stereo Base" +#~ msgstr "Base Estéreo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fase Estéreo" + +#~ msgid "Running" +#~ msgstr "Corriendo" + +#~ msgid "Suspended" +#~ msgstr "Suspendido" + +#~ msgid "Idle" +#~ msgstr "Inactivo" + +#~ msgid "Creating" +#~ msgstr "Creando" + +#~ msgid "Error" +#~ msgstr "Error" + +#~ msgid "Unknown" +#~ msgstr "Desconocido" + +#~ msgid "channels" +#~ msgstr "canales" + +#~ msgid "Output Presets: " +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#~ msgid "Input Presets: " +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efectos de audio para aplicaciones PipeWire" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "Salir de EasyEffects. Útil cuando se está ejecutando en modo de servicio." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Cargar un perfil. Ejemplo: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Restablecer EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Oculta la ventana." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Bypass global, 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +#~ "estado" + +#~ msgid "Show available presets." +#~ msgstr "Mostrar perfiles disponibles." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Import Impulse File" +#~ msgstr "Importar impulso de archivo" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Impulse Response" +#~ msgstr "Respuesta de Impulse" + +#~ msgid "Load Impulse" +#~ msgstr "Cargar impulso" + +#~ msgid "Remove Impulse" +#~ msgstr "Remover impulso" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "No se pudo encontrar el archivo Impulse" + +#~ msgid "Recorders" +#~ msgstr "grabadoras" + +#~ msgid "Players" +#~ msgstr "Jugadores" + +#~ msgid "Effects" +#~ msgstr "Efectos" + +#~ msgid "infinity" +#~ msgstr "infinidad" + +#~ msgid "Import APO Preset File" +#~ msgstr "Importar archivo de preajuste APO" + +#~ msgid "APO Presets" +#~ msgstr "Preajustes APO" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Remover preajuste de autocargar" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Efectos de Salida" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Import Preset" +#~ msgstr "Importar Preajuste" + +#~ msgid "Import Model File" +#~ msgstr "Importar archivo modelo" + +#~ msgid "RNNoise Models" +#~ msgstr "Modelos RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "potenciador de graves" + +#~ msgid "Bass Loudness" +#~ msgstr "sonoridad de graves" + +#~ msgid "Convolver" +#~ msgstr "enrevesado" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Cristalizador" + +#~ msgid "Deesser" +#~ msgstr "DeEsser" + +#~ msgid "Delay" +#~ msgstr "Retraso" + +#~ msgid "Echo Canceller" +#~ msgstr "Cancelador de Eco" + +#~ msgid "Equalizer" +#~ msgstr "Ecualizador" + +#~ msgid "Exciter" +#~ msgstr "Excitador" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Limiter" +#~ msgstr "Limitador" + +#~ msgid "Maximizer" +#~ msgstr "Maximizador" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compresor Multibanda" + +#~ msgid "Multiband Gate" +#~ msgstr "Puerta Multibanda" + +#~ msgid "Pitch" +#~ msgstr "Tono" + +#~ msgid "Reverberation" +#~ msgstr "Reverberación" + +#~ msgid "Noise Reduction" +#~ msgstr "Reducción de ruido" + +#~ msgid "Stereo Tools" +#~ msgstr "Herramientas Estéreo" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Borrar este perfil" + +#~ msgid "Import Presets" +#~ msgstr "Importar Perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar Servicio al Iniciar Sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Lista Negra" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrar Micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "Faster" +#~ msgstr "Más Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar Formato" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Ayuda" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Color Personalizado" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Degradado" + +#~ msgid "Spectrum Color" +#~ msgstr "Color del Espectro" + +#~ msgid "Gradient Color" +#~ msgstr "Color del Degradado" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Exponent" +#~ msgstr "Exponente" + +#~ msgid "Sampling" +#~ msgstr "Muestreo" + +#~ msgid "Block Size" +#~ msgstr "Tamaño de Bloque" + +#~ msgid "Pipeline Input" +#~ msgstr "Caudal de Entrada" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Niceness" +#~ msgstr "Meticulosidad" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridad" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Priority" +#~ msgstr "Prioridad" + +# Resampler does not have an official translation +#~ msgid "Resampler" +#~ msgstr "Remuestreador" + +#~ msgid "Default Source" +#~ msgstr "Fuente Predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Muestreo Predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapa de Canales" + +#~ msgid "File" +#~ msgstr "Archivo" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +# Resamplers does not have an official translation +#~ msgid "Resamplers" +#~ msgstr "Remuestreadores" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silencio" + +#~ msgid "-23" +#~ msgstr "-23" + +#~ msgid "Weights" +#~ msgstr "Fuerza" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Silenciado" + +#~ msgid "Distant Headphones" +#~ msgstr "Audífonos a Distancia" + +#~ msgid "Reset Equalizer" +#~ msgstr "Restablecer Ecualizador" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Dry" +#~ msgstr "Secar" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar Archivo de Respuesta Impulse" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione el Archivo de Respuesta Impulse" + +#~ msgid "Loudness Range" +#~ msgstr "Rango de Sonoridad" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Después" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Extendido" + +#~ msgid "Delay Agnostic" +#~ msgstr "Retraso Agnóstico" + +#~ msgid "Suppresion Level" +#~ msgstr "Nivel de Supresión" + +#~ msgid "Low" +#~ msgstr "Bajo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Very High" +#~ msgstr "Muy Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Ruido" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptado Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Arreglo Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Regulador de Ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidad de Detección" + +#~ msgid "Very Low" +#~ msgstr "Muy Bajo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automáticamente aplicar este perfil siempre que el dispositivo actual " +#~ "esté conectado" + +#~ msgid "Volume" +#~ msgstr "Volumen" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cuadrado" + +#~ msgid "Saw" +#~ msgstr "Sierra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruido Rosa" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruido Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruido Rojo" + +#~ msgid "Blue Noise" +#~ msgstr "Ruido Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruido Violeta" + +#~ msgid "Window" +#~ msgstr "Ventana" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruido" + +#~ msgid "Subtract Noise" +#~ msgstr "Reducir Ruido" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Establecer el volumen y encender/apagar los efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Incluye un ecualizador con perfiles incluidos" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "reproduciendo" diff --git a/po/news/es_MX.po b/po/news/es_MX.po new file mode 100644 index 0000000..0854bcc --- /dev/null +++ b/po/news/es_MX.po @@ -0,0 +1,2598 @@ +# Spanish (MX) translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Pulseeffects package. +# CCaroV , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2020-01-09 18:18-0500\n" +"Last-Translator: Christian\n" +"Language-Team: \n" +"Language: es_CO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de Sonido para las Aplicaciones de PulseAudio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +#, fuzzy +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects es una avanzada herramienta de manipulación de audio. Incluye un " +"ecualizador, limitador, compresor y herramienta de reverberación , solo por " +"mencionar algunos. Para complementar esto hay también incluido un analizador " +"de espectro." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +#, fuzzy +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Debido a que EasyEffects usa por defecto el servicio de sonido PulseAudio, " +"este funcionará con la mayoría, sino que todas, las aplicaciones que use. " +"Todas las aplicaciones son mostradas en la ventana principal donde pueden " +"ser habilitadas individualmente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Además de manipular el sonido de salida, EasyEffects puede aplicar efectos a " +"dispositivos de entrada, como micrófonos. Esto es útil, por ejemplo, en la " +"grabación de audio, pero también funciona correctamente durante " +"conversaciones de voces." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Cuando EasyEffects esté activo este convenientemente recordará la " +"configuración usada en la última sesión. También es posible guardar la " +"configuración actual como un perfil." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ecualizador, Compresor y Otros Efectos de Sonido" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Perfiles\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Ajustes" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Perfiles" + +#~ msgid "Global Bypass" +#~ msgstr "Bypass Global" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Paredes Vacías" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplicaciones" + +#~ msgid "Target" +#~ msgstr "Objetivo" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Máximo" + +#~ msgid "Momentary" +#~ msgstr "Momentáneo" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Corto Plazo" + +#~ msgid "Integrated" +#~ msgstr "Integrado" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Usar la Media Geométrica" + +#~ msgid "Reset History" +#~ msgstr "Restablecer Historial" + +#~ msgid "Relative" +#~ msgstr "Reativo" + +#~ msgid "Range" +#~ msgstr "Rango" + +#~ msgid "Loudness" +#~ msgstr "Loudness" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Ganancia de Entrada" + +#~ msgid "Input" +#~ msgstr "Entrada" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Ganancia de Entrada" + +#~ msgid "Output" +#~ msgstr "Salida" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Caudal de Salida" + +#~ msgid "Reset" +#~ msgstr "Restablecer" + +#~ msgid "Name" +#~ msgstr "Nombre" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Borrar este perfil" + +#~ msgid "Listen" +#~ msgstr "Escuchar" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mezclar Harmónicos" + +#~ msgid "3rd" +#~ msgstr "3era" + +#~ msgid "2nd" +#~ msgstr "2nda" + +#~ msgid "Amount" +#~ msgstr "Cantidad" + +#~ msgid "Harmonics" +#~ msgstr "Harmónicos" + +#~ msgid "Scope" +#~ msgstr "Alcance" + +#~ msgid "Floor" +#~ msgstr "Fondo" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Fondo" + +#~ msgid "Link" +#~ msgstr "Acoplar" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Aplicaciones" + +#~ msgid "Compressor" +#~ msgstr "Compresor" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Downward" +#~ msgstr "Hacia Abajo" + +#~ msgid "Upward" +#~ msgstr "Hacia Arriba" + +#~ msgid "Compression Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Cantidad" + +#~ msgid "Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Tiempo Real" + +#~ msgid "Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Límite" + +#~ msgid "Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Tiempo Real" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Límite" + +#~ msgid "Ratio" +#~ msgstr "Radio" + +#~ msgid "Knee" +#~ msgstr "Codo" + +#~ msgid "Makeup" +#~ msgstr "Amplificación" + +#~ msgid "Sidechain" +#~ msgstr "Cadena Lateral" + +#~ msgid "Peak" +#~ msgstr "Pico" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Paso Bajo" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Cadena Lateral" + +#~ msgid "Source" +#~ msgstr "Fuente" + +#~ msgid "Middle" +#~ msgstr "Medio" + +#~ msgid "Side" +#~ msgstr "Lado" + +#~ msgid "Left" +#~ msgstr "Izquierda" + +#~ msgid "Right" +#~ msgstr "Derecha" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Cadena Lateral" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Feed-forward" +#~ msgstr "Adelantar" + +#~ msgid "Feed-back" +#~ msgstr "Realimentar" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Efectos de Entrada" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Pre-amplificación" + +#~ msgid "Reactivity" +#~ msgstr "Reactividad" + +#~ msgid "Lookahead" +#~ msgstr "Atenuación" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Pase Alto" + +#~ msgid "Frequency" +#~ msgstr "Frecuencia" + +#~ msgid "Off" +#~ msgstr "Apagdo" + +#, fuzzy +#~ msgid "12 dB/oct" +#~ msgstr "12dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "24 dB/oct" +#~ msgstr "24dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "36 dB/oct" +#~ msgstr "36dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Filtro de Pase Alto" + +#~ msgid "Gain" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Pendiente" + +#~ msgid "Curve" +#~ msgstr "Curva" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Canales" + +#~ msgid "R" +#~ msgstr "R" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Dividir Canales" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Respuesta de Impulse" + +#~ msgid "Stereo Width" +#~ msgstr "Amplitud Estéreo" + +#~ msgid "Spectrum" +#~ msgstr "Espectro" + +#, fuzzy +#~ msgid "Log Scale" +#~ msgstr "Escala" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Ganancia Automática" + +#~ msgid "Rate" +#~ msgstr "Tasa" + +#~ msgid "Samples" +#~ msgstr "Muestras" + +#~ msgid "Duration" +#~ msgstr "Duración" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Respuesta de Impulse" + +#~ msgid "Import Impulse" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Default" +#~ msgstr "Predeterminado" + +#~ msgid "Cutoff" +#~ msgstr "Umbral" + +#~ msgid "Feed" +#~ msgstr "Alimentar" + +#~ msgid "Bypass" +#~ msgstr "Bypass" + +#~ msgid "Mute" +#~ msgstr "Silenciar" + +#~ msgid "Detection" +#~ msgstr "Detección" + +#~ msgid "Wide" +#~ msgstr "Ancho" + +#~ msgid "Split" +#~ msgstr "Dividir" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Dividir" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Pico" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Nivel" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Pico Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frecuencia" + +#~ msgid "Laxity" +#~ msgstr "Relajamiento" + +#~ msgid "Detected" +#~ msgstr "Detectado" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Reducción" + +#~ msgid "Frame Size" +#~ msgstr "Tamaño del Marco" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filtro" + +#~ msgid "Bands" +#~ msgstr "Bandas" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "Split Channels" +#~ msgstr "Dividir Canales" + +#~ msgid "Flat Response" +#~ msgstr "Respuesta Plana" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calcular Frecuencias" + +#~ msgid "Bell" +#~ msgstr "Timbre" + +#~ msgid "High Pass" +#~ msgstr "Pase Alto" + +#~ msgid "High Shelf" +#~ msgstr "Estante Alto" + +#~ msgid "Low Pass" +#~ msgstr "Paso Bajo" + +#~ msgid "Low Shelf" +#~ msgstr "Estante Bajo" + +#~ msgid "Notch" +#~ msgstr "Muesca" + +#~ msgid "Resonance" +#~ msgstr "Resonancia" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Paso Bajo" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Tipo" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Modo" + +#~ msgid "Slope" +#~ msgstr "Pendiente" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Pendiente" + +#~ msgid "Width" +#~ msgstr "Anchura" + +#~ msgid "Quality" +#~ msgstr "Calidad" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Borrar este perfil" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Paso Bajo" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Paso Bajo" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Paso Bajo" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Pase Alto" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Pase Alto" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Pase Alto" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Paso de Banda" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Paso de Banda" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Paso de Banda" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Rechazo de Banda" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Rechazo de Banda" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct Rechazo de Banda" + +#~ msgid "Inertia" +#~ msgstr "Inercia" + +#~ msgid "Gate" +#~ msgstr "Puerta de Ruido" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Tiempo Real" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Integrado" + +#~ msgid "Gating" +#~ msgstr "Puerta" + +#~ msgid "Oversampling" +#~ msgstr "Sobre Muestreo" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Ancho" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Ancho" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Ancho de Linea" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Ancho de Linea" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Mesa Sinusoidal" + +#~ msgid "None" +#~ msgstr "Ninguno" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Pre-amplificación" + +#~ msgid "Stereo Link" +#~ msgstr "Acoplamiento Estéreo" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Ganancia Automática" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Derecha" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Tamaño del Marco" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Salida" + +#~ msgid "Ceiling" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Modo" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtro" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Calcular Frecuencias" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Calcular Frecuencias" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Ganancia de Entrada" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Curva" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Dividir" + +#~ msgid "Split 1/2" +#~ msgstr "Dividir 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frecuencia" + +#~ msgid "Split 2/3" +#~ msgstr "Dividir 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frecuencia" + +#~ msgid "Split 3/4" +#~ msgstr "Dividir 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frecuencia" + +#~ msgid "Sub Band" +#~ msgstr "Sub Banda" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Amplificación" + +#~ msgid "Max Reduction" +#~ msgstr "Reducción" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "Low Band" +#~ msgstr "Banda Baja" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "Mid Band" +#~ msgstr "Banda Media" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "High Band" +#~ msgstr "Banda Alta" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Reverberación" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Tasa de Muestreo por Defecto" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Ganancia Máxima" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Profundidad Predeterminda" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Efectos de Salida" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Efectos de Entrada" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#~ msgid "Modules" +#~ msgstr "Módulos" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Módulos" + +#~ msgid "Clients" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Señal de Prueba" + +#~ msgid "State" +#~ msgstr "Estado" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Habilitar" + +#~ msgid "Channels" +#~ msgstr "Canales" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Canales" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Mesa Sinusoidal" + +#~ msgid "White Noise" +#~ msgstr "Ruido Blanco" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Estante Alto" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Calidad" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formato" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Frescura" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Compresión" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Clip Suave" + +#~ msgid "Cents" +#~ msgstr "Acentos" + +#~ msgid "Semitones" +#~ msgstr "Semitonos" + +#~ msgid "Octaves" +#~ msgstr "Octavas" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Servidor" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Procesar Todas las Salidas" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Procesar Todas las Entradas" + +#~ msgid "Use Dark Theme" +#~ msgstr "Usar Tema Oscuro" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Espectro" + +#~ msgid "Bars" +#~ msgstr "Barras" + +#~ msgid "Lines" +#~ msgstr "Lineas" + +#~ msgid "Points" +#~ msgstr "Puntos" + +#~ msgid "Height" +#~ msgstr "Altura" + +#~ msgid "Line Width" +#~ msgstr "Ancho de Linea" + +#~ msgid "Fill" +#~ msgstr "Rellenar" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Máximo" + +#~ msgid "Maximum" +#~ msgstr "Máximo" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Guardar esta configuración a este perfil" + +#~ msgid "Remove this preset file" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Crear Perfil" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importar Perfiles" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#~ msgid "High Frequency Damping" +#~ msgstr "Amortiguación de Alta Frecuencia" + +#~ msgid "Room Size" +#~ msgstr "Tamaño de la Habitación" + +#~ msgid "Small" +#~ msgstr "Pequeña" + +#~ msgid "Medium" +#~ msgstr "Mediana" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Túnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/Liso" + +#~ msgid "Experimental" +#~ msgstr "Experimental" + +#~ msgid "Diffusion" +#~ msgstr "Difusión" + +#~ msgid "Pre Delay" +#~ msgstr "Pre Retraso" + +#~ msgid "Decay Time" +#~ msgstr "Tiempo de Decaimiento" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Cantidad" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Nivel Objetivo" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Cantidad" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Nivel" + +#~ msgid "Bass Cut" +#~ msgstr "Corte de Bajos" + +#~ msgid "Treble Cut" +#~ msgstr "Corte de Sobreagudos" + +#~ msgid "Ambience" +#~ msgstr "Ambiente" + +#~ msgid "Empty Walls" +#~ msgstr "Paredes Vacías" + +#~ msgid "Room" +#~ msgstr "Habitación" + +#~ msgid "Large Empty Hall" +#~ msgstr "Habitación Vacía Grande" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Habitación Ocupada Grande" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Models" +#~ msgstr "Modo" + +#, fuzzy +#~ msgid "Active Model" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Restablecer EasyEffects." + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Balance" + +#~ msgid "Softclip" +#~ msgstr "Clip Suave" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Clip Suave" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matriz Estéreo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Estéreo Predeterminado)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Estéreo hacia Medio Lado)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Medio Lado - Estéreo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (Canal Izquierdo Mono)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Canal Derecho Mono)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Suma Mono L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Intercambiar Canales)" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Base Estéreo" + +#~ msgid "Invert Phase" +#~ msgstr "Invertir Fase" + +#~ msgid "Side Level" +#~ msgstr "Nivel Lateral" + +#~ msgid "Side Balance" +#~ msgstr "Balance Lateral" + +#~ msgid "Middle Level" +#~ msgstr "Nivel Medio" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama Medio" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Balance" + +#~ msgid "Delay L/R" +#~ msgstr "Retraso L/R" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Retraso L/R" + +#~ msgid "Stereo Base" +#~ msgstr "Base Estéreo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fase Estéreo" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "Puerta" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Canales" + +#~ msgid "Output Presets: " +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#~ msgid "Input Presets: " +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efectos de Sonido para las aplicaciones de PulseAudio" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "Salir de EasyEffects. Útil cuando se está ejecutando en modo de servicio." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Cargar un perfil. Ejemplo: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Restablecer EasyEffects." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Bypass global, 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +#~ "estado" + +#~ msgid "Show available presets." +#~ msgstr "Mostrar perfiles disponibles." + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Import Impulse File" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Impulse Response" +#~ msgstr "Respuesta de Impulse" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "No se pudo encontrar el archivo Impulse" + +#, fuzzy +#~ msgid "Recorders" +#~ msgstr "Bordes" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "infinidad" + +#, fuzzy +#~ msgid "Import APO Preset File" +#~ msgstr "Importar Perfiles" + +#, fuzzy +#~ msgid "APO Presets" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Efectos de Salida" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Importar Perfiles" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Bass Enhancer" +#~ msgstr "Potenciado de Graves" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Loudness" + +#~ msgid "Convolver" +#~ msgstr "Convolver" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Cristalizador" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Retraso" + +#~ msgid "Echo Canceller" +#~ msgstr "Cancelador de Eco" + +#~ msgid "Equalizer" +#~ msgstr "Ecualizador" + +#~ msgid "Exciter" +#~ msgstr "Excitador" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Limiter" +#~ msgstr "Limitador" + +#~ msgid "Maximizer" +#~ msgstr "Maximizador" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compresor Multibanda" + +#~ msgid "Multiband Gate" +#~ msgstr "Puerta Multibanda" + +#~ msgid "Pitch" +#~ msgstr "Tono" + +#~ msgid "Reverberation" +#~ msgstr "Reverberación" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Reducción de Ganancia" + +#~ msgid "Stereo Tools" +#~ msgstr "Herramientas Estéreo" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Borrar este perfil" + +#~ msgid "Import Presets" +#~ msgstr "Importar Perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar Servicio al Iniciar Sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Lista Negra" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrar Micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "Faster" +#~ msgstr "Más Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar Formato" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Ayuda" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Color Personalizado" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Degradado" + +#~ msgid "Spectrum Color" +#~ msgstr "Color del Espectro" + +#~ msgid "Gradient Color" +#~ msgstr "Color del Degradado" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Exponent" +#~ msgstr "Exponente" + +#~ msgid "Sampling" +#~ msgstr "Muestreo" + +#~ msgid "Block Size" +#~ msgstr "Tamaño de Bloque" + +#~ msgid "Pipeline Input" +#~ msgstr "Caudal de Entrada" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Niceness" +#~ msgstr "Meticulosidad" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridad" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Priority" +#~ msgstr "Prioridad" + +# Resampler does not have an official translation +#~ msgid "Resampler" +#~ msgstr "Remuestreador" + +#~ msgid "Default Source" +#~ msgstr "Fuente Predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Muestreo Predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapa de Canales" + +#~ msgid "File" +#~ msgstr "Archivo" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +# Resamplers does not have an official translation +#~ msgid "Resamplers" +#~ msgstr "Remuestreadores" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silencio" + +#~ msgid "-23" +#~ msgstr "-23" + +#~ msgid "Weights" +#~ msgstr "Fuerza" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Silenciado" + +#~ msgid "Distant Headphones" +#~ msgstr "Audífonos a Distancia" + +#~ msgid "Reset Equalizer" +#~ msgstr "Restablecer Ecualizador" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Dry" +#~ msgstr "Secar" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar Archivo de Respuesta Impulse" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione el Archivo de Respuesta Impulse" + +#~ msgid "Loudness Range" +#~ msgstr "Rango de Sonoridad" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Después" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Extendido" + +#~ msgid "Delay Agnostic" +#~ msgstr "Retraso Agnóstico" + +#~ msgid "Suppresion Level" +#~ msgstr "Nivel de Supresión" + +#~ msgid "Low" +#~ msgstr "Bajo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Very High" +#~ msgstr "Muy Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Ruido" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptado Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Arreglo Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Regulador de Ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidad de Detección" + +#~ msgid "Very Low" +#~ msgstr "Muy Bajo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automáticamente aplicar este perfil siempre que el dispositivo actual " +#~ "esté conectado" + +#~ msgid "Volume" +#~ msgstr "Volumen" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cuadrado" + +#~ msgid "Saw" +#~ msgstr "Sierra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruido Rosa" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruido Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruido Rojo" + +#~ msgid "Blue Noise" +#~ msgstr "Ruido Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruido Violeta" + +#~ msgid "Window" +#~ msgstr "Ventana" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruido" + +#~ msgid "Subtract Noise" +#~ msgstr "Reducir Ruido" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Establecer el volumen y encender/apagar los efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Incluye un ecualizador con perfiles incluidos" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "reproduciendo" diff --git a/po/news/es_VE.po b/po/news/es_VE.po new file mode 100644 index 0000000..987c014 --- /dev/null +++ b/po/news/es_VE.po @@ -0,0 +1,2598 @@ +# Spanish (VE) translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Pulseeffects package. +# CCaroV , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2020-01-09 18:18-0500\n" +"Last-Translator: Christian\n" +"Language-Team: \n" +"Language: es_CO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de Sonido para las Aplicaciones de PulseAudio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +#, fuzzy +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects es una avanzada herramienta de manipulación de audio. Incluye un " +"ecualizador, limitador, compresor y herramienta de reverberación , solo por " +"mencionar algunos. Para complementar esto hay también incluido un analizador " +"de espectro." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +#, fuzzy +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Debido a que EasyEffects usa por defecto el servicio de sonido PulseAudio, " +"este funcionará con la mayoría, sino que todas, las aplicaciones que use. " +"Todas las aplicaciones son mostradas en la ventana principal donde pueden " +"ser habilitadas individualmente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Además de manipular el sonido de salida, EasyEffects puede aplicar efectos a " +"dispositivos de entrada, como micrófonos. Esto es útil, por ejemplo, en la " +"grabación de audio, pero también funciona correctamente durante " +"conversaciones de voces." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Cuando EasyEffects esté activo este convenientemente recordará la " +"configuración usada en la última sesión. También es posible guardar la " +"configuración actual como un perfil." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ecualizador, Compresor y Otros Efectos de Sonido" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limitador;compresor;reverberación;ecualizador;autovolumen;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Perfiles\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Ajustes" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Perfiles" + +#~ msgid "Global Bypass" +#~ msgstr "Bypass Global" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Paredes Vacías" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplicaciones" + +#~ msgid "Target" +#~ msgstr "Objetivo" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Máximo" + +#~ msgid "Momentary" +#~ msgstr "Momentáneo" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Corto Plazo" + +#~ msgid "Integrated" +#~ msgstr "Integrado" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Usar la Media Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Usar la Media Geométrica" + +#~ msgid "Reset History" +#~ msgstr "Restablecer Historial" + +#~ msgid "Relative" +#~ msgstr "Reativo" + +#~ msgid "Range" +#~ msgstr "Rango" + +#~ msgid "Loudness" +#~ msgstr "Loudness" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Ganancia de Entrada" + +#~ msgid "Input" +#~ msgstr "Entrada" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Ganancia de Entrada" + +#~ msgid "Output" +#~ msgstr "Salida" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Caudal de Salida" + +#~ msgid "Reset" +#~ msgstr "Restablecer" + +#~ msgid "Name" +#~ msgstr "Nombre" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Borrar este perfil" + +#~ msgid "Listen" +#~ msgstr "Escuchar" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mezclar Harmónicos" + +#~ msgid "3rd" +#~ msgstr "3era" + +#~ msgid "2nd" +#~ msgstr "2nda" + +#~ msgid "Amount" +#~ msgstr "Cantidad" + +#~ msgid "Harmonics" +#~ msgstr "Harmónicos" + +#~ msgid "Scope" +#~ msgstr "Alcance" + +#~ msgid "Floor" +#~ msgstr "Fondo" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Fondo" + +#~ msgid "Link" +#~ msgstr "Acoplar" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Aplicaciones" + +#~ msgid "Compressor" +#~ msgstr "Compresor" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Downward" +#~ msgstr "Hacia Abajo" + +#~ msgid "Upward" +#~ msgstr "Hacia Arriba" + +#~ msgid "Compression Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Cantidad" + +#~ msgid "Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Tiempo Real" + +#~ msgid "Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Límite" + +#~ msgid "Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Tiempo Real" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Límite" + +#~ msgid "Ratio" +#~ msgstr "Radio" + +#~ msgid "Knee" +#~ msgstr "Codo" + +#~ msgid "Makeup" +#~ msgstr "Amplificación" + +#~ msgid "Sidechain" +#~ msgstr "Cadena Lateral" + +#~ msgid "Peak" +#~ msgstr "Pico" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Paso Bajo" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Cadena Lateral" + +#~ msgid "Source" +#~ msgstr "Fuente" + +#~ msgid "Middle" +#~ msgstr "Medio" + +#~ msgid "Side" +#~ msgstr "Lado" + +#~ msgid "Left" +#~ msgstr "Izquierda" + +#~ msgid "Right" +#~ msgstr "Derecha" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Cadena Lateral" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Feed-forward" +#~ msgstr "Adelantar" + +#~ msgid "Feed-back" +#~ msgstr "Realimentar" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Efectos de Entrada" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Pre-amplificación" + +#~ msgid "Reactivity" +#~ msgstr "Reactividad" + +#~ msgid "Lookahead" +#~ msgstr "Atenuación" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Pase Alto" + +#~ msgid "Frequency" +#~ msgstr "Frecuencia" + +#~ msgid "Off" +#~ msgstr "Apagdo" + +#, fuzzy +#~ msgid "12 dB/oct" +#~ msgstr "12dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "24 dB/oct" +#~ msgstr "24dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "36 dB/oct" +#~ msgstr "36dB/oct Paso Bajo" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Filtro de Pase Alto" + +#~ msgid "Gain" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Pendiente" + +#~ msgid "Curve" +#~ msgstr "Curva" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Canales" + +#~ msgid "R" +#~ msgstr "R" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Dividir Canales" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Respuesta de Impulse" + +#~ msgid "Stereo Width" +#~ msgstr "Amplitud Estéreo" + +#~ msgid "Spectrum" +#~ msgstr "Espectro" + +#, fuzzy +#~ msgid "Log Scale" +#~ msgstr "Escala" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Ganancia Automática" + +#~ msgid "Rate" +#~ msgstr "Tasa" + +#~ msgid "Samples" +#~ msgstr "Muestras" + +#~ msgid "Duration" +#~ msgstr "Duración" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Respuesta de Impulse" + +#~ msgid "Import Impulse" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Default" +#~ msgstr "Predeterminado" + +#~ msgid "Cutoff" +#~ msgstr "Umbral" + +#~ msgid "Feed" +#~ msgstr "Alimentar" + +#~ msgid "Bypass" +#~ msgstr "Bypass" + +#~ msgid "Mute" +#~ msgstr "Silenciar" + +#~ msgid "Detection" +#~ msgstr "Detección" + +#~ msgid "Wide" +#~ msgstr "Ancho" + +#~ msgid "Split" +#~ msgstr "Dividir" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Dividir" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Pico" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Nivel" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Pico Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frecuencia" + +#~ msgid "Laxity" +#~ msgstr "Relajamiento" + +#~ msgid "Detected" +#~ msgstr "Detectado" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Reducción" + +#~ msgid "Frame Size" +#~ msgstr "Tamaño del Marco" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filtro" + +#~ msgid "Bands" +#~ msgstr "Bandas" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "Split Channels" +#~ msgstr "Dividir Canales" + +#~ msgid "Flat Response" +#~ msgstr "Respuesta Plana" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calcular Frecuencias" + +#~ msgid "Bell" +#~ msgstr "Timbre" + +#~ msgid "High Pass" +#~ msgstr "Pase Alto" + +#~ msgid "High Shelf" +#~ msgstr "Estante Alto" + +#~ msgid "Low Pass" +#~ msgstr "Paso Bajo" + +#~ msgid "Low Shelf" +#~ msgstr "Estante Bajo" + +#~ msgid "Notch" +#~ msgstr "Muesca" + +#~ msgid "Resonance" +#~ msgstr "Resonancia" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Paso Bajo" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Tipo" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Modo" + +#~ msgid "Slope" +#~ msgstr "Pendiente" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Pendiente" + +#~ msgid "Width" +#~ msgstr "Anchura" + +#~ msgid "Quality" +#~ msgstr "Calidad" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Borrar este perfil" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Paso Bajo" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Paso Bajo" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Paso Bajo" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Pase Alto" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Pase Alto" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Pase Alto" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Paso de Banda" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Paso de Banda" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Paso de Banda" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Rechazo de Banda" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Rechazo de Banda" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct Rechazo de Banda" + +#~ msgid "Inertia" +#~ msgstr "Inercia" + +#~ msgid "Gate" +#~ msgstr "Puerta de Ruido" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Tiempo Real" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Integrado" + +#~ msgid "Gating" +#~ msgstr "Puerta" + +#~ msgid "Oversampling" +#~ msgstr "Sobre Muestreo" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Ancho" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Ancho" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Ancho de Linea" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Ancho de Linea" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Mesa Sinusoidal" + +#~ msgid "None" +#~ msgstr "Ninguno" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Pre-amplificación" + +#~ msgid "Stereo Link" +#~ msgstr "Acoplamiento Estéreo" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Ganancia Automática" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Ganancia" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Derecha" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Tamaño del Marco" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Salida" + +#~ msgid "Ceiling" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Modo" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Cadena Lateral" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Modo de Compresión" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtro" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Calcular Frecuencias" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filtro de Pase Alto" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Calcular Frecuencias" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Ganancia de Entrada" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Curva" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Dividir" + +#~ msgid "Split 1/2" +#~ msgstr "Dividir 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frecuencia" + +#~ msgid "Split 2/3" +#~ msgstr "Dividir 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frecuencia" + +#~ msgid "Split 3/4" +#~ msgstr "Dividir 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frecuencia" + +#~ msgid "Sub Band" +#~ msgstr "Sub Banda" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Amplificación" + +#~ msgid "Max Reduction" +#~ msgstr "Reducción" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "Low Band" +#~ msgstr "Banda Baja" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "Mid Band" +#~ msgstr "Banda Media" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "High Band" +#~ msgstr "Banda Alta" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Liberar" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Límite" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Amplificación" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Reducción" + +#~ msgid "General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Reverberación" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Tasa de Muestreo por Defecto" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Ganancia Máxima" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Profundidad Predeterminda" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Efectos de Salida" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Efectos de Entrada" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#~ msgid "Modules" +#~ msgstr "Módulos" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Módulos" + +#~ msgid "Clients" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Señal de Prueba" + +#~ msgid "State" +#~ msgstr "Estado" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Habilitar" + +#~ msgid "Channels" +#~ msgstr "Canales" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Canales" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Mesa Sinusoidal" + +#~ msgid "White Noise" +#~ msgstr "Ruido Blanco" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Estante Alto" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Calidad" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formato" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Frescura" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Compresión" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Clip Suave" + +#~ msgid "Cents" +#~ msgstr "Acentos" + +#~ msgid "Semitones" +#~ msgstr "Semitonos" + +#~ msgid "Octaves" +#~ msgstr "Octavas" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Servidor" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Procesar Todas las Salidas" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Procesar Todas las Entradas" + +#~ msgid "Use Dark Theme" +#~ msgstr "Usar Tema Oscuro" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Espectro" + +#~ msgid "Bars" +#~ msgstr "Barras" + +#~ msgid "Lines" +#~ msgstr "Lineas" + +#~ msgid "Points" +#~ msgstr "Puntos" + +#~ msgid "Height" +#~ msgstr "Altura" + +#~ msgid "Line Width" +#~ msgstr "Ancho de Linea" + +#~ msgid "Fill" +#~ msgstr "Rellenar" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frecuencia" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Máximo" + +#~ msgid "Maximum" +#~ msgstr "Máximo" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Guardar esta configuración a este perfil" + +#~ msgid "Remove this preset file" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Crear Perfil" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importar Perfiles" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#~ msgid "High Frequency Damping" +#~ msgstr "Amortiguación de Alta Frecuencia" + +#~ msgid "Room Size" +#~ msgstr "Tamaño de la Habitación" + +#~ msgid "Small" +#~ msgstr "Pequeña" + +#~ msgid "Medium" +#~ msgstr "Mediana" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Túnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/Liso" + +#~ msgid "Experimental" +#~ msgstr "Experimental" + +#~ msgid "Diffusion" +#~ msgstr "Difusión" + +#~ msgid "Pre Delay" +#~ msgstr "Pre Retraso" + +#~ msgid "Decay Time" +#~ msgstr "Tiempo de Decaimiento" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Cantidad" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Nivel Objetivo" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Cantidad" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Nivel" + +#~ msgid "Bass Cut" +#~ msgstr "Corte de Bajos" + +#~ msgid "Treble Cut" +#~ msgstr "Corte de Sobreagudos" + +#~ msgid "Ambience" +#~ msgstr "Ambiente" + +#~ msgid "Empty Walls" +#~ msgstr "Paredes Vacías" + +#~ msgid "Room" +#~ msgstr "Habitación" + +#~ msgid "Large Empty Hall" +#~ msgstr "Habitación Vacía Grande" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Habitación Ocupada Grande" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Models" +#~ msgstr "Modo" + +#, fuzzy +#~ msgid "Active Model" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Restablecer EasyEffects." + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Balance" + +#~ msgid "Softclip" +#~ msgstr "Clip Suave" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Clip Suave" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matriz Estéreo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Estéreo Predeterminado)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Estéreo hacia Medio Lado)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Medio Lado - Estéreo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (Canal Izquierdo Mono)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Canal Derecho Mono)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Suma Mono L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Intercambiar Canales)" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Base Estéreo" + +#~ msgid "Invert Phase" +#~ msgstr "Invertir Fase" + +#~ msgid "Side Level" +#~ msgstr "Nivel Lateral" + +#~ msgid "Side Balance" +#~ msgstr "Balance Lateral" + +#~ msgid "Middle Level" +#~ msgstr "Nivel Medio" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama Medio" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Balance" + +#~ msgid "Delay L/R" +#~ msgstr "Retraso L/R" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Retraso L/R" + +#~ msgid "Stereo Base" +#~ msgstr "Base Estéreo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fase Estéreo" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "Puerta" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Canales" + +#~ msgid "Output Presets: " +#~ msgstr "Perfiles de Dispositivos de Salida: " + +#~ msgid "Input Presets: " +#~ msgstr "Perfiles de Dispositivos de Entrada: " + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efectos de Sonido para las aplicaciones de PulseAudio" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "Salir de EasyEffects. Útil cuando se está ejecutando en modo de servicio." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Cargar un perfil. Ejemplo: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Restablecer EasyEffects." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Bypass global, 1 para habilitar, 2 para deshabilitar y 3 para obtener el " +#~ "estado" + +#~ msgid "Show available presets." +#~ msgstr "Mostrar perfiles disponibles." + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Import Impulse File" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Impulse Response" +#~ msgstr "Respuesta de Impulse" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Importar Archivo Impulse" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "No se pudo encontrar el archivo Impulse" + +#, fuzzy +#~ msgid "Recorders" +#~ msgstr "Bordes" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "infinidad" + +#, fuzzy +#~ msgid "Import APO Preset File" +#~ msgstr "Importar Perfiles" + +#, fuzzy +#~ msgid "APO Presets" +#~ msgstr "Perfiles" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Borrar este perfil" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Efectos de Salida" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Importar Perfiles" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "Importar Archivo Impulse" + +#~ msgid "Bass Enhancer" +#~ msgstr "Potenciado de Graves" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Loudness" + +#~ msgid "Convolver" +#~ msgstr "Convolver" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Cristalizador" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Retraso" + +#~ msgid "Echo Canceller" +#~ msgstr "Cancelador de Eco" + +#~ msgid "Equalizer" +#~ msgstr "Ecualizador" + +#~ msgid "Exciter" +#~ msgstr "Excitador" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Limiter" +#~ msgstr "Limitador" + +#~ msgid "Maximizer" +#~ msgstr "Maximizador" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compresor Multibanda" + +#~ msgid "Multiband Gate" +#~ msgstr "Puerta Multibanda" + +#~ msgid "Pitch" +#~ msgstr "Tono" + +#~ msgid "Reverberation" +#~ msgstr "Reverberación" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Reducción de Ganancia" + +#~ msgid "Stereo Tools" +#~ msgstr "Herramientas Estéreo" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Failed" +#~ msgstr "Fallido" + +#~ msgid "Use Default" +#~ msgstr "Usar Predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Borrar este perfil" + +#~ msgid "Import Presets" +#~ msgstr "Importar Perfiles" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar Servicio al Iniciar Sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agresivo" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Lista Negra" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrar Micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "Faster" +#~ msgstr "Más Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar Formato" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Ayuda" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Color Personalizado" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Degradado" + +#~ msgid "Spectrum Color" +#~ msgstr "Color del Espectro" + +#~ msgid "Gradient Color" +#~ msgstr "Color del Degradado" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Exponent" +#~ msgstr "Exponente" + +#~ msgid "Sampling" +#~ msgstr "Muestreo" + +#~ msgid "Block Size" +#~ msgstr "Tamaño de Bloque" + +#~ msgid "Pipeline Input" +#~ msgstr "Caudal de Entrada" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Niceness" +#~ msgstr "Meticulosidad" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridad" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Priority" +#~ msgstr "Prioridad" + +# Resampler does not have an official translation +#~ msgid "Resampler" +#~ msgstr "Remuestreador" + +#~ msgid "Default Source" +#~ msgstr "Fuente Predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Muestreo Predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapa de Canales" + +#~ msgid "File" +#~ msgstr "Archivo" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +# Resamplers does not have an official translation +#~ msgid "Resamplers" +#~ msgstr "Remuestreadores" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silencio" + +#~ msgid "-23" +#~ msgstr "-23" + +#~ msgid "Weights" +#~ msgstr "Fuerza" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Silenciado" + +#~ msgid "Distant Headphones" +#~ msgstr "Audífonos a Distancia" + +#~ msgid "Reset Equalizer" +#~ msgstr "Restablecer Ecualizador" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Dry" +#~ msgstr "Secar" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar Archivo de Respuesta Impulse" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione el Archivo de Respuesta Impulse" + +#~ msgid "Loudness Range" +#~ msgstr "Rango de Sonoridad" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Después" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Extendido" + +#~ msgid "Delay Agnostic" +#~ msgstr "Retraso Agnóstico" + +#~ msgid "Suppresion Level" +#~ msgstr "Nivel de Supresión" + +#~ msgid "Low" +#~ msgstr "Bajo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Very High" +#~ msgstr "Muy Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Ruido" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptado Digital" + +#~ msgid "Fixed Digital" +#~ msgstr "Arreglo Digital" + +#~ msgid "Gain Controller" +#~ msgstr "Regulador de Ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidad de Detección" + +#~ msgid "Very Low" +#~ msgstr "Muy Bajo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automáticamente aplicar este perfil siempre que el dispositivo actual " +#~ "esté conectado" + +#~ msgid "Volume" +#~ msgstr "Volumen" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cuadrado" + +#~ msgid "Saw" +#~ msgstr "Sierra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruido Rosa" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruido Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruido Rojo" + +#~ msgid "Blue Noise" +#~ msgstr "Ruido Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruido Violeta" + +#~ msgid "Window" +#~ msgstr "Ventana" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruido" + +#~ msgid "Subtract Noise" +#~ msgstr "Reducir Ruido" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Establecer el volumen y encender/apagar los efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Incluye un ecualizador con perfiles incluidos" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "reproduciendo" diff --git a/po/news/fr_FR.po b/po/news/fr_FR.po new file mode 100644 index 0000000..d6bd0a1 --- /dev/null +++ b/po/news/fr_FR.po @@ -0,0 +1,3042 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-18 22:44+0000\n" +"Last-Translator: Mathieu B. \n" +"Language-Team: French \n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Effets audio pour les applications utilisant le serveur audio PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects est un outil avancé de manipulation audio. Il inclut, entre " +"autres, un égaliseur, limiteur, compresseur et effet de réverbération. Pour " +"compléter le tout, un analyseur de spectre est également intégré." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects est le successeur de PulseEffects. EasyEffects ne prend en " +"charge que le serveur audio de PipeWire. Les utilisateurs de PulseAudio " +"doivent plutôt utiliser PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Comme EasyEffects utilise le serveur audio PipeWire par défaut, il " +"fonctionnera avec la plupart, sinon la totalité, des applications que vous " +"utilisez. Toutes les applications prises en charge sont présentées dans la " +"fenêtre principale, où chacune peut être activée individuellement." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Outre la manipulation de la sortie audio, EasyEffects est capable de " +"manipuler l’entrée audio (à partir d’un microphone par exemple). Cette " +"fonction est utile pour l’enregistrement audio et fonctionne bien pour les " +"appels vocaux." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"EasyEffects se souvient également de la configuration utilisée lors de la " +"dernière session. Il est aussi possible de sauvegarder tous les paramètres " +"définis sous forme de profils." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "La page principale affichant deux applications en sortie audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "La page de l’amplificateur de basses affichant les commandes audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "La page du filtre de convolution affichant les commandes audio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +#, fuzzy +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" +"Le plugin limiteur est désormais celui de Linux Studio Plugins au lieu de " +"celui de Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +#, fuzzy +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" +"Lorsque les effets sont désactivés pour une application, nous définissons " +"désormais ses métadonnées cibles comme étant nulles. Cela permettra à la " +"session média" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +#, fuzzy +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" +"Une nouvelle option de configuration a été ajoutée. Elle permet à " +"EasyEffects d’ignorer les flux dont l’objectif est de surveiller" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "Le code qui affiche le format de l’échantillon de flux a été amélioré" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +#, fuzzy +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" +"La bibliothèque rnnoise est désormais facultative. Cela devrait aider les " +"mainteneurs de paquets à construire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" +"Nos journaux (logs) indiquent maintenant la ligne de code source où les " +"messages sont imprimés" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +#, fuzzy +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" +"La case \"activer les effets\" de notre fenêtre n’était pas mise à jour " +"lorsque des programmes tiers comme pavucontrol" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" +"Correction d’un crash qui pouvait se produire lorsque l’historique maximum " +"de l’autogain était modifié." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "Éviter les plantages lorsque pw-mididump est en cours d’exécution" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "L'interface du plugin pitch a été améliorée" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" +"L'icône de notre application est maintenant compatible avec les ordinateurs " +"de bureau qui utilisent QT" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" +"Notre liste de blocage utilisera la balise `application.id` si le flux la " +"définit" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +#, fuzzy +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" +"Afin d’éviter les problèmes de défilement de la souris, les entrées de la " +"liste d’applications s’affichent dans nos `Lecteurs/Enregistreurs`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" +"Lorsque aucune application n’est disponible pour l’affichage dans les " +"`Lecteurs/Enregistreurs`, un message sera affiché à l’utilisateur" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "Mises à jour des traductions" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +#, fuzzy +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" +"Correction d’un bug où EasyEffeects plantait lorsque le nombre de points " +"affichés dans le spectre était modifié alors que" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" +"La valeur de latence du pipeline affichée dans notre fenêtre peut être " +"incorrecte dans certaines situations. Cela a été corrigé." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"le plugin autogain permet désormais à l’utilisateur de sélectionner " +"lesquelles des trois \"loudness\" sont utilisées pour calculer la moyenne" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"Le plugin autogain permet dorénavant d’indiquer une profondeur d’historique " +"maximum et n’utilise plus le mode histogramme `libebur128`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"L'icone EasyEffect a été mise à jour afin d’être visible dans les bureaux QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"L'option de ligne de commande retournant l’état du bypass global fonctionne " +"à nouveau." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Le filtre crossfeed devrait mieux gérer les changements de latence " +"dynamiques de PipeWire. Les sauts de volume ne devraient plus se produire " +"dans ces situations." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Correction d’un bug qui empêchait les microphones mono de fonctionner " +"correctement avec EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Support de la prochaine version de PipeWire `0.3.44`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Le filtre autogain devrait mieux gérer les changements de latence dynamiques " +"de PipeWire. Les sauts de volume ne devraient plus se produire dans ces " +"situations." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Nous avons ajouté une option qui permet de réinitialiser le volume et l’état " +"muet de nos périphériques virtuels au démarrage d’EasyEffects. Cela devrait " +"aider dans les cas où nos périphériques sont mis en sourdine par le serveur " +"audio pour des raisons inconnues." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Meilleure prise en charge de la mise en veille de l’ordinateur." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Traductions mises à jour" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Correction d’un bogue où la tentative de créer un profil de chargement " +"automatique sans avoir de préréglages entraînait le plantage de " +"l’application." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"Correction d’un bug où le réglage de la `qualité` d’une bande d’égaliseur " +"sur `zéro` entraînait un plantage de l’application." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita est utilisé pour créer certaines parties de notre fenêtre et pour " +"gérer le passage entre les thèmes sombres et clairs." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" +"Le menu des paramètres a été redessiné en utilisant les widgets LibAdwaita." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +#, fuzzy +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"La fonction d’importation de préréglages de l’égaliseur APO a été améliorée " +"pour appliquer non seulement le filtre Bell, mais aussi d’autres filtres " +"pris en charge" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"La fonction `Réinitialiser toutes les options` de notre menu devrait " +"fonctionner dans Flatpak maintenant." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"Nous avons une nouvelle option qui permet à l’utilisateur de désactiver nos " +"menus `caché automatiquement`. Cela peut aider à contourner certains bugs " +"que les menus Popover ont actuellement sur gtk4." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"Analyse syntaxique plus robuste pour importer les préréglages APO " +"enregistrés avec une virgule comme séparateur des milliers dans la bande de " +"fréquence centrale." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"La bibliothèque fmt est une nouvelle dépendance, du moins tant que les " +"compilateurs c++ n’implémentent pas ses fonctionnalités. Cela devrait " +"arriver dans les prochaines années." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM et GLIBMM ne sont plus des dépendances. Nous utilisons maintenant gtk4 " +"directement." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"Il est maintenant possible de combiner des réponses d’impulsions dans " +"l’interface de Convolver. Un nouveau fichier d’impulsions est généré et il " +"devrait être visible dans la liste des impulsions." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"Amélioration du dessin de l’axe X dans nos graphiques. Maintenant le nombre " +"d’étiquettes est ajusté dynamiquement en fonction de la largeur de notre " +"fenêtre." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"La documentation a été mise à jour en tenant compte des nouvelles " +"fonctionnalités d’EasyEffects. Les anciennes références à PulseEffects ont " +"été supprimées. Le bouton de documentation a été ajouté dans le menu." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"Lorsqu’un bouton rotatif est rempli avec une valeur hors limites, il est " +"maintenant mis à jour avec la valeur la plus basse/haute plutôt que de " +"revenir à la valeur précédente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" +"La fenêtre de l’application se souvient désormais de l’état maximisé et le " +"rétablit lors de la prochaine ouverture." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "La bibliothèque `tbb` est une nouvelle dépendance" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" +"Les plugins Limiteur et Compresseur Multibande peuvent désormais utiliser un " +"sidechain optionnel externe." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" +"Le plugin Autogain permet désormais à l’utilisateur de sélectionner la " +"Loudness utilisée comme référence pour la correction du volume." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" +"La fonctionnalité d’import de profil APO du plugin égalisateur utilise " +"désormais le paramètre de \"Pré-Amplification\"." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" +"L'option de Volume Cubique peut être activée dans les Paramètres Généraux." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" +"Les flux PipeWire de monitoring sont maintenant exclus et retirés de la " +"liste d’applications." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +#, fuzzy +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" +"Les crashs comme celui signalé en [1172]( sont vraisemblablement corrigés." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "Une situation entraînant un plantage du Spectre a été évitée." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"Pavucontrol n’est plus ajouté aux liste d’applications en entrée sur les " +"systèmes ayant une autre langue que l’anglais." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +#, fuzzy +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" +"La compatibilité avec WirePlumber a été améliorée. C'est nécessaire pour les " +"systèmes ayant décidé de l’utiliser plutôt que" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" +"Lors d’un ajout d’un profil automatique pour un appareil déjà dans la liste, " +"ses presets cibles seront mis à jour. Ainsi, on peut modifier le preset du " +"profil sans le retirer et la re-créer." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +#, fuzzy +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" +"L'implémentation de la prise en charge du chargement automatique des " +"préréglages a encore été repensée. Elle devrait fonctionner sur plus de " +"matériel maintenant. Pour plus d’informations, consultez le numéro [1051](" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" +"Si le limiteur ou le maximizeur sont placés à la dernière position de la " +"liste des plugins, les nouveaux plugins sont ajoutés à l’avant-dernière " +"position afin d’éviter des dommages matériels dû à un niveau de sortie " +"potentiellement élevé." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" +"En retirant une application de la liste de blocage, son état d’activation " +"précédent est restauré." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" +"Parfois, lors de la suppression de modèles importés du plugin de réduction " +"du bruit, le modèle actuellement utilisé n’était pas correctement mis à " +"jour. Cela devrait être corrigé maintenant." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" +"Lorsque vous modifiez des fichiers de préréglages dans un éditeur externe, " +"les entrées dupliquées n’apparaîtront pas dans notre menu de préréglages." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" +"Maintenant, la liste de blocage est correctement définie lors du changement " +"de préréglage." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" +"Désormais, l’état du bouton de contournement global est correctement mis à " +"jour lors du changement de pile de plugins." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" +"Certaines icônes qui n’apparaissaient pas dans Plasma DE avec le thème " +"d’icônes Breeze devraient maintenant apparaître." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "Mise à jour de la traduction chinoise." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "Mise à jour de la traduction italienne." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "Ajout du support pour le paramètre du compresseur `Boost Amount`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" +"Le plugin de compresseur multibande utilise maintenant le plugin de " +"compresseur multibande stéréo de Linux Studio Plugins au lieu de celui de " +"Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" +"Le plugin limiteur est désormais celui de Linux Studio Plugins au lieu de " +"celui de Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" +"Les filtres LV2 sont désormais créés dans le graphe PipeWire uniquement " +"lorsqu’ils sont chargés pour la première fois. Une fois chargés, ils restent " +"connectés jusqu’à l’arrêt d’EasyEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" +"Le taux d’échantillonnage de l’annuleur d’écho est maintenant correctement " +"réglé." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" +"Le paramètre de seuil du plugin Deesser est maintenant enregistré dans le " +"fichier de présélection." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" +"Division de bandes améliorée pour le cristalliseur avec de nouvelles valeurs " +"d’intensité par défaut." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" +"Selon les valeurs du gain d’entrée ou du gain de sortie, les barres de " +"niveau correspondantes ne pouvaient pas être alignées." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" +"Lorsque vous ajoutez d’autres bandes d’égaliseur, elles sont réglées sur " +"`Bell` au lieu de `Off`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" +"Le chargement des préréglages de l’Equalizer APO fonctionne désormais " +"correctement dans les langues autres que C." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" +"Amélioration de la gestion des liens entre les nœuds de filtre de port dans " +"PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" +"L'amplification du signal du plugin du cristalliseur était trop élevée " +"avant. Elle devrait se situer dans des niveaux plus raisonnables maintenant." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" +"Amélioration du rééchantillonneur utilisé dans les plugins qui en " +"nécessitent un (comme le plugin rnnoise)" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" +"La configuration de plusieurs préréglages auto-chargeant devrait être " +"correcte maintenant" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" +"Les fenêtres transitoires sont désormais correctement définies pour " +"certaines boîtes de dialogue de plugins" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +#, fuzzy +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" +"Le menu des réponses impulsionnelles du convolver a été amélioré pour " +"résoudre un problème où les fichiers impulsionnels n’étaient pas chargés " +"lorsqu’un seul était disponible dans le menu" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" +"Correction d’un bogue qui pouvait empêcher l’initialisation correcte du " +"plugin \"pitch\"" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" +"L'avertissement de saturation ne doit plus déplacer les widgets voisins" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "Correction des paramètres régionaux dans quelques widgets" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "Correction d’un mauvais alignement dans quelques widgets" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +#, fuzzy +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" +"Le plugin Loudness est réutilisé pour les raisons décrites dans. Cela " +"signifie qu’il s’agit à nouveau d’une dépendance facultative." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" +"Correction d’un défaut de segmentation qui se produisait lorsque les " +"dépendances facultatives n’étaient pas installées" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "Interface de l’égaliseur améliorée." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" +"Nous utilisons maintenant un compresseur sidechain LSP qui permet à " +"l’utilisateur de sélectionner une source externe comme entrée sidechain." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "Nous supportons maintenant le mode `Boosting` du compresseur LSP." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" +"Quand `split-channels` est activé dans l’égaliseur, le préréglage APO " +"importé sera appliqué seulement au canal visualisé dans la fenêtre. Cela " +"permet d’importer des préréglage différents pour chaque canal au lieu de " +"régler les mêmes valeurs pour les deux." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" +"Correction de certaines erreurs de segmentation qui pouvaient survenir lors " +"de la création d’un profil de chargement automatique prédéfini ou de la " +"suppression de préréglages" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" +"C'est l’une des plus grosses versions que j'ai jamais faite. La quantité de " +"changements est si importante qu’il est difficile de parler de tout ici." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +#, fuzzy +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" +"Voici les plus importantes d’entre elles. Les personnes intéressées par le " +"voyage qui nous a mené jusqu’ici peuvent" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" +"L'application et son dépôt ont été renommés de PulseEffects à `EasyEffects`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "gtkmm3 a été remplacé par gtkmm4" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "Gstreamer a été remplacé par des filtres natifs PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" +"De nombreuses fonctionnalités ont été réimplémentées à partir de zéro. Le " +"chargement automatique des préréglages en est un exemple. Un autre " +"changement remarquable se trouve dans le menu de sélection des plugins. " +"Désormais, l’utilisateur peut afficher dans la fenêtre uniquement les " +"plugins qu’il souhaite utiliser." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" +"Boost n’est plus une dépendance. Le prix à payer pour cela a été un petit " +"changement dans la structure de nos préréglages. Avec un peu de patience, il " +"est possible d’éditer les préréglages PulseEffects avec un éditeur de texte " +"et de les faire fonctionner dans EasyEffects. Quelqu’un proposera peut-être " +"un script pour cela prochainement." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" +"De nouvelles bibliothèques sont utilisées et certaines d’entre elles, qui " +"étaient auparavant facultatives, sont désormais obligatoires" + +#~ msgid "This release adds the following features:" +#~ msgstr "Cette version ajoute les fonctionnalités suivantes :" + +#~ msgid "manager" +#~ msgstr "gestionnaire" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr "" +#~ "les périphériques puits. Cela aidera à résoudre certains des problèmes " +#~ "rencontrés par nos utilisateurs lors de l’utilisation d’OBS." + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "un paquet Debian. Voir le problème n°1000 pour plus d’informations." + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Cette version corrige les bugs suivants :" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "déplaçait le flux loin de nos appareils virtuels. Cela devrait être " +#~ "maintenant corrigé." + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "Les onglets n’affichent plus d’échelle de volume. Plus de détails sur le " +#~ "problème et sa solution peuvent être trouvés sur la page #1211" + +#~ msgid "and #1427" +#~ msgstr "et #1427" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "notre pipeline était active et le widget spectre était visible" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Il y a une nouvelle option permettant à l’utilisateur de sélectionner un " +#~ "délai d’inactivité pour les effets audio. Quand aucun client n’émet de son" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "ou n’enregistre depuis l’un des appareils, les filtres sont déconnectés " +#~ "une fois le délai atteint. Cela permet d’assurer" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "de ne pas gâcher l’utilisation du CPU sur du silence." + +#~ msgid "mean." +#~ msgstr "moyenne géométrique." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Cela devrait permettre d’éviter les cas où le loudness `Integrated` reste " +#~ "toujours coincé à la même valeur." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Cette version corrige les bugs suivants :" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Cette version ajoute les fonctionnalités suivantes :" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "Le gestionnaire de sessions PipeWire fourni. Plus d’informations dans " +#~ "l’issue [1144](" + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Les icônes manquantes sur le système ne doivent pas être affichées dans " +#~ "l’interface d’information de l’application" + +#~ msgid "a look at and" +#~ msgstr "regarder et" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Égaliseur, Compresseur et autres effets audio" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limiter;compressor;reverberation;equalizer;autovolume;" + +#~ msgid "\"Presets\"" +#~ msgstr "Préréglage" + +#~ msgid "Enable/disable this application" +#~ msgstr "Autoriser/Interdire cette application" + +#~ msgid "Enable" +#~ msgstr "Activer" + +#~ msgid "Excluded App List: Add/remove this application" +#~ msgstr "Liste des applications exclues : ajouter/retirer cette application" + +#~ msgid "Exclude" +#~ msgstr "Exclure" + +#~ msgid "Mute Application" +#~ msgstr "Couper le son de l’application" + +#~ msgid "Change the volume of this application" +#~ msgstr "Modifier le volume de cette application" + +#~ msgid "Application Volume" +#~ msgstr "Volume de l’application" + +#~ msgid "_Preferences" +#~ msgstr "_Préférences" + +#~ msgid "_Manual" +#~ msgstr "_Manuel" + +#~ msgid "_Shortcuts" +#~ msgstr "_Raccourcis" + +#~ msgid "_Reset Settings" +#~ msgstr "_Réinitialiser les paramètres" + +#~ msgid "_About EasyEffects" +#~ msgstr "_À propos de EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Préréglage" + +#~ msgid "Presets Menu" +#~ msgstr "Menu des préréglages" + +#~ msgid "Enable/disable the global bypass" +#~ msgstr "Activer/désactiver le contournement global" + +#~ msgid "Global Bypass" +#~ msgstr "Contournement global" + +#~ msgid "Primary Menu" +#~ msgstr "Menu principal" + +#~ msgid "EasyEffects Window" +#~ msgstr "Fenêtre de EasyEffects" + +#~ msgid "Applications List" +#~ msgstr "Liste des applications" + +#~ msgid "Empty List" +#~ msgstr "Liste vide" + +#~ msgid "No Audio Application Available" +#~ msgstr "Aucune application audio disponible" + +#~ msgid "Target" +#~ msgstr "Cible" + +#~ msgid "Maximum History" +#~ msgstr "Historique maximum" + +#~ msgid "Reference" +#~ msgstr "Référence" + +#~ msgid "Momentary" +#~ msgstr "Temporaire" + +#~ msgid "Short-Term" +#~ msgstr "Court-terme" + +#~ msgid "Integrated" +#~ msgstr "Intégré" + +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Moyenne géométrique (MSI)" + +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Moyenne géométrique (MS)" + +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Moyenne géométrique (MI)" + +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Moyenne géométrique (SI)" + +#~ msgid "Reset History" +#~ msgstr "Réinitialiser l’historique" + +#~ msgid "Relative" +#~ msgstr "Relatif" + +#~ msgid "Range" +#~ msgstr "Intervalle" + +#~ msgid "Loudness" +#~ msgstr "Sonie" + +#~ msgid "Output Gain" +#~ msgstr "Gain de sortie" + +#~ msgid "Input" +#~ msgstr "Entrée" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Gain d’entrée du plugin" + +#~ msgid "Output" +#~ msgstr "Sortie" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Gain de sortie du plugin" + +#~ msgid "Reset" +#~ msgstr "Réinitialiser" + +#~ msgid "Using" +#~ msgstr "Utilise" + +#~ msgid "Device" +#~ msgstr "Périphérique" + +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "Profile" +#~ msgstr "Profil" + +#~ msgid "Preset" +#~ msgstr "Préréglage" + +#~ msgid "Remove this autoload preset" +#~ msgstr "Supprimer ce préréglage auto-chargeant" + +#~ msgid "Listen" +#~ msgstr "Écouter" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mélanger les harmoniques" + +#~ msgid "3rd" +#~ msgstr "3ème" + +#~ msgid "2nd" +#~ msgstr "2ème" + +#~ msgid "Amount" +#~ msgstr "Quantité" + +#~ msgid "Harmonics" +#~ msgstr "Harmoniques" + +#, fuzzy +#~ msgid "Scope" +#~ msgstr "Seuil" + +#~ msgid "Floor" +#~ msgstr "Limite inférieure" + +#~ msgid "Floor Value" +#~ msgstr "Valeur plancher" + +#~ msgid "Link" +#~ msgstr "Lien" + +#~ msgid "Application Name" +#~ msgstr "Nom de l’application" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "Ajouter aux applications exclues" + +#~ msgid "Excluded Applications List" +#~ msgstr "Liste des applications exclues" + +#~ msgid "Show Excluded Applications" +#~ msgstr "Afficher les applications exclues" + +#~ msgid "Compressor" +#~ msgstr "Compresseur" + +#~ msgid "Mode" +#~ msgstr "Mode" + +#~ msgid "Downward" +#~ msgstr "Descendant" + +#~ msgid "Upward" +#~ msgstr "Ascendant" + +#~ msgid "Boosting" +#~ msgstr "Renforcement" + +#~ msgid "Compression Mode" +#~ msgstr "Mode de compression" + +#~ msgid "Boost Threshold" +#~ msgstr "Seuil de renforcement" + +#~ msgid "Boost Amount" +#~ msgstr "Quantité de renforcement" + +#~ msgid "Attack" +#~ msgstr "Attaque" + +#~ msgid "Time" +#~ msgstr "Temps" + +#~ msgid "Threshold" +#~ msgstr "Seuil" + +#~ msgid "Attack Time" +#~ msgstr "Temps d’attaque" + +#~ msgid "Attack Threshold" +#~ msgstr "Seuil d’attaque" + +#~ msgid "Release" +#~ msgstr "Relâ­che­ment" + +#~ msgid "Release Time" +#~ msgstr "Temps de relâ­che­ment" + +#~ msgid "Release Threshold" +#~ msgstr "Seuil de relâ­che­ment" + +#~ msgid "Ratio" +#~ msgstr "Ratio" + +#~ msgid "Knee" +#~ msgstr "Genou" + +#~ msgid "Makeup" +#~ msgstr "Compensation de gain" + +#~ msgid "Sidechain" +#~ msgstr "Chaîne latérale" + +#~ msgid "Peak" +#~ msgstr "Crête" + +#, fuzzy +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Passe-bas" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#~ msgid "Sidechain Mode" +#~ msgstr "Mode chaîne latérale" + +#~ msgid "Source" +#~ msgstr "Source" + +#~ msgid "Middle" +#~ msgstr "Centrale" + +#~ msgid "Side" +#~ msgstr "Latérale" + +#~ msgid "Left" +#~ msgstr "Gauche" + +#~ msgid "Right" +#~ msgstr "Droite" + +#~ msgid "Sidechain Source" +#~ msgstr "Source de la chaîne latérale" + +#~ msgid "Type" +#~ msgstr "Type" + +#, fuzzy +#~ msgid "Feed-forward" +#~ msgstr "Feed-forward" + +#, fuzzy +#~ msgid "Feed-back" +#~ msgstr "Feed-back" + +#~ msgid "External" +#~ msgstr "Externe" + +#~ msgid "Sidechain Type" +#~ msgstr "Type de chaîne latérale" + +#~ msgid "Input Device" +#~ msgstr "Périphérique d’entrée" + +#~ msgid "PreAmplification" +#~ msgstr "Préamplification" + +#~ msgid "Reactivity" +#~ msgstr "Réactivité" + +#~ msgid "Lookahead" +#~ msgstr "Anticipation" + +#~ msgid "Sidechain Filters" +#~ msgstr "Filtres de chaîne latérale" + +#~ msgid "High-Pass" +#~ msgstr "Passe-haut" + +#~ msgid "Frequency" +#~ msgstr "Fréquence" + +#~ msgid "Off" +#~ msgstr "Désactivé" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Mode de filtrage passe-haut" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Fréquence du filtre passe-haut" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Mode de filtre passe-bas" + +#~ msgid "Gain" +#~ msgstr "Gain" + +#~ msgid "Envelope" +#~ msgstr "Enveloppe" + +#~ msgid "Curve" +#~ msgstr "Courbe" + +#~ msgid "L" +#~ msgstr "G" + +#~ msgid "Left Channel" +#~ msgstr "Canal gauche" + +#~ msgid "R" +#~ msgstr "D" + +#~ msgid "Right Channel" +#~ msgstr "Canal droit" + +#~ msgid "Impulses" +#~ msgstr "Réponse impulsionnelle" + +#~ msgid "Combine" +#~ msgstr "Combiner" + +#~ msgid "Stereo Width" +#~ msgstr "Amplitude stéréo" + +#~ msgid "Spectrum" +#~ msgstr "Spectre" + +#~ msgid "Log Scale" +#~ msgstr "Échelle logarithmique" + +#~ msgid "Autogain" +#~ msgstr "Gain automatique" + +#~ msgid "Rate" +#~ msgstr "Taux" + +#~ msgid "Samples" +#~ msgstr "Échantillons" + +#~ msgid "Duration" +#~ msgstr "Durée" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "Combiner les réponses impulsionnelles" + +#~ msgid "First Kernel" +#~ msgstr "Premier noyau" + +#~ msgid "Second Kernel" +#~ msgstr "Deuxième noyau" + +#~ msgid "Output File Name" +#~ msgstr "Nom du fichier de sortie" + +#~ msgid "Combined Kernel Name" +#~ msgstr "Nom du noyau combiné" + +#~ msgid "Import Impulse" +#~ msgstr "Importer une réponse impulsionnelle" + +#~ msgid "Search" +#~ msgstr "Rechercher" + +#~ msgid "Search Impulse File" +#~ msgstr "Rechercher un fichier de réponse impulsionnelle" + +#~ msgid "Impulse Files List" +#~ msgstr "Liste des fichiers de réponse impulsionnelle" + +#~ msgid "Default" +#~ msgstr "Par défaut" + +#~ msgid "Cutoff" +#~ msgstr "Coupure" + +#~ msgid "Feed" +#~ msgstr "Flux" + +#~ msgid "Bypass" +#~ msgstr "Contourner" + +#~ msgid "Mute" +#~ msgstr "Couper le son" + +#~ msgid "Detection" +#~ msgstr "Détection" + +#~ msgid "Wide" +#~ msgstr "Large" + +#~ msgid "Split" +#~ msgstr "Diviser" + +#~ msgid "F1 Split" +#~ msgstr "Division F1" + +#~ msgid "Frequency 1 Split" +#~ msgstr "Division de la fréquence 1" + +#~ msgid "F2 Peak" +#~ msgstr "Crête F2" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "Crête de la fréquence 2" + +#~ msgid "F1 Gain" +#~ msgstr "Gain F1" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "Gain de la Fréquence 1" + +#~ msgid "F2 Level" +#~ msgstr "Niveau F2" + +#~ msgid "Frequency 2 Level" +#~ msgstr "Niveau de la fréquence 2" + +#~ msgid "F2 Peak Q" +#~ msgstr "Crête Q F2" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Crête de la fréquence 2" + +#~ msgid "Laxity" +#~ msgstr "Laxité" + +#~ msgid "Detected" +#~ msgstr "Détecté" + +#~ msgid "Reduction" +#~ msgstr "Réduction" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Frame Size" +#~ msgstr "Taille du cadre" + +#~ msgid "Filter Length" +#~ msgstr "Longueur du filtre" + +#~ msgid "Excluded Apps" +#~ msgstr "Applications exclues" + +#~ msgid "Bands" +#~ msgstr "Bandes" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#, fuzzy +#~ msgid "FIR" +#~ msgstr "FIR" + +#, fuzzy +#~ msgid "FFT" +#~ msgstr "FFT" + +#, fuzzy +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Diviser les canaux" + +#~ msgid "Flat Response" +#~ msgstr "Réponse plate" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calculer les fréquences" + +#~ msgid "Load APO Preset" +#~ msgstr "Charger un préréglage APO" + +#~ msgid "Bell" +#~ msgstr "Cloche" + +#~ msgid "High Pass" +#~ msgstr "Passe-haut" + +#~ msgid "Low Pass" +#~ msgstr "Passe-bas" + +#~ msgid "Notch" +#~ msgstr "Réjection de bande" + +#~ msgid "Resonance" +#~ msgstr "Résonance" + +#~ msgid "All Pass" +#~ msgstr "Toutes les passes" + +#~ msgid "Band Type" +#~ msgstr "Type de bande" + +#~ msgid "Band Mode" +#~ msgstr "Mode de la bande" + +#~ msgid "Slope" +#~ msgstr "Pente" + +#~ msgid "Band Slope" +#~ msgstr "Pente de la bande" + +#~ msgid "Width" +#~ msgstr "Largeur" + +#~ msgid "Quality" +#~ msgstr "Qualité" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#~ msgid "Ceil" +#~ msgstr "Plafonner" + +#~ msgid "Ceil Value" +#~ msgstr "Valeur du plafonnement" + +#, fuzzy +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Accéder" + +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgid "Remove this model file" +#~ msgstr "Supprimer ce fichier modèle" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct passe-bas" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct passe-bas" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct passe-bas" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct passe-haut" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct passe-haut" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct passe-haut" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct passe-bande" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct passe-bande" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct passe-bande" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct coupe-bande" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct coupe-bande" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct coupe-bande" + +#~ msgid "Inertia" +#~ msgstr "Inertie" + +#, fuzzy +#~ msgid "Gate" +#~ msgstr "Porte à bruits" + +#~ msgid "Zone" +#~ msgstr "Zone" + +#~ msgid "Hysteresis" +#~ msgstr "hystérèse" + +#~ msgid "Attack Zone Start" +#~ msgstr "Début de la zone d’attaque" + +#~ msgid "Release Zone Start" +#~ msgstr "Début de la zone de relâchement" + +#~ msgid "Internal" +#~ msgstr "Interne" + +#~ msgid "Oversampling" +#~ msgstr "Suréchantillonnage" + +#, fuzzy +#~ msgid "Dither" +#~ msgstr "Dither" + +#, fuzzy +#~ msgid "Herm Thin" +#~ msgstr "Herm Thin" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Herm Wide" + +#, fuzzy +#~ msgid "Herm Tail" +#~ msgstr "Herm Tail" + +#, fuzzy +#~ msgid "Herm Duck" +#~ msgstr "Herm Duck" + +#, fuzzy +#~ msgid "Exp Thin" +#~ msgstr "Exp Thin" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Exp Wide" + +#, fuzzy +#~ msgid "Exp Tail" +#~ msgstr "Exp Tail" + +#, fuzzy +#~ msgid "Exp Duck" +#~ msgstr "Exp Duck" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Line Thin" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Line Wide" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Line Tail" + +#, fuzzy +#~ msgid "Line Duck" +#~ msgstr "Line Duck" + +#~ msgid "None" +#~ msgstr "Aucun" + +#~ msgid "Half x2(2L)" +#~ msgstr "Moitié x2(2L)" + +#~ msgid "Half x2(3L)" +#~ msgstr "Moitié x2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "Moitié x3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "Moitié x3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "Moitié x4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "Moitié x4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "Moitié x6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "Moitié x6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "Moitié x8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "Moitié x8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "Complet x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "Complet x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "Complet x3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "Complet x3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "Complet x4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "Complet x4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "Complet x6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "Complet x6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "Complet x8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "Complet x8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "SC PréAmp" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Préamplification de la chaîne latérale" + +#~ msgid "Boost" +#~ msgstr "Renforcer" + +#~ msgid "Stereo Link" +#~ msgstr "Lien stéréo" + +#~ msgid "External Sidechain" +#~ msgstr "Chaîne latérale externe" + +#~ msgid "External Sidechain Source" +#~ msgstr "Source de la chaîne latérale externe" + +#~ msgid "Auto Leveling" +#~ msgstr "Auto-nivellement" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "Auto-nivellement de l’attaque" + +#~ msgid "Auto Leveling Release" +#~ msgstr "Auto-nivellement du relâ­che­ment" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "Auto-nivellement du genou" + +#~ msgid "Gain Left" +#~ msgstr "Gain à gauche" + +#~ msgid "Gain Right" +#~ msgstr "Gain à droite" + +#~ msgid "Sidechain Left" +#~ msgstr "Chaîne latérale gauche" + +#~ msgid "Sidechain Right" +#~ msgstr "Chaîne latérale droite" + +#~ msgid "Standard" +#~ msgstr "Standard" + +#~ msgid "Flat" +#~ msgstr "Plat" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "FFT Size" +#~ msgstr "Taille FFT" + +#~ msgid "Fast Fourier Transform Size" +#~ msgstr "Taille de la transformation de Fourier rapide" + +#~ msgid "Output Volume" +#~ msgstr "Volume de sortie" + +#~ msgid "Ceiling" +#~ msgstr "Plafonnement" + +#~ msgid "Operating Mode" +#~ msgstr "Mode de fonctionnement" + +#~ msgid "Classic" +#~ msgstr "Classique" + +#~ msgid "Modern" +#~ msgstr "Moderne" + +#~ msgid "Sidechain Boost" +#~ msgstr "Renforcement de la chaîne latérale" + +#~ msgid "Pink BT" +#~ msgstr "Rose BT" + +#~ msgid "Pink MT" +#~ msgstr "Rose MT" + +#~ msgid "Brown BT" +#~ msgstr "Marron BT" + +#~ msgid "Brown MT" +#~ msgstr "Marron MT" + +#~ msgid "Bands List" +#~ msgstr "Liste des bandes" + +#~ msgid "Band 1" +#~ msgstr "Bande 1" + +#~ msgid "Band 2" +#~ msgstr "Bande 2" + +#~ msgid "Band 3" +#~ msgstr "Bande 3" + +#~ msgid "Band 4" +#~ msgstr "Bande 4" + +#~ msgid "Band 5" +#~ msgstr "Bande 5" + +#~ msgid "Band 6" +#~ msgstr "Bande 6" + +#~ msgid "Band 7" +#~ msgstr "Bande 7" + +#~ msgid "Band 8" +#~ msgstr "Bande 8" + +#~ msgid "Band Start" +#~ msgstr "Début de la bande" + +#~ msgid "Band End" +#~ msgstr "Fin de la bande" + +#~ msgid "Band Compression Mode" +#~ msgstr "Mode de compression de la bande" + +#~ msgid "Band Bypass" +#~ msgstr "Contourner bande" + +#~ msgid "Band Sidechain Options" +#~ msgstr "Options de la chaîne latérale de la bande" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtre coupe-bas" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Fréquence du filtre coupe-bas" + +#~ msgid "High-Cut Filter" +#~ msgstr "Filtre coupe-haut" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Fréquence du filtre coupe-haut" + +#~ msgid "PreAmp" +#~ msgstr "PréAmp" + +#~ msgid "Band Gain" +#~ msgstr "Gain de la bande" + +#~ msgid "Band Envelope" +#~ msgstr "Enveloppe de la bande" + +#~ msgid "Band Curve" +#~ msgstr "Courbe de la bande" + +#~ msgid "Split Mode" +#~ msgstr "Mode de division" + +#~ msgid "Split 1/2" +#~ msgstr "Diviser 1/2" + +#~ msgid "Split Frequency 1" +#~ msgstr "Diviser la fréquence 1" + +#~ msgid "Split 2/3" +#~ msgstr "Diviser 2/3" + +#~ msgid "Split Frequency 2" +#~ msgstr "Diviser la fréquence 2" + +#~ msgid "Split 3/4" +#~ msgstr "Diviser 3/4" + +#~ msgid "Split Frequency 3" +#~ msgstr "Diviser la fréquence 3" + +#~ msgid "Sub Band" +#~ msgstr "Sous-bande" + +#~ msgid "Band 1 Bypass" +#~ msgstr "Contournement bande 1" + +#~ msgid "Band 1 Solo" +#~ msgstr "Solo de la bande 1" + +#~ msgid "Band 1 Detection" +#~ msgstr "Détection de la bande 1" + +#~ msgid "Band 1 Attack" +#~ msgstr "Attaque de la bande 1" + +#~ msgid "Band 1 Release" +#~ msgstr "Relâ­che­ment de la bande 1" + +#~ msgid "Band 1 Threshold" +#~ msgstr "Seuil de la bande 1" + +#~ msgid "Band 1 Ratio" +#~ msgstr "Ratio de la bande 1" + +#~ msgid "Band 1 Knee" +#~ msgstr "Genou de la bande 1" + +#~ msgid "Band 1 Makeup" +#~ msgstr "Rattrapage de gain de la bande 1" + +#~ msgid "Max Reduction" +#~ msgstr "Atténuation maximale" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Réduction max de la bande 1" + +#~ msgid "Low Band" +#~ msgstr "Bande inférieure" + +#~ msgid "Band 2 Bypass" +#~ msgstr "Contournement bande 2" + +#~ msgid "Band 2 Solo" +#~ msgstr "Solo de la bande 2" + +#~ msgid "Band 2 Detection" +#~ msgstr "Détection de la bande 2" + +#~ msgid "Band 2 Attack" +#~ msgstr "Attaque de la bande 2" + +#~ msgid "Band 2 Release" +#~ msgstr "Relâ­che­ment de la bande 2" + +#~ msgid "Band 2 Threshold" +#~ msgstr "Seuil de la bande 2" + +#~ msgid "Band 2 Ratio" +#~ msgstr "Ratio de bande 2" + +#~ msgid "Band 2 Knee" +#~ msgstr "Genou de la bande 2" + +#~ msgid "Band 2 Makeup" +#~ msgstr "Compensation de gain de la bande 2" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Réduction max de la bande 2" + +#~ msgid "Mid Band" +#~ msgstr "Bande centrale" + +#~ msgid "Band 3 Bypass" +#~ msgstr "Contournement bande 3" + +#~ msgid "Band 3 Solo" +#~ msgstr "Solo de la bande 3" + +#~ msgid "Band 3 Detection" +#~ msgstr "Détection de la bande 3" + +#~ msgid "Band 3 Attack" +#~ msgstr "Attaque de la bande 3" + +#~ msgid "Band 3 Release" +#~ msgstr "Relâ­che­ment de la bande 3" + +#~ msgid "Band 3 Threshold" +#~ msgstr "Seuil de la bande 3" + +#~ msgid "Band 3 Ratio" +#~ msgstr "Ratio de bande 3" + +#~ msgid "Band 3 Knee" +#~ msgstr "Genou de la bande 3" + +#~ msgid "Band 3 Makeup" +#~ msgstr "Compensation de gain de la bande 3" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Réduction max. de la banda 3" + +#~ msgid "High Band" +#~ msgstr "Bande supérieure" + +#~ msgid "Band 4 Bypass" +#~ msgstr "Contournement bande 4" + +#~ msgid "Band 4 Solo" +#~ msgstr "Solo de la bande 4" + +#~ msgid "Band 4 Detection" +#~ msgstr "Détection de la bande 4" + +#~ msgid "Band 4 Attack" +#~ msgstr "Attaque de la bande 4" + +#~ msgid "Band 4 Release" +#~ msgstr "Relâ­che­ment de la bande 4" + +#~ msgid "Band 4 Threshold" +#~ msgstr "Seuil de la bande 4" + +#~ msgid "Band 4 Ratio" +#~ msgstr "Ratio de la bande 4" + +#~ msgid "Band 4 Knee" +#~ msgstr "Genou de la bande 4" + +#~ msgid "Band 4 Makeup" +#~ msgstr "Compensation de gain de la bande 4" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Réduction max. de la bande 4" + +#~ msgid "General" +#~ msgstr "Général" + +#~ msgid "Device Management" +#~ msgstr "Gestion des périphériques" + +#~ msgid "" +#~ "It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +#~ "external applications (e.g. Gnome Settings and Plasma System Settings)." +#~ msgstr "" +#~ "Il est recommandé de ne PAS définir EasyEffects Sink/Source comme " +#~ "périphérique par défaut dans les applications externes (par exemple, les " +#~ "Paramètres de Gnome et les Paramètres de Plasma)." + +#~ msgid "Use Default Input" +#~ msgstr "Utiliser l’entrée par défaut" + +#~ msgid "Custom Input Device" +#~ msgstr "Périphérique d’entrée personnalisé" + +#~ msgid "Use Default Output" +#~ msgstr "Utiliser la sortie par défaut" + +#~ msgid "Custom Output Device" +#~ msgstr "Périphérique de sortie personnalisé" + +#~ msgid "Server Information" +#~ msgstr "Information du serveur" + +#~ msgid "Header Version" +#~ msgstr "Version de l’en-tête" + +#~ msgid "Library Version" +#~ msgstr "Version de la bibliothèque" + +#~ msgid "Sampling Rate" +#~ msgstr "Taux d’échantillonnage" + +#~ msgid "Minimum Quantum" +#~ msgstr "Quantum minimum" + +#~ msgid "Maximum Quantum" +#~ msgstr "Quantum maximum" + +#~ msgid "Default Quantum" +#~ msgstr "Quantum par défaut" + +#~ msgid "Presets Autoloading" +#~ msgstr "Chargement automatique des préréglages" + +#~ msgid "Output Devices" +#~ msgstr "Périphériques de sortie" + +#~ msgid "Output Presets" +#~ msgstr "Préréglages de sortie" + +#~ msgid "Create Association" +#~ msgstr "Créer une association" + +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "Ajouter un préréglage de sortie auto-chargeant" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Liste des préréglages de sortie auto-chargeant" + +#~ msgid "Input Devices" +#~ msgstr "Périphériques d’entrée" + +#~ msgid "Input Presets" +#~ msgstr "Préréglages d’entrée" + +#~ msgid "Add Autoloading Input Preset" +#~ msgstr "Ajouter un préréglage d’entrée auto-chargeant" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Liste des préréglages d’entrée auto-chargeant" + +#~ msgid "Modules" +#~ msgstr "Modules" + +#~ msgid "Modules List" +#~ msgstr "Liste des modules" + +#~ msgid "Clients" +#~ msgstr "Clients" + +#~ msgid "Clients List" +#~ msgstr "Liste des clients" + +#~ msgid "Test Signal" +#~ msgstr "Signal d’essai" + +#~ msgid "State" +#~ msgstr "État" + +#~ msgid "Enabled" +#~ msgstr "Activé" + +#~ msgid "Properties" +#~ msgstr "Propriétés" + +#~ msgid "Channels" +#~ msgstr "Canaux" + +#~ msgid "Both" +#~ msgstr "Tous les deux" + +#~ msgid "Both Channels" +#~ msgstr "Les deux canaux" + +#~ msgid "Waveform" +#~ msgstr "Forme d’onde" + +#~ msgid "Sine Wave" +#~ msgstr "Onde sinusoïdale" + +#~ msgid "White Noise" +#~ msgstr "Bruit blanc" + +#~ msgid "High Speed" +#~ msgstr "Haute vélocité" + +#~ msgid "High Quality" +#~ msgstr "Haute qualité" + +#~ msgid "High Consistency" +#~ msgstr "Haute cohérence" + +#~ msgid "Formant" +#~ msgstr "Formant" + +#~ msgid "Shifted" +#~ msgstr "Altéré" + +#~ msgid "Preserved" +#~ msgstr "Préservé" + +#~ msgid "Transients" +#~ msgstr "Transitoires" + +#~ msgid "Crisp" +#~ msgstr "Net" + +#~ msgid "Mixed" +#~ msgstr "Intermédiaire" + +#~ msgid "Smooth" +#~ msgstr "Progressif" + +#~ msgid "Detector" +#~ msgstr "Détecteur" + +#~ msgid "Compound" +#~ msgstr "Composé" + +#~ msgid "Percussive" +#~ msgstr "Percutant" + +#~ msgid "Soft" +#~ msgstr "Doux" + +#~ msgid "Phase" +#~ msgstr "Phase" + +#~ msgid "Laminar" +#~ msgstr "Laminaire" + +#~ msgid "Independent" +#~ msgstr "Indépendante" + +#~ msgid "Cents" +#~ msgstr "Cents" + +#~ msgid "Semitones" +#~ msgstr "Demi-tons" + +#~ msgid "Octaves" +#~ msgstr "Octaves" + +#~ msgid "Remove this effect" +#~ msgstr "Supprimer cet effet" + +#~ msgid "Enable/disable this effect" +#~ msgstr "Activer/désactiver cet effet" + +#~ msgid "Change the position of this effect" +#~ msgstr "Modifier la position de cet effet" + +#~ msgid "Add Effect" +#~ msgstr "Ajouter un effet" + +#~ msgid "Used Plugins List" +#~ msgstr "Liste des plugins utilisés" + +#~ msgid "No Effects" +#~ msgstr "Aucun effet" + +#~ msgid "Audio Stream Not Modified" +#~ msgstr "Flux audio non modifié" + +#~ msgid "Search Plugin" +#~ msgstr "Plugin de recherche" + +#~ msgid "Plugins List" +#~ msgstr "Liste des plugins" + +#~ msgid "_General" +#~ msgstr "_Général" + +#~ msgid "Service" +#~ msgstr "Service" + +#~ msgid "Launch Service at System Startup" +#~ msgstr "Lancer le service au démarrage du système" + +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Arrêter à la fermeture de la fenêtre" + +#~ msgid "Audio" +#~ msgstr "Audio" + +#~ msgid "Process All Output Streams" +#~ msgstr "Traiter tous les flux de sortie" + +#~ msgid "Process All Input Streams" +#~ msgstr "Traiter tous les flux d’entrée" + +#~ msgid "Ignore Streams from Monitor of Devices" +#~ msgstr "Ignorer les flux du moniteur des périphériques" + +#~ msgid "Use Cubic Volume" +#~ msgstr "Utiliser le volume cubique" + +#~ msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +#~ msgstr "" +#~ "Réinitialiser le volume des périphériques virtuels de EasyEffects au " +#~ "démarrage" + +#~ msgid "Inactivity Timeout" +#~ msgstr "Délai d’inactivité" + +#~ msgid "Style" +#~ msgstr "Style" + +#~ msgid "Use Dark Theme" +#~ msgstr "Utiliser le thème sombre" + +#~ msgid "Hide Menus on Outside Clicks" +#~ msgstr "Masquer les menus en cliquant en dehors" + +#~ msgid "_Spectrum" +#~ msgstr "_Spectre" + +#~ msgid "Shape" +#~ msgstr "Forme" + +#~ msgid "Bars" +#~ msgstr "Barres" + +#~ msgid "Lines" +#~ msgstr "Lignes" + +#~ msgid "Dots" +#~ msgstr "Points" + +#~ msgid "Points" +#~ msgstr "Points" + +#~ msgid "Height" +#~ msgstr "Hauteur" + +#~ msgid "Line Width" +#~ msgstr "Largeur de ligne" + +#~ msgid "Fill" +#~ msgstr "Remplir" + +#~ msgid "Show Bars Border" +#~ msgstr "Afficher les bordures des barres" + +#~ msgid "Rounded Corners" +#~ msgstr "Coins arrondis" + +#~ msgid "Color" +#~ msgstr "Couleur" + +#~ msgid "Lines and Bars" +#~ msgstr "Lignes et barres" + +#~ msgid "Axis Labels" +#~ msgstr "Annotation des axes" + +#~ msgid "Frequency Range" +#~ msgstr "Intervalle de fréquences" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maximum" + +#~ msgid "Load" +#~ msgstr "Charger" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Enregistrer les paramètres actuels dans ce préréglage" + +#~ msgid "Remove this preset file" +#~ msgstr "Supprimer ce préréglage" + +#~ msgid "New Output Preset Name" +#~ msgstr "Nom du préréglage de sortie" + +#~ msgid "Create a new preset" +#~ msgstr "Créer un nouveau préréglage" + +#~ msgid "Import a preset" +#~ msgstr "Importer un préréglage" + +#~ msgid "Search Output Preset" +#~ msgstr "Rechercher un préréglage de sortie" + +#~ msgid "Output Presets List" +#~ msgstr "Liste des préréglages de sortie" + +#~ msgid "New Input Preset Name" +#~ msgstr "Nom du nouveau préréglage d’entrée" + +#~ msgid "Search Input Preset" +#~ msgstr "Rechercher un préréglage d’entrée" + +#~ msgid "Input Presets List" +#~ msgstr "Liste des préréglages d’entrée" + +#~ msgid "High Frequency Damping" +#~ msgstr "Atténuation des hautes fréquences" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Room Size" +#~ msgstr "Taille de la salle" + +#~ msgid "Small" +#~ msgstr "Petite" + +#~ msgid "Medium" +#~ msgstr "Moyenne" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Tunnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/lisse" + +#~ msgid "Experimental" +#~ msgstr "Expérimental" + +#~ msgid "Diffusion" +#~ msgstr "Diffusion" + +#~ msgid "Pre Delay" +#~ msgstr "Pré-retard" + +#~ msgid "Decay Time" +#~ msgstr "Temps de déclin" + +#~ msgid "Wet Amount" +#~ msgstr "Quantité de signaux avec effets" + +#~ msgid "Wet Level" +#~ msgstr "Niveau des signaux avec effet" + +#~ msgid "Dry Amount" +#~ msgstr "Quantité de signaux sans effets" + +#~ msgid "Dry Level" +#~ msgstr "Niveau des signaux sans effets" + +#~ msgid "Bass Cut" +#~ msgstr "Atténuation des basses" + +#~ msgid "Treble Cut" +#~ msgstr "Atténuation des aigües" + +#~ msgid "Ambience" +#~ msgstr "Ambiance" + +#~ msgid "Empty Walls" +#~ msgstr "Murs vides" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Room" +#~ msgstr "Salle" + +#~ msgid "Large Empty Hall" +#~ msgstr "Grande salle vide" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Grande salle occupée" + +#~ msgid "Import Model" +#~ msgstr "Importer un modèle" + +#~ msgid "Models" +#~ msgstr "Modèles" + +#~ msgid "Standard Model" +#~ msgstr "Modèle standard" + +#~ msgid "RNNoise Models List" +#~ msgstr "Liste des modèles RNNoise" + +#~ msgid "Model Not Loaded" +#~ msgstr "Modèle non chargé" + +#~ msgid "Active Model" +#~ msgstr "Modèle actif" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Modèle standard RNNoise" + +#~ msgid "Overview" +#~ msgstr "Vue d’ensemble" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Ouvrir le manuel de EasyEffects" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Plein écran/Restaurer à partir du plein écran" + +#~ msgid "Close the Window" +#~ msgstr "Fermer la fenêtre" + +#~ msgid "Quit EasyEffects" +#~ msgstr "Quitter EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#~ msgid "Input Balance" +#~ msgstr "Balance d’entrée" + +#~ msgid "Softclip" +#~ msgstr "Écrêtage doux" + +#~ msgid "Softclip Level" +#~ msgstr "Niveau de l’écrêtage" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matrice stéréo" + +#~ msgid "Stereo Mode" +#~ msgstr "Mode stéréo" + +#~ msgid "Invert Phase" +#~ msgstr "Inverser la phase" + +#~ msgid "Side Level" +#~ msgstr "Niveau latéral" + +#~ msgid "Side Balance" +#~ msgstr "Balance latérale" + +#~ msgid "Middle Level" +#~ msgstr "Niveau central" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama central" + +#~ msgid "Output Balance" +#~ msgstr "Balance de sortie" + +#~ msgid "Delay L/R" +#~ msgstr "Retard G/D" + +#~ msgid "Delay Left Right" +#~ msgstr "Retard gauche droite" + +#~ msgid "Stereo Base" +#~ msgstr "Base stéréo" + +#~ msgid "Stereo Phase" +#~ msgstr "Phase Stéréo" + +#~ msgid "Running" +#~ msgstr "En cours" + +#~ msgid "Suspended" +#~ msgstr "En pause" + +#~ msgid "Idle" +#~ msgstr "Inactif" + +#~ msgid "Creating" +#~ msgstr "Génération" + +#~ msgid "Error" +#~ msgstr "Erreur" + +#~ msgid "Unknown" +#~ msgstr "Inconnu" + +#~ msgid "channels" +#~ msgstr "Canaux" + +#~ msgid "Output Presets: " +#~ msgstr "Préréglages de sortie : " + +#~ msgid "Input Presets: " +#~ msgstr "Préréglages d’entrée : " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Effets audio pour les applications utilisant PipeWire" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "Quitter EasyEffects. Utile en cas de fonctionnement en mode serveur." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Chargez un préréglage. Exemple : easyeffects -l musique" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Réinitialiser EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Masquer la Fenêtre." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Contournement global. 1 pour activer, 2 pour désactiver et 3 pour obtenir " +#~ "le statut" + +#~ msgid "Show available presets." +#~ msgstr "Afficher les préréglages disponibles." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#~ msgid "The File Is Not Regular" +#~ msgstr "Le fichier est irrégulier" + +#~ msgid "The Impulse File May Be Corrupted or Unsupported" +#~ msgstr "Le fichier d’impulsion peut être corrompu ou non pris en charge" + +#~ msgid "Only Stereo Impulse Files Are Supported" +#~ msgstr "Seuls les fichiers d’impulsion stéréo sont pris en charge" + +#~ msgid "Impulse File Not Imported" +#~ msgstr "Fichier d’impulsion non importé" + +#~ msgid "Import Impulse File" +#~ msgstr "Importer un fichier d’impulsion" + +#~ msgid "Open" +#~ msgstr "Ouvrir" + +#~ msgid "Cancel" +#~ msgstr "Annuler" + +#~ msgid "Impulse Response" +#~ msgstr "Réponse impulsionnelle" + +#~ msgid "Load Impulse" +#~ msgstr "Charger une impulsion" + +#~ msgid "Remove Impulse" +#~ msgstr "Supprimer l’impulsion" + +#~ msgid "No Impulse File Loaded" +#~ msgstr "Aucun fichier d’impulsion chargé" + +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Impossible de charger le fichier d’impulsion" + +#~ msgid "Recorders" +#~ msgstr "Enregistreurs" + +#~ msgid "Players" +#~ msgstr "Lecteurs" + +#~ msgid "Effects" +#~ msgstr "Effets" + +#~ msgid "infinity" +#~ msgstr "infini" + +#~ msgid "Import APO Preset File" +#~ msgstr "Importer un fichier de préréglage APO" + +#~ msgid "APO Presets" +#~ msgstr "Préréglages APO" + +#~ msgid "" +#~ "APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +#~ msgstr "" +#~ "Le préréglage APO n’a pas été chargé. Le format du fichier peut être " +#~ "erroné. Veuillez vérifier son contenu." + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Supprimer le préréglage du chargement automatique" + +#~ msgid "Remove" +#~ msgstr "Supprimer" + +#~ msgid "Output Device" +#~ msgstr "Périphérique de sortie" + +#~ msgid "Add" +#~ msgstr "Ajouter" + +#~ msgid "Import Preset" +#~ msgstr "Importer un préréglage" + +#~ msgid "" +#~ "Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To " +#~ "The Standard Model." +#~ msgstr "" +#~ "Le modèle sélectionné n’a pas été chargé. Son format n’est peut-être pas " +#~ "pris en charge. Retour au modèle standard." + +#~ msgid "Import Model File" +#~ msgstr "Importer un modèle" + +#~ msgid "RNNoise Models" +#~ msgstr "Modèles RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Amélioration des basses" + +#~ msgid "Bass Loudness" +#~ msgstr "Sonie des basses" + +#~ msgid "Convolver" +#~ msgstr "Convolueur" + +#~ msgid "Crossfeed" +#~ msgstr "Flux croisé" + +#~ msgid "Crystalizer" +#~ msgstr "Cristallisateur" + +#~ msgid "Deesser" +#~ msgstr "Déesseur" + +#~ msgid "Delay" +#~ msgstr "Retard" + +#~ msgid "Echo Canceller" +#~ msgstr "Annulateur d’écho" + +#~ msgid "Equalizer" +#~ msgstr "Égaliseur" + +#~ msgid "Exciter" +#~ msgstr "Excitateur" + +#~ msgid "Filter" +#~ msgstr "Filtre" + +#~ msgid "Limiter" +#~ msgstr "Limiteur" + +#~ msgid "Maximizer" +#~ msgstr "Maximiseur" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compresseur multibande" + +#, fuzzy +#~ msgid "Multiband Gate" +#~ msgstr "Porte multibande" + +#, fuzzy +#~ msgid "Pitch" +#~ msgstr "Hauteur" + +#~ msgid "Reverberation" +#~ msgstr "Réverbération" + +#~ msgid "Noise Reduction" +#~ msgstr "Réduction de bruit" + +#~ msgid "Stereo Tools" +#~ msgstr "Outils stéréo" + +#~ msgid "Close (Press ESC)" +#~ msgstr "Fermer (appuyez sur Échap)" + +#~ msgid "Average" +#~ msgstr "Moyenne" + +#~ msgid "Failed" +#~ msgstr "Échec" + +#~ msgid "Use Default" +#~ msgstr "Utiliser la valeur par défaut" + +#~ msgid "Remove this plugin" +#~ msgstr "Supprimer ce plugin" + +#~ msgid "Import Presets" +#~ msgstr "Ouvrir préréglage" + +#~ msgid "Start Service at Login" +#~ msgstr "Lancer le service au démarrage" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Réinitialiser le volume au démarrage" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aucune compression" + +#~ msgid "Add to Blocklist" +#~ msgstr "Ajouter à la liste de blocage" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibration de la correction microphone" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Table sinusoïdale" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Table sinusoïdale" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latence" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Gain d'entrée [dB]" + +#, fuzzy +#~ msgid "Output Effects" +#~ msgstr "Limiteur d'entrée" + +#~ msgid "Settings" +#~ msgstr "Paramètres" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Paramètres" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Calibration" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Signal de test" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Signal de test" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spectromètre" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spectromètre" + +#, fuzzy +#~ msgid "Spectrum Color" +#~ msgstr "Spectromètre" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Réduction de gain" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "Niveau" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Passe-bas" + +#~ msgid "Input Limiter" +#~ msgstr "Limiteur d'entrée" + +#~ msgid "Calibration" +#~ msgstr "Calibration" + +#, fuzzy +#~ msgid "Limit" +#~ msgstr "Limite [dB]" + +#~ msgid "Attenuation" +#~ msgstr "Atténuation" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Effets audio pour applications PulseAudio" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Effets audio pour applications PulseAudio" + +#, fuzzy +#~ msgid "Calibration Microphone" +#~ msgstr "Calibration de la correction microphone" + +#~ msgid "Sine" +#~ msgstr "Sinusoïde" + +#~ msgid "Square" +#~ msgstr "Carrée" + +#~ msgid "Saw" +#~ msgstr "Dent de scie" + +#~ msgid "Triangle" +#~ msgstr "Triangle" + +#, fuzzy +#~ msgid "Silence" +#~ msgstr "Silence" + +#~ msgid "Pink Noise" +#~ msgstr "Bruit rose" + +#~ msgid "Ticks" +#~ msgstr "Ticks" + +#~ msgid "Gaussian Noise" +#~ msgstr "Bruit Gaussien" + +#~ msgid "Red Noise" +#~ msgstr "Bruit rouge" + +#~ msgid "Blue Noise" +#~ msgstr "Bruit bleu" + +#~ msgid "Violet Noise" +#~ msgstr "Bruit violet" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#, fuzzy +#~ msgid "Window" +#~ msgstr "Fenêtre [s]" + +#~ msgid "Measure Noise" +#~ msgstr "Mesurer le bruit" + +#~ msgid "Subtract Noise" +#~ msgstr "Enlever le bruit" + +#, fuzzy +#~ msgid "High" +#~ msgstr "Passe-haut" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Réduction de gain" + +#, fuzzy +#~ msgid "Very High" +#~ msgstr "Passe-haut" + +#, fuzzy +#~ msgid "Noise Suppressor" +#~ msgstr "Compresseur" + +#, fuzzy +#~ msgid "Detection Likelihood" +#~ msgstr "Atténuation" + +#, fuzzy +#~ msgid "Voice Detector" +#~ msgstr "Atténuation" + +#, fuzzy +#~ msgid "Select the impulse Response File" +#~ msgstr "Réponse plane" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Aucune compression" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Calibration" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Paramètres" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Préréglage" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Atténuation" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Fréquence [Hz]" + +#, fuzzy +#~ msgid "Buffer" +#~ msgstr "Latence" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Égaliseur - Sortie" + +# Taking lingual shortcuts to squeeze it in the text box +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Taille pièce" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Ouvrir préréglage" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Réduction de gain" diff --git a/po/news/gl.po b/po/news/gl.po new file mode 100644 index 0000000..465cbca --- /dev/null +++ b/po/news/gl.po @@ -0,0 +1,2890 @@ +# Galician translation for EasyEffects +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# Xosé , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-09 11:09+0000\n" +"Last-Translator: Fran Diéguez \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efectos de son para as aplicacións de PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"O EasyEffects é unha ferramenta avanzada de manipulación de son. Inclúe " +"ferramentas como ecualizador, limitador, compresor e reverberación, por " +"mencionar só algunhas. Para complementalas, incorpora tamén un analizador de " +"espectros." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects é o sucesor de PulseEffects. EasyEffects só admite o servidor de " +"son de PipeWire. Os usuarios de PulseAudio deberían usar no lugar " +"PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Dado que o EasyEffects emprega o servidor de son PipeWire predeterminado " +"debería funcionar coa maioría, se non todas, as aplicacións que use. Todas " +"as aplicacións admitidas preséntanse na xanela principal, na que é posíbel " +"activar cada unha delas individualmente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Ademais de manipular a saída de son, o EasyEffects pode aplicar efectos a un " +"dispositivo de entrada, como un micrófono. Isto é útil, por exemplo, para " +"gravar son, mais tamén funciona ben durante as conversas de voz." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Ao iniciar, EasyEffects lembra a configuración empregada na sesión anterior. " +"Tamén é posíbel gardar as opcións actuais como perfís." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "A páxina principal que mostra dúas aplicacóns con saída de son" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "A páxina do mellorador de baixos mostrando os controles de son" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "A páxina do convolucionador mostrando os controles de son" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"Isto debería evitar os casos onde o volume «Integrado» bloquease sempre no " +"mesmo valor." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"A icona de EasyEffects foi actualizada para que poida verse mellor en " +"escritorios QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"A opción de liña de ordes que devolve un estado bypass global está " +"funcionando de novo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Compatibilidade para a seguinte publicación de Pipewire 0.3.44" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Arranxouse un erro ao tentar crear un perfil de autocarga sen ter " +"preconfiguracions causados por unha quebra da aplicación" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"Úsase LibAdwaita para crear algunhas partes da nosa xanela e para xestionar " +"o troque entre temas escuro e claro." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" +"O menú de preferencias foi redeseñado empregando trebellos de LibAdwaita." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM e GLIBMM xa non son dependencias. Agora usamos gtk4 directamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta publicación engade as seguintes características:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Esta publicación arranxa os seguintes erros:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bandas" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Hai unha nova configuración que lle permite ao usuario seleccionar un " +#~ "tempo de espera de inactividade para o pipeline. Cando non hai un cliente " +#~ "reproducindo" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "ou gravando desde os seus dispositivos os filtros desligaranse despois " +#~ "dun tempo. Isto faise para asegurarse que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "non gasta enerxía no procesador sen que se entere." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta publicación arranxa o seguinte erro:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esta publicación engade a seguinte característica:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ecualizador, compresor e outros efectos de son" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limitador;compresor;reverberación;ecualizador;volume automático;" + +#~ msgid "\"Presets\"" +#~ msgstr "«Preconfiguracións»" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Activado" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplicacións" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplicacións" + +#~ msgid "_Preferences" +#~ msgstr "_Preferencias" + +#~ msgid "_Manual" +#~ msgstr "_Manual" + +#~ msgid "_Shortcuts" +#~ msgstr "_Atallos de teclado" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Configuración" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Sobre EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Preconfiguracións" + +#~ msgid "Presets Menu" +#~ msgstr "Menú de preconfiguracións" + +#~ msgid "Global Bypass" +#~ msgstr "Desvío global" + +#~ msgid "Primary Menu" +#~ msgstr "Menú primario" + +#~ msgid "EasyEffects Window" +#~ msgstr "Xanela de EasyEffects" + +#~ msgid "Applications List" +#~ msgstr "Lista de aplicacións" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Paredes baleiras" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplicacións" + +#~ msgid "Target" +#~ msgstr "Destino" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Máximo" + +#~ msgid "Reference" +#~ msgstr "Referencia" + +#~ msgid "Momentary" +#~ msgstr "Momentáneo" + +#~ msgid "Short-Term" +#~ msgstr "Curto prazo" + +#~ msgid "Integrated" +#~ msgstr "Integrado" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Empregar media xeométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Empregar media xeométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Empregar media xeométrica" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Empregar media xeométrica" + +#~ msgid "Reset History" +#~ msgstr "Restabelecer historial" + +#~ msgid "Relative" +#~ msgstr "Relativo" + +#~ msgid "Range" +#~ msgstr "Intervalo" + +#~ msgid "Loudness" +#~ msgstr "Sonoridade" + +#~ msgid "Output Gain" +#~ msgstr "Ganancia da saída" + +#~ msgid "Input" +#~ msgstr "Entrada" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Saída" + +#~ msgid "Output" +#~ msgstr "Saída" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Saída" + +#~ msgid "Reset" +#~ msgstr "Restabelecer" + +#~ msgid "Using" +#~ msgstr "Usando" + +#~ msgid "Device" +#~ msgstr "Dispositivo" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Profile" +#~ msgstr "Perfíl" + +#~ msgid "Preset" +#~ msgstr "Preconfiguración" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Retirar este ficheiro de preconfiguracións" + +#~ msgid "Listen" +#~ msgstr "Escoitar" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mesturar harmónicos" + +#~ msgid "3rd" +#~ msgstr "3.º" + +#~ msgid "2nd" +#~ msgstr "2.º" + +#~ msgid "Amount" +#~ msgstr "Cantidade" + +#~ msgid "Harmonics" +#~ msgstr "Harmónicos" + +#~ msgid "Scope" +#~ msgstr "Ámbito" + +#~ msgid "Floor" +#~ msgstr "Chan" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Chan" + +#~ msgid "Link" +#~ msgstr "Ligazón" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplicacións" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Mostrar aplicacións bloqueadas na lapela principal" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Aplicacións" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Mostrar aplicacións bloqueadas na lapela principal" + +#~ msgid "Compressor" +#~ msgstr "Compresor" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Downward" +#~ msgstr "Descendente" + +#~ msgid "Upward" +#~ msgstr "Ascendente" + +#~ msgid "Compression Mode" +#~ msgstr "Modo de compresión" + +#~ msgid "Boost Threshold" +#~ msgstr "Limiar de realce" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Cantidade" + +#~ msgid "Attack" +#~ msgstr "Ataque" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Limiar" + +#~ msgid "Release" +#~ msgstr "Soltar" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Soltar" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Limiar da solta relativa" + +#~ msgid "Ratio" +#~ msgstr "Proporción" + +#~ msgid "Knee" +#~ msgstr "Xeonllo" + +#~ msgid "Makeup" +#~ msgstr "Restauración" + +#~ msgid "Sidechain" +#~ msgstr "Cadea lateral" + +#~ msgid "Peak" +#~ msgstr "Pico" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Frecuencias baixas" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Cadea lateral" + +#~ msgid "Source" +#~ msgstr "Fonte" + +#~ msgid "Middle" +#~ msgstr "Medio" + +#~ msgid "Side" +#~ msgstr "Lado" + +#~ msgid "Left" +#~ msgstr "Esquerda" + +#~ msgid "Right" +#~ msgstr "Dereita" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Cadea lateral" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Feed-forward" +#~ msgstr "Remitir" + +#~ msgid "Feed-back" +#~ msgstr "Retroalimentar" + +#~ msgid "External" +#~ msgstr "Externo" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Cadea lateral" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Nivel de entrada" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Preamplificación" + +#~ msgid "Reactivity" +#~ msgstr "Reactividade" + +#~ msgid "Lookahead" +#~ msgstr "Delonga máxima" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Cadea lateral" + +#~ msgid "High-Pass" +#~ msgstr "Paso alto" + +#~ msgid "Frequency" +#~ msgstr "Frecuencia" + +#~ msgid "Off" +#~ msgstr "Desactivado" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Modo de filtro de frecuencias altas" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Frecuencias altas" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Modo de filtro de frecuencias altas" + +#~ msgid "Gain" +#~ msgstr "Ganancia" + +#~ msgid "Curve" +#~ msgstr "Curva" + +#~ msgid "L" +#~ msgstr "E" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Canles" + +#~ msgid "R" +#~ msgstr "D" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Dividir canles" + +#~ msgid "Impulses" +#~ msgstr "Impulsos" + +#~ msgid "Combine" +#~ msgstr "Combinar" + +#~ msgid "Stereo Width" +#~ msgstr "Largura do estéreo" + +#~ msgid "Spectrum" +#~ msgstr "Espectro" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Ganancia automática" + +#~ msgid "Rate" +#~ msgstr "Taxa" + +#~ msgid "Samples" +#~ msgstr "Mostras" + +#~ msgid "Duration" +#~ msgstr "Duración" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Resposta de impulso" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Saída" + +#~ msgid "Import Impulse" +#~ msgstr "Importar impulso" + +#~ msgid "Search" +#~ msgstr "Buscar" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Importar ficheiro de impulso" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Importar ficheiro de impulso" + +#~ msgid "Default" +#~ msgstr "Predeterminado" + +#~ msgid "Cutoff" +#~ msgstr "Corte" + +#~ msgid "Feed" +#~ msgstr "Fonte" + +#~ msgid "Bypass" +#~ msgstr "Desvío" + +#~ msgid "Mute" +#~ msgstr "Silenciar" + +#~ msgid "Detection" +#~ msgstr "Detección" + +#~ msgid "Wide" +#~ msgstr "Amplo" + +#~ msgid "Split" +#~ msgstr "Dividir" + +#~ msgid "F1 Split" +#~ msgstr "División F1" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frecuencia" + +#~ msgid "F2 Peak" +#~ msgstr "Pico F2" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frecuencia" + +#~ msgid "F1 Gain" +#~ msgstr "Ganancia F1" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frecuencia" + +#~ msgid "F2 Level" +#~ msgstr "Nivel F2" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frecuencia" + +#~ msgid "F2 Peak Q" +#~ msgstr "Pico F2 Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frecuencia" + +#~ msgid "Laxity" +#~ msgstr "Laxitude" + +#~ msgid "Detected" +#~ msgstr "Detectado" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Redución" + +#~ msgid "Frame Size" +#~ msgstr "Tamaño de fotograma" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filtro" + +#~ msgid "Bands" +#~ msgstr "Bandas" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "Transformada rápida de Fourier" + +#~ msgid "Split Channels" +#~ msgstr "Dividir canles" + +#~ msgid "Flat Response" +#~ msgstr "Resposta plana" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calcular frecuencias" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "Preconfiguracións de APO" + +#~ msgid "Bell" +#~ msgstr "Campaíña" + +#~ msgid "High Pass" +#~ msgstr "Frecuencias altas" + +#~ msgid "High Shelf" +#~ msgstr "Andel alto" + +#~ msgid "Low Pass" +#~ msgstr "Frecuencias baixas" + +#~ msgid "Low Shelf" +#~ msgstr "Andel baixo" + +#~ msgid "Notch" +#~ msgstr "Entalla" + +#~ msgid "Resonance" +#~ msgstr "Resonancia" + +#~ msgid "All Pass" +#~ msgstr "Todos os pasos" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Desvío" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Bandas" + +#~ msgid "Slope" +#~ msgstr "Pendente" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Pendente" + +#~ msgid "Width" +#~ msgstr "Largura" + +#~ msgid "Quality" +#~ msgstr "Calidade" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Teito" + +#~ msgid "Access" +#~ msgstr "Acceso" + +#~ msgid "Description" +#~ msgstr "Descrición" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Retirar este ficheiro de preconfiguracións" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "Paso baixo 12dB/oct" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "Paso baixo 24dB/oct" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "Paso baixo 36dB/oct" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "Paso alto 12dB/oct" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "Paso alto 24dB/oct" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "Paso alto 36dB/oct" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "Paso de banda 6dB/oct" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "Paso de banda 12dB/oct" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "Paso de banda 18dB/oct" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "Rexeita faixa 6dB/oct" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "Rexeita faixa 12dB/oct" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "Rexeita faixa 18dB/oct" + +#~ msgid "Inertia" +#~ msgstr "Inercia" + +#~ msgid "Gate" +#~ msgstr "Porta" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Soltar" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Externo" + +#~ msgid "Gating" +#~ msgstr "Limiar dinámico" + +#~ msgid "Oversampling" +#~ msgstr "Sobremostraxe" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Amplo" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Amplo" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Largura de liña" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Largura de liña" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Largura de liña" + +#~ msgid "None" +#~ msgstr "Ningunha" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Preamplificación" + +#~ msgid "Stereo Link" +#~ msgstr "Ligazón estéreo" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Cadea lateral" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Nivelación automática" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Nivelación automática" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Nivelación automática" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Nivelación automática" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Esquerda" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Dereita" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Cadea lateral" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Cadea lateral" + +#~ msgid "Standard" +#~ msgstr "Estándar" + +#~ msgid "Flat" +#~ msgstr "Plano" + +#~ msgid "FFT Size" +#~ msgstr "Tamaño de FFT" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Saída" + +#~ msgid "Ceiling" +#~ msgstr "Teito" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Importar modelo" + +#~ msgid "Classic" +#~ msgstr "Clásico" + +#~ msgid "Modern" +#~ msgstr "Moderno" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Cadea lateral" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Modo de compresión" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Desvío" + +#, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Cadea lateral" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Modo de filtro de frecuencias baixas" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Modo de filtro de frecuencias baixas" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filtro de altas frecuencias" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Filtro de altas frecuencias" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Ganancia F1" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Curva" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Dividir" + +#~ msgid "Split 1/2" +#~ msgstr "Dividir 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frecuencia" + +#~ msgid "Split 2/3" +#~ msgstr "Dividir 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frecuencia" + +#~ msgid "Split 3/4" +#~ msgstr "Dividir 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frecuencia" + +#~ msgid "Sub Band" +#~ msgstr "Sub-banda" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Desvío" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Redución de ganancia" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Soltar" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Restauración" + +#~ msgid "Max Reduction" +#~ msgstr "Redución" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Redución de ganancia" + +#~ msgid "Low Band" +#~ msgstr "Banda baixa" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Desvío" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Redución de ganancia" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Soltar" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Restauración" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Redución de ganancia" + +#~ msgid "Mid Band" +#~ msgstr "Banda media" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Desvío" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Redución de ganancia" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Soltar" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Restauración" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Redución de ganancia" + +#~ msgid "High Band" +#~ msgstr "Banda alta" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Desvío" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Redución de ganancia" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Soltar" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Restauración" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Redución de ganancia" + +#~ msgid "General" +#~ msgstr "Xeral" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Empregar o predeterminado" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Nivel de entrada" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Empregar o predeterminado" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Saída" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Reverberación" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Taxa da mostraxe predeterminada" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Máximo" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Ganancia máxima" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Saída de son por defecto" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Saída" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Preconfiguracións de saída: " + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Preconfiguracións de saída: " + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Nivel de entrada" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Preconfiguracións de entrada: " + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Preconfiguracións de entrada: " + +#~ msgid "Modules" +#~ msgstr "Módulos" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Módulos" + +#~ msgid "Clients" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Sinais de proba" + +#~ msgid "State" +#~ msgstr "Estado" + +#~ msgid "Enabled" +#~ msgstr "Activado" + +#~ msgid "Properties" +#~ msgstr "Propiedades" + +#~ msgid "Channels" +#~ msgstr "Canles" + +#~ msgid "Both" +#~ msgstr "Ambos" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Canles" + +#~ msgid "Waveform" +#~ msgstr "Forma de onda" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Táboa de senos" + +#~ msgid "White Noise" +#~ msgstr "Ruído branco" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Andel alto" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Calidade" + +#~ msgid "Preserved" +#~ msgstr "Preservado" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Limpidez" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detección" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Compresión" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Compresión de ganancia" + +#~ msgid "Cents" +#~ msgstr "Cents" + +#~ msgid "Semitones" +#~ msgstr "Semitóns" + +#~ msgid "Octaves" +#~ msgstr "Oitavas" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Retirar este ficheiro de preconfiguracións" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Efectos de entrada" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#~ msgid "_General" +#~ msgstr "_Xeral" + +#~ msgid "Service" +#~ msgstr "Servizo" + +#~ msgid "Audio" +#~ msgstr "Audio" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Procesar todas as saí­das" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Procesar todas as entradas" + +#, fuzzy +#~ msgid "Inactivity Timeout" +#~ msgstr "Tempo límite da actividade" + +#~ msgid "Style" +#~ msgstr "Estilo" + +#~ msgid "Use Dark Theme" +#~ msgstr "Empregar tema escuro" + +#~ msgid "_Spectrum" +#~ msgstr "_Espectro" + +#~ msgid "Shape" +#~ msgstr "Forma" + +#~ msgid "Bars" +#~ msgstr "Barras" + +#~ msgid "Lines" +#~ msgstr "Liñas" + +#~ msgid "Dots" +#~ msgstr "Puntos" + +#~ msgid "Points" +#~ msgstr "Puntos" + +#~ msgid "Height" +#~ msgstr "Altura" + +#~ msgid "Line Width" +#~ msgstr "Largura de liña" + +#~ msgid "Fill" +#~ msgstr "Encher" + +#~ msgid "Color" +#~ msgstr "Cor" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frecuencia" + +#~ msgid "Minimum" +#~ msgstr "Mínimo" + +#~ msgid "Maximum" +#~ msgstr "Máximo" + +#~ msgid "Load" +#~ msgstr "Cargar" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Gardar as opcións actuais neste ficheiro de preconfiguracións" + +#~ msgid "Remove this preset file" +#~ msgstr "Retirar este ficheiro de preconfiguracións" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Preconfiguracións de saída: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Sen preconfiguración" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importar preconfiguración" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Preconfiguracións de saída: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Preconfiguracións de saída: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Preconfiguracións de entrada: " + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Preconfiguracións de entrada: " + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Preconfiguracións de entrada: " + +#~ msgid "High Frequency Damping" +#~ msgstr "Amortecemento de frecuencias altas" + +#~ msgid "Room Size" +#~ msgstr "Tamaño da sala" + +#~ msgid "Small" +#~ msgstr "Pequena" + +#~ msgid "Medium" +#~ msgstr "Media" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Túnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/suave" + +#~ msgid "Experimental" +#~ msgstr "Experimental" + +#~ msgid "Diffusion" +#~ msgstr "Difusión" + +#~ msgid "Pre Delay" +#~ msgstr "Delonga previa" + +#~ msgid "Decay Time" +#~ msgstr "Tempo de decaemento" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Cantidade" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Nivel do destino" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Cantidade" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Nivel F2" + +#~ msgid "Bass Cut" +#~ msgstr "Paso alto" + +#~ msgid "Treble Cut" +#~ msgstr "Corte de agudos" + +#~ msgid "Ambience" +#~ msgstr "Ambiente" + +#~ msgid "Empty Walls" +#~ msgstr "Paredes baleiras" + +#~ msgid "Room" +#~ msgstr "Sala" + +#~ msgid "Large Empty Hall" +#~ msgstr "Sala de concertos grande baleira" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Sala de concertos grande ocupada" + +#~ msgid "Import Model" +#~ msgstr "Importar modelo" + +#~ msgid "Models" +#~ msgstr "Modelos" + +#, fuzzy +#~ msgid "Standard Model" +#~ msgstr "Modelo RNNoise estándar" + +#, fuzzy +#~ msgid "RNNoise Models List" +#~ msgstr "Modelo RNNoise estándar" + +#~ msgid "Active Model" +#~ msgstr "Modelo activo" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Modelo RNNoise estándar" + +#~ msgid "Overview" +#~ msgstr "Vista xeral" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Restabelecer EasyEffects." + +#, fuzzy +#~ msgid "Close the Window" +#~ msgstr "Agochar a xanela." + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balance" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Balance" + +#~ msgid "Softclip" +#~ msgstr "Compresión de ganancia" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Compresión de ganancia" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matriz estéreo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "DE>DE (Predeterminado de estéreo)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "ED>M (Estéreo a medio)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "M>ED (Medio a estéreo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "ED>EE (Mono canle esquerda)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "ED>DD (Mono canle dereita)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "ED>E+D(Mono suma de E+D)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "ED>DE (Canles estéreo invertidas)" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Base de estéreo" + +#~ msgid "Invert Phase" +#~ msgstr "Inverter fase" + +#~ msgid "Side Level" +#~ msgstr "Nivel lateral" + +#~ msgid "Side Balance" +#~ msgstr "Balance lateral" + +#~ msgid "Middle Level" +#~ msgstr "Nivel medio" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama medio" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Saída" + +#~ msgid "Delay L/R" +#~ msgstr "Delonga E/D" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Delonga E/D" + +#~ msgid "Stereo Base" +#~ msgstr "Base de estéreo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fase estéreo" + +#, fuzzy +#~ msgid "Running" +#~ msgstr "en execución" + +#, fuzzy +#~ msgid "Suspended" +#~ msgstr "suspendido" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "a crear" + +#, fuzzy +#~ msgid "Error" +#~ msgstr "erro" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Canles" + +#~ msgid "Output Presets: " +#~ msgstr "Preconfiguracións de saída: " + +#~ msgid "Input Presets: " +#~ msgstr "Preconfiguracións de entrada: " + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efectos de son para as aplicacións de PulseAudio" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Saír do EasyEffects. É últil cando se executa no modo de servizo." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Cargar unha preconfiguración. Exemplo: pulseefects-l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Restabelecer EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Agochar a xanela." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Desvío global. 1 para activar, 2 para desactivar e 3 para coñecer o estado" + +#~ msgid "Show available presets." +#~ msgstr "Mostrar preoconfiguracións dispoñíbeis." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Importar ficheiro de impulso" + +#~ msgid "Import Impulse File" +#~ msgstr "Importar ficheiro de impulso" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Impulse Response" +#~ msgstr "Resposta de impulso" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Resposta de impulso" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Importar impulso" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Importar ficheiro de impulso" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Non foi posíbel cargar o ficheiro de impulso" + +#~ msgid "Recorders" +#~ msgstr "Gravadoras" + +#~ msgid "Players" +#~ msgstr "Reprodutores" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "infinito" + +#~ msgid "Import APO Preset File" +#~ msgstr "Importar ficheiro de preconfiguracións de APO" + +#~ msgid "APO Presets" +#~ msgstr "Preconfiguracións de APO" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Retirar este ficheiro de preconfiguracións" + +#~ msgid "Remove" +#~ msgstr "Eliminar" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Saída" + +#~ msgid "Add" +#~ msgstr "Engadir" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Importar preconfiguración" + +#~ msgid "Import Model File" +#~ msgstr "Importar ficheiro de modelo" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Modelo RNNoise estándar" + +#~ msgid "Bass Enhancer" +#~ msgstr "Mellora de baixos" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Sonoridade" + +#~ msgid "Convolver" +#~ msgstr "Convolución" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Cristalizador" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Delonga" + +#~ msgid "Echo Canceller" +#~ msgstr "Cancelador de cco" + +#~ msgid "Equalizer" +#~ msgstr "Ecualizador" + +#~ msgid "Exciter" +#~ msgstr "Excitación" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Limiter" +#~ msgstr "Limitador" + +#~ msgid "Maximizer" +#~ msgstr "Maximizador" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compresor multibanda" + +#~ msgid "Multiband Gate" +#~ msgstr "Porta multibanda" + +#~ msgid "Pitch" +#~ msgstr "Ton" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Reverberación" + +#~ msgid "Noise Reduction" +#~ msgstr "Redución de ruído" + +#~ msgid "Stereo Tools" +#~ msgstr "Ferramentas de estéreo" + +#~ msgid "Average" +#~ msgstr "Media" + +#~ msgid "Failed" +#~ msgstr "Fallou" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Empregar o predeterminado" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Retirar este ficheiro de preconfiguracións" + +#~ msgid "Import Presets" +#~ msgstr "Importar preconfiguración" + +#~ msgid "Start Service at Login" +#~ msgstr "Iniciar automaticamente coa sesión" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modelo activo" + +#~ msgid "Add to Blocklist" +#~ msgstr "Engadir á lista de bloqueo" + +#~ msgid "Blocklist" +#~ msgstr "Lista de bloqueos" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibración do micrófono" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Activar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Activar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "idle" +#~ msgstr "ocioso" + +#~ msgid "Faster" +#~ msgstr "Máis rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Conservar formante" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Saída" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Canles" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Chan" + +#~ msgid "Output Effects" +#~ msgstr "Efectos de saída" + +#~ msgid "Settings" +#~ msgstr "Configuración" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Configuración" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Duración" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Sinais de proba" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Sinais de proba" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar espectro" + +#~ msgid "Border" +#~ msgstr "Bordo" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de espectro" + +#~ msgid "Spectrum Color" +#~ msgstr "Cor do espectro" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Modelo activo" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Redución máxima da ganancia" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Ponderacións" + +#~ msgid "Dry" +#~ msgstr "Seco" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "Short Term" +#~ msgstr "Curto prazo" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Frecuencias baixas" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Fixación do volume e des/activación dos efectos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Inclúe un ecualizador con preconfiguracións incorporadas" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibración" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Control de suavizado automático" + +#~ msgid "Limit" +#~ msgstr "Límite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuación" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Efectos de son para as aplicacións de PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Efectos de son para as aplicacións de PulseAudio" + +#~ msgid "Help" +#~ msgstr "Axuda" + +#~ msgid "Calibration Microphone" +#~ msgstr "Calibración do micrófono" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Aplicar esta preconfiguración automaticamente sempre que o dispositivo en " +#~ "uso estea conectado ao sistema" + +#~ msgid "Version" +#~ msgstr "Versión" + +#, fuzzy +#~ msgid "Default Devices and Sampling Rate" +#~ msgstr "Taxa da mostraxe predeterminada" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Cadrado" + +#~ msgid "Saw" +#~ msgstr "Serra" + +#~ msgid "Triangle" +#~ msgstr "Triángulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruído rosa" + +#~ msgid "Ticks" +#~ msgstr "Marcas" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruído gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruído vermello" + +#~ msgid "Blue Noise" +#~ msgstr "Ruído azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruído violeta" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Xanela" + +#~ msgid "Measure Noise" +#~ msgstr "Medir ruído" + +#~ msgid "Subtract Noise" +#~ msgstr "Subtraer ruído" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Provided by" +#~ msgstr "Fornecido por" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro estendido" + +#~ msgid "Low" +#~ msgstr "Baixo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alta" + +#~ msgid "Suppression Level" +#~ msgstr "Nivel de supresión" + +#~ msgid "Delay Agnostic" +#~ msgstr "Agnóstico coa delonga" + +#~ msgid "Very High" +#~ msgstr "Moi alta" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresión de ruído" + +#~ msgid "Adaptive Digital" +#~ msgstr "Dixital adaptativo" + +#~ msgid "Fixed Digital" +#~ msgstr "Dixital fixo" + +#~ msgid "Gain Controller" +#~ msgstr "Controlador de ganancia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidade de detección" + +#~ msgid "Very Low" +#~ msgstr "Moi baixa" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de voces" + +#~ msgid "Use Custom Color" +#~ msgstr "Empregar cor personalizada" + +#~ msgid "Use Gradient" +#~ msgstr "Empregar gradación" + +#~ msgid "Gradient Color" +#~ msgstr "Cor de gradación" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importar ficheiro de resposta de impulso" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Seleccione o ficheiro de resposta de impulso" + +#~ msgid "Aggressive Mode" +#~ msgstr "Modo agresivo" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Despois" + +#~ msgid "Loudness Range" +#~ msgstr "Intervalo de sonoridade" + +#~ msgid "Loudness Compensator" +#~ msgstr "Compensador de sonoridade" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Based on" +#~ msgstr "Baseado en" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar silencio" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Conecte de novo o micrófono para aplicar os cambios feitos na lista de " +#~ "bloqueos" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Reinicie o reprodutor para aplicar os cambios feitos na lista de boqueos" + +#~ msgid "Low-pass Frequency" +#~ msgstr "Frecuencias baixas" + +#~ msgid "Advanced" +#~ msgstr "Avanzado" + +#~ msgid "Apply APO Preset" +#~ msgstr "Aplicar preconfiguración de APO" + +#~ msgid "Muted" +#~ msgstr "Enmudecido" + +#~ msgid "Distant Headphones" +#~ msgstr "Auriculares distantes" + +#~ msgid "Niceness" +#~ msgstr "Prioridade" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de prioridade" + +#~ msgid "Priority" +#~ msgstr "Prioridade" + +#~ msgid "About" +#~ msgstr "Acerca de" + +#~ msgid "Default Source" +#~ msgstr "Fonte predeterminada" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de mostraxe predeterminado" + +#~ msgid "Channel Mapping" +#~ msgstr "Asignación de canles" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "File" +#~ msgstr "Ficheiro" + +#~ msgid "Configuration" +#~ msgstr "Configuración" + +#~ msgid "Resamplers" +#~ msgstr "Resampleadores" + +#~ msgid "Pipeline Input" +#~ msgstr "Entrada de tubaxe" + +#~ msgid "Buffer" +#~ msgstr "Búfer" + +#~ msgid "Pipeline Output" +#~ msgstr "Saída de tubaxe" + +#~ msgid "Block Size" +#~ msgstr "Tamaño do bloque" + +#~ msgid "Sampling" +#~ msgstr "Mostraxe" + +#~ msgid "Minimum Frequency" +#~ msgstr "Frecuencia mínima" + +#~ msgid "Maximum Frequency" +#~ msgstr "Frecuencia máxima" diff --git a/po/news/hr.po b/po/news/hr.po new file mode 100644 index 0000000..2e8af33 --- /dev/null +++ b/po/news/hr.po @@ -0,0 +1,2600 @@ +# Croatian translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the EasyEffects package. +# gogo , 2017. +# rooty , 2018. +# flipwise , 2018. +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2018-11-22 20:12+0200\n" +"Last-Translator: flipwise \n" +"Language-Team: Croatian\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.7\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +#, fuzzy +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +#, fuzzy +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects je napredan alat za manipulaciju zvukom. Uključuje ekvalizator, " +"graničnik, kompresor, alat odjeka te mnoge druge druge alate. Još sadrži i " +"ugrađeni analizator spektra." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +#, fuzzy +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Zato što EasyEffects koristi zadani PulseAudio zvučni poslužitelj, radit će " +"s većinom, ako ne i sa svim aplikacijama koje koristite. Sve podržane " +"aplikacije su prikazane u glavnom prozoru, gdje se na svaku pojedinačno može " +"omogućiti utjecaj efekata." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +#, fuzzy +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Osim manipuliranja izlaza zvuka, EasyEffects može primijeniti efekte i na " +"ulazni uređaj, poput mikrofona. To je na primjer korisno pri snimanju zvuka, " +"ali isto tako funkcionira dobro i tijekom glasovnih razgovora." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +#, fuzzy +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Kad je EasyEffects pokrenut, upotrijebit će podešavanja od prošlog puta. " +"Također je moguće spremiti sve trenutne postavke kao predloške." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Broj raspona" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ekvalizator, kompresor i drugi audio efekti" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "graničnik;kompresor;odjek;ekvalizator;automatska glasnoća zvuka;" + +#, fuzzy +#~ msgid "\"Presets\"" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Omogući" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplikacije" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplikacije" + +#, fuzzy +#~ msgid "_Shortcuts" +#~ msgstr "Kratkoročno" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Postavke" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Global Bypass" +#~ msgstr "Premosnica" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Aplikacije" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Prazna soba" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplikacije" + +#~ msgid "Target" +#~ msgstr "Meta" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Najveće pojačanje" + +#~ msgid "Momentary" +#~ msgstr "Trenutačno" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Kratkoročno" + +#~ msgid "Integrated" +#~ msgstr "Integrirano" + +#, fuzzy +#~ msgid "Reset History" +#~ msgstr "Vrati izvornu kvalitetu" + +#~ msgid "Relative" +#~ msgstr "Relativno" + +#~ msgid "Range" +#~ msgstr "Raspon" + +#~ msgid "Loudness" +#~ msgstr "Glasnoća" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Pojačanje ulaza" + +#~ msgid "Input" +#~ msgstr "Ulaz" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Pojačanje ulaza" + +#~ msgid "Output" +#~ msgstr "Izlaz" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Pojačanje ulaza" + +#~ msgid "Reset" +#~ msgstr "Vrati na tvorničke postavke" + +#, fuzzy +#~ msgid "Device" +#~ msgstr "Ulazni uređaj" + +#~ msgid "Name" +#~ msgstr "Naziv" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Kompresija" + +#~ msgid "Listen" +#~ msgstr "Poslušaj" + +#~ msgid "Blend Harmonics" +#~ msgstr "Spajanje harmonijskog reda" + +#~ msgid "3rd" +#~ msgstr "3." + +#~ msgid "2nd" +#~ msgstr "2." + +#~ msgid "Amount" +#~ msgstr "Jačina" + +#~ msgid "Harmonics" +#~ msgstr "Harmonijski red" + +#~ msgid "Scope" +#~ msgstr "Raspon" + +#~ msgid "Floor" +#~ msgstr "Dno" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Dno" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplikacije" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Aplikacije" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Aplikacije" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Aplikacije" + +#~ msgid "Compressor" +#~ msgstr "Kompresor" + +#~ msgid "Mode" +#~ msgstr "Način" + +#, fuzzy +#~ msgid "Compression Mode" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Jačina" + +#~ msgid "Attack" +#~ msgstr "Pokretanje" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Vrijeme opadanja intenziteta signala" + +#~ msgid "Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Pokretanje" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Prag" + +#~ msgid "Release" +#~ msgstr "Vrijeme prijelaza" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Vrijeme prijelaza" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Prag" + +#~ msgid "Ratio" +#~ msgstr "Omjer" + +#, fuzzy +#~ msgid "Knee" +#~ msgstr "Koljeno" + +#, fuzzy +#~ msgid "Makeup" +#~ msgstr "Dorada" + +#, fuzzy +#~ msgid "Sidechain" +#~ msgstr "Postranični ulaz" + +#~ msgid "Peak" +#~ msgstr "Vrhunac" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#, fuzzy +#~ msgid "Low-Pass" +#~ msgstr "Nizak prolaz" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "Source" +#~ msgstr "Izvor" + +#, fuzzy +#~ msgid "Middle" +#~ msgstr "Srednji nivo" + +#, fuzzy +#~ msgid "Side" +#~ msgstr "Strana" + +#~ msgid "Left" +#~ msgstr "Lijevo" + +#~ msgid "Right" +#~ msgstr "Desno" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "Feed-back" +#~ msgstr "Dovod zvuka" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Ulazni uređaj" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Aplikacije" + +#~ msgid "Lookahead" +#~ msgstr "Preduhvatiti" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Filter visokog prolaza" + +#~ msgid "Frequency" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "12 dB/oct" +#~ msgstr "12dB/oct niski prolaz" + +#, fuzzy +#~ msgid "24 dB/oct" +#~ msgstr "24dB/oct niski prolaz" + +#, fuzzy +#~ msgid "36 dB/oct" +#~ msgstr "36dB/oct niski prolaz" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Filter visokog prolaza" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Prigušivanje visokih frekvencija" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Filter visokog prolaza" + +#~ msgid "Gain" +#~ msgstr "Pojačanje" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Kanali" + +#~ msgid "R" +#~ msgstr "D" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Reakcija impulsa" + +#, fuzzy +#~ msgid "Stereo Width" +#~ msgstr "Stereo širina" + +#~ msgid "Spectrum" +#~ msgstr "Spektar" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Automatsko pojačavanje" + +#~ msgid "Rate" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Samples" +#~ msgstr "Semplovi" + +#, fuzzy +#~ msgid "Duration" +#~ msgstr "Trajanje" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Reakcija impulsa" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Izlaz" + +#, fuzzy +#~ msgid "Import Impulse" +#~ msgstr "Učitaj impuls" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Učitaj impuls datoteku" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Učitaj impuls datoteku" + +#~ msgid "Default" +#~ msgstr "Tvorničke postavke" + +#~ msgid "Cutoff" +#~ msgstr "Prekid" + +#~ msgid "Feed" +#~ msgstr "Dovod zvuka" + +#~ msgid "Bypass" +#~ msgstr "Premosnica" + +#~ msgid "Mute" +#~ msgstr "Bezvučno" + +#~ msgid "Detection" +#~ msgstr "Detekcija" + +#~ msgid "Wide" +#~ msgstr "Široko" + +#, fuzzy +#~ msgid "Split" +#~ msgstr "Razdvojeno" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Razdvojeno" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Vrhunac" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Pojačanje" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Razina" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Vrhunac Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frekvencija" + +#~ msgid "Laxity" +#~ msgstr "Popustljivost" + +#, fuzzy +#~ msgid "Detected" +#~ msgstr "Detektirano" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Smanjenje" + +#~ msgid "Frame Size" +#~ msgstr "Veličina okvira" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filter" + +#~ msgid "Bands" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Split Channels" +#~ msgstr "Kanali" + +#~ msgid "Flat Response" +#~ msgstr "Ravan izlaz" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Izračunaj frekvencije" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "High Pass" +#~ msgstr "Filter visokog prolaza" + +#~ msgid "High Shelf" +#~ msgstr "Visoki shelf" + +#~ msgid "Low Pass" +#~ msgstr "Nizak prolaz" + +#~ msgid "Low Shelf" +#~ msgstr "Niski shelf" + +#~ msgid "Resonance" +#~ msgstr "Rezonancija" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Nizak prolaz" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Premosnica" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Broj raspona" + +#~ msgid "Width" +#~ msgstr "Širina" + +#~ msgid "Quality" +#~ msgstr "Kvaliteta" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Vrh" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Detekcija" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Kompresija" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct niski prolaz" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct niski prolaz" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct niski prolaz" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct visoki prolaz" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct visoki prolaz" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct visoki prolaz" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct band prolaz" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct band prolaz" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct band prolaz" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct odbijanje banda" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct odbijanje banda" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct odbijanje banda" + +#~ msgid "Inertia" +#~ msgstr "Inercija" + +#~ msgid "Gate" +#~ msgstr "Vrata" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Vrijeme prijelaza" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Integrirano" + +#~ msgid "Oversampling" +#~ msgstr "Jači sampling" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Široko" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Široko" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Širina" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Širina" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Širina" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Aplikacije" + +#~ msgid "Stereo Link" +#~ msgstr "Stereo veza" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Automatsko pojačavanje" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Automatsko pojačavanje" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Automatsko pojačavanje" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Automatsko pojačavanje" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Lijevo" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Desno" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Veličina okvira" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Izlaz" + +#~ msgid "Ceiling" +#~ msgstr "Vrh" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Učitaj impuls" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Način" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Premosnica" + +#, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Postranični ulaz" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Filter" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Filter" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filter visokog prolaza" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Filter visokog prolaza" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Pojačanje ulaza" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Razdvojeno" + +#, fuzzy +#~ msgid "Split 1/2" +#~ msgstr "Razdvojeno 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Split 2/3" +#~ msgstr "Razdvojeno 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Split 3/4" +#~ msgstr "Razdvojeno 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Sub Band" +#~ msgstr "Sub band" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Premosnica" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Pokretanje" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Vrijeme prijelaza" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Dorada" + +#~ msgid "Max Reduction" +#~ msgstr "Smanjenje" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Low Band" +#~ msgstr "Niski band" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Premosnica" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Pokretanje" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Vrijeme prijelaza" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Dorada" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Mid Band" +#~ msgstr "Srednji band" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Premosnica" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Pokretanje" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Vrijeme prijelaza" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Dorada" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "High Band" +#~ msgstr "Visoki band" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Premosnica" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Pokretanje" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Vrijeme prijelaza" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Broj raspona" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Dorada" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Ograničenje pojačanja" + +#~ msgid "General" +#~ msgstr "Općenito" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Koristi tvorničke postavke" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Ulazni uređaj" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Koristi tvorničke postavke" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Pojačanje ulaza" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Reverberacija" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Jači sampling" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Najveće pojačanje" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Tvorničke postavke" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Pojačanje ulaza" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Predlošci: " + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Predlošci: " + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Ulazni uređaj" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Clients" +#~ msgstr "Centi" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Centi" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Testni signali" + +#~ msgid "State" +#~ msgstr "Stanje" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Omogući" + +#~ msgid "Channels" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Sinus tablica" + +#~ msgid "White Noise" +#~ msgstr "Bijeli šum" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Visoki shelf" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Kvaliteta" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Format" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Oštrina" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detekcija" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Kompresija" + +#~ msgid "Cents" +#~ msgstr "Centi" + +#~ msgid "Semitones" +#~ msgstr "Polustepeni" + +#~ msgid "Octaves" +#~ msgstr "Oktave" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Ulazni efekti" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "Općenito" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Ulazni uređaj" + +#~ msgid "Use Dark Theme" +#~ msgstr "Koristi tamnu temu" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Spektar" + +#~ msgid "Points" +#~ msgstr "Broj traka" + +#, fuzzy +#~ msgid "Height" +#~ msgstr "Visina" + +#, fuzzy +#~ msgid "Line Width" +#~ msgstr "Širina" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Maksimum" + +#, fuzzy +#~ msgid "Maximum" +#~ msgstr "Maksimum" + +#, fuzzy +#~ msgid "Save current settings to this preset file" +#~ msgstr "Spremi trenutne postavke u predložak" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Predlošci: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Stvori predložak" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Predlošci: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Predlošci: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Učitaj predloške" + +#~ msgid "High Frequency Damping" +#~ msgstr "Prigušivanje visokih frekvencija" + +#~ msgid "Room Size" +#~ msgstr "Veličina sobe" + +#, fuzzy +#~ msgid "Small" +#~ msgstr "Mala" + +#~ msgid "Medium" +#~ msgstr "Osrednja" + +#, fuzzy +#~ msgid "Large" +#~ msgstr "Velika" + +#~ msgid "Tunnel" +#~ msgstr "Tunel" + +#~ msgid "Large/smooth" +#~ msgstr "Velika/glatko" + +#~ msgid "Experimental" +#~ msgstr "Eksperimentalna" + +#~ msgid "Diffusion" +#~ msgstr "Difuzija" + +#, fuzzy +#~ msgid "Pre Delay" +#~ msgstr "Prijevremeno kašnjenje" + +#~ msgid "Decay Time" +#~ msgstr "Vrijeme opadanja intenziteta signala" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Jačina" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Ciljana razina" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Jačina" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Razina" + +#~ msgid "Bass Cut" +#~ msgstr "Odrezivanje basa" + +#~ msgid "Treble Cut" +#~ msgstr "Odrezivanje trebla" + +#, fuzzy +#~ msgid "Ambience" +#~ msgstr "Ambijent" + +#~ msgid "Empty Walls" +#~ msgstr "Prazna soba" + +#, fuzzy +#~ msgid "Room" +#~ msgstr "Soba" + +#~ msgid "Large Empty Hall" +#~ msgstr "Velika prazna dvorana" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Velika popunjena dvorana" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Učitaj impuls" + +#, fuzzy +#~ msgid "Models" +#~ msgstr "Način" + +#, fuzzy +#~ msgid "Active Model" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Overview" +#~ msgstr "Ulazni uređaj" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Ravnoteža" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Ravnoteža" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Stranična razina" + +#, fuzzy +#~ msgid "Stereo Matrix" +#~ msgstr "Stereo matrica" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Stereo baza" + +#~ msgid "Invert Phase" +#~ msgstr "Inverzija faze" + +#, fuzzy +#~ msgid "Side Level" +#~ msgstr "Stranična razina" + +#, fuzzy +#~ msgid "Side Balance" +#~ msgstr "Stranična ravnoteža" + +#, fuzzy +#~ msgid "Middle Level" +#~ msgstr "Srednji nivo" + +#, fuzzy +#~ msgid "Middle Panorama" +#~ msgstr "Srednja panorama" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Pojačanje ulaza" + +#, fuzzy +#~ msgid "Delay L/R" +#~ msgstr "Kašnjenje L/D" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Kašnjenje L/D" + +#, fuzzy +#~ msgid "Stereo Base" +#~ msgstr "Stereo baza" + +#, fuzzy +#~ msgid "Stereo Phase" +#~ msgstr "Stereo faza" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "Postavke" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Output Presets: " +#~ msgstr "Predlošci: " + +#, fuzzy +#~ msgid "Input Presets: " +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "Zatvori EasyEffects. Korisno pri upotrebi u servisnom načinu pokretanja." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Učitaj predložak. Primjer: easyeffects -l music" + +#, fuzzy +#~ msgid "Reset EasyEffects." +#~ msgstr "EasyEffects" + +#~ msgid "Show available presets." +#~ msgstr "Prikaži dostupne predloške." + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Učitaj impuls datoteku" + +#, fuzzy +#~ msgid "Import Impulse File" +#~ msgstr "Učitaj impuls datoteku" + +#~ msgid "Open" +#~ msgstr "Otvori" + +#~ msgid "Cancel" +#~ msgstr "Poništi" + +#, fuzzy +#~ msgid "Impulse Response" +#~ msgstr "Reakcija impulsa" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Reakcija impulsa" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Učitaj impuls" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Učitaj impuls datoteku" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Nije bilo moguće učitati impuls datoteku" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Import APO Preset File" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "APO Presets" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Pojačanje ulaza" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "Učitaj impuls datoteku" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Kompresija" + +#~ msgid "Bass Enhancer" +#~ msgstr "Pojačanje basa" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Glasnoća" + +#~ msgid "Convolver" +#~ msgstr "Konvolver" + +#~ msgid "Crossfeed" +#~ msgstr "Križno spajanje" + +#, fuzzy +#~ msgid "Crystalizer" +#~ msgstr "Kristalizator" + +#~ msgid "Deesser" +#~ msgstr "De-esiranje" + +#~ msgid "Delay" +#~ msgstr "Kašnjenje" + +#~ msgid "Echo Canceller" +#~ msgstr "Poništenje jeke" + +#~ msgid "Equalizer" +#~ msgstr "Ekvalizator" + +#~ msgid "Exciter" +#~ msgstr "Uzbuđivač" + +#, fuzzy +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Limiter" +#~ msgstr "Graničnik" + +#~ msgid "Maximizer" +#~ msgstr "Maksimizer" + +#, fuzzy +#~ msgid "Multiband Compressor" +#~ msgstr "Višerasponski kompresor" + +#, fuzzy +#~ msgid "Multiband Gate" +#~ msgstr "Višerasponska vrata" + +#~ msgid "Pitch" +#~ msgstr "Visina" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Reverberacija" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Stereo Tools" +#~ msgstr "Stereo alati" + +#, fuzzy +#~ msgid "Average" +#~ msgstr "Prosjek" + +#~ msgid "Failed" +#~ msgstr "Nije uspjelo" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Koristi tvorničke postavke" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Kompresija" + +#~ msgid "Import Presets" +#~ msgstr "Učitaj predloške" + +#~ msgid "Start Service at Login" +#~ msgstr "Pokreni servis pri pokretanju računala" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Crna lista" + +#~ msgid "Blocklist" +#~ msgstr "Crna lista" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibracija mikrofona" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Omogući" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Omogući" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latencija" + +#~ msgid "Faster" +#~ msgstr "Brže" + +#~ msgid "Preserve Formant" +#~ msgstr "Sačuvaj formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Pojačanje ulaza" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Dno" + +#~ msgid "Output Effects" +#~ msgstr "Izlazni efekti" + +#~ msgid "Settings" +#~ msgstr "Postavke" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Postavke" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Trajanje" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Testni signali" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Testni signali" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spektar" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spektar" + +#, fuzzy +#~ msgid "Spectrum Color" +#~ msgstr "Boja spektra" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Ograničenje pojačanja" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Otežanja" + +#~ msgid "Dry" +#~ msgstr "Suhoća" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "S/C Razina" + +#~ msgid "Short Term" +#~ msgstr "Kratkoročno" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Nizak prolaz" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Postavi razinu zvuka te uključi/isključi efekte" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Uključuje i ekvalizator s ugrađenim predlošcima" + +#~ msgid "Input Limiter" +#~ msgstr "Graničnik ulaza" + +#~ msgid "Calibration" +#~ msgstr "Kalibracija" + +#~ msgid "Limit" +#~ msgstr "Granica" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Prigušenje" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Zvučni efekti za Pulseaudio aplikacije" + +#~ msgid "Help" +#~ msgstr "Pomoć" + +#, fuzzy +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibracija mikrofona" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Kvadrat" + +#~ msgid "Saw" +#~ msgstr "Pila" + +#~ msgid "Triangle" +#~ msgstr "Trokut" + +#, fuzzy +#~ msgid "Silence" +#~ msgstr "Tišina" + +#~ msgid "Pink Noise" +#~ msgstr "Rozi šum" + +#~ msgid "Ticks" +#~ msgstr "Otkucaji" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussov šum" + +#~ msgid "Red Noise" +#~ msgstr "Crveni šum" + +#~ msgid "Blue Noise" +#~ msgstr "Plavi šum" + +#~ msgid "Violet Noise" +#~ msgstr "Ljubičasti šum" + +#~ msgid "Volume" +#~ msgstr "Glasnoća" + +#~ msgid "Window" +#~ msgstr "Prozor" + +#~ msgid "Measure Noise" +#~ msgstr "Izmjeri šum" + +#~ msgid "Subtract Noise" +#~ msgstr "Izdvoji šum" + +#~ msgid "Extended Filter" +#~ msgstr "Prošireni filter" + +#~ msgid "Low" +#~ msgstr "Nisko" + +#~ msgid "Moderate" +#~ msgstr "Umjereno" + +#~ msgid "High" +#~ msgstr "Visoko" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Razina supresije" + +#, fuzzy +#~ msgid "Very High" +#~ msgstr "Jako visoko" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresija buke" + +#~ msgid "Gain Controller" +#~ msgstr "Kontrola pojačanja" + +#~ msgid "Detection Likelihood" +#~ msgstr "Vjerojatnost detekcije" + +#~ msgid "Very Low" +#~ msgstr "Vrlo nisko" + +#~ msgid "Voice Detector" +#~ msgstr "Detektor glasa" + +#~ msgid "Use Custom Color" +#~ msgstr "Koristi vlastitu boju" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Učitaj datoteku reakcije impulsa" + +#, fuzzy +#~ msgid "Select the impulse Response File" +#~ msgstr "Odaberite datoteku reakcije impulsa" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Kompresija" + +#, fuzzy +#~ msgid "Loudness Range" +#~ msgstr "Glasnoća" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Tvorničke postavke" + +#, fuzzy +#~ msgid "Default Source" +#~ msgstr "Tvorničke postavke" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Trajanje" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Izračunaj frekvencije" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Napredne postavke" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Predlošci" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Detekcija" + +#, fuzzy +#~ msgid "Muted" +#~ msgstr "Bezvučno" + +#~ msgid "Distant Headphones" +#~ msgstr "Udaljene slušalice" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frekvencija" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Kanali" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Promjena frekvencije" + +#~ msgid "Buffer" +#~ msgstr "Latencija međuspremnika" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Ekvalizator - Izlaz" + +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Veličina bloka" + +#~ msgid "Resampler" +#~ msgstr "Promjena frekvencije" + +#~ msgid "paused" +#~ msgstr "pauzirano" + +#~ msgid "playing" +#~ msgstr "reprodukcija" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Učitaj predloške" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Ograničenje pojačanja" diff --git a/po/news/id_ID.po b/po/news/id_ID.po new file mode 100644 index 0000000..4ba8d17 --- /dev/null +++ b/po/news/id_ID.po @@ -0,0 +1,2834 @@ +# This is Indonesia translate file for PE. We are need your help to completely translate this project. You can translate PuleEffect's help file to Indonesian to develop this project. If you any question about translating process, just send email that I have been desribed below. But if you want to support such as reporting any bugs, go ahead to github page @ https://github.com/wwmm/easyeffects/ +# Copyright (C) 2018 +# This file is distributed under the same license as the EasyEffects package. +# Dika Muhamad A. , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-02-19 08:54+0000\n" +"Last-Translator: Reza Almanda \n" +"Language-Team: Indonesian \n" +"Language: id_ID\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.11-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efek Audio untuk Aplikasi PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +#, fuzzy +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects merupakan aplikasi pengubah efek suara. Berisi modul-modul " +"seperti ekualiser, pembatas, kompresor, dan modul penggema. Dilengkapi juga " +"dengan Penganalisis Spektrum untuk memantau efek yang diterapkan." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +#, fuzzy +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"EasyEffects bekerja dengan aplikasi berbasis PulseAudio. Aplikasi yang " +"mendukung EasyEffects akan ditampilkan pada jendela utama aplikasi." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +#, fuzzy +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Selain mengolah suara yang keluar, EasyEffects dapat mengolah efek suara " +"seperti pada mikrofon dan pengakat masukan lainnya. EasyEffects juga bekerja " +"dengan baik ketika dipakai dalam percakapan suara." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +#, fuzzy +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Ketika EasyEffects dijalankan, preset terakhir yang dipakai akan termuat " +"otomatis. Anda juga dapat menyimpan pengaturan yang telah dibuat ke dalam " +"profil tersendiri." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Band 1" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Equalizer, Compressor and Other Audio Effects" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limiter;compressor;reverberation;equalizer;autovolume;" + +#~ msgid "\"Presets\"" +#~ msgstr "Preset" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Hidupkan" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplikasi" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplikasi" + +#, fuzzy +#~ msgid "_Shortcuts" +#~ msgstr "Waktu Singkat" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Setelan" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Preset" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Preset" + +#, fuzzy +#~ msgid "Global Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Aplikasi" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Tembok Kosong" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplikasi" + +#~ msgid "Target" +#~ msgstr "Target" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Angkatan Maksimal" + +#~ msgid "Momentary" +#~ msgstr "Efek Sejenak" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Waktu Singkat" + +#~ msgid "Integrated" +#~ msgstr "Terintegrasi" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Terapkan Gradien warna" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Terapkan Gradien warna" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Terapkan Gradien warna" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Terapkan Gradien warna" + +#~ msgid "Relative" +#~ msgstr "Relatif" + +#~ msgid "Range" +#~ msgstr "Rentang" + +#~ msgid "Loudness" +#~ msgstr "Kelantangan" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Gain Input" + +#~ msgid "Input" +#~ msgstr "Masukan" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Gain Input" + +#~ msgid "Output" +#~ msgstr "Output" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Gain Input" + +#~ msgid "Reset" +#~ msgstr "Atur Ulang" + +#, fuzzy +#~ msgid "Device" +#~ msgstr "Pembatas Masukan" + +#~ msgid "Name" +#~ msgstr "Nama" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Preset" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Hapus Preset Pemuatan Otomatis" + +#~ msgid "Listen" +#~ msgstr "Uji Pengaturan" + +#~ msgid "Blend Harmonics" +#~ msgstr "Pencampuran Harmonik" + +#~ msgid "3rd" +#~ msgstr "Ketiga" + +#~ msgid "2nd" +#~ msgstr "Kedua" + +#~ msgid "Amount" +#~ msgstr "Besaran" + +#~ msgid "Harmonics" +#~ msgstr "Harmonik" + +#~ msgid "Scope" +#~ msgstr "Frekuensi Target Bass" + +#~ msgid "Floor" +#~ msgstr "Monitor Lantai" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Monitor Lantai" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplikasi" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Aplikasi" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Aplikasi" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Aplikasi" + +#~ msgid "Compressor" +#~ msgstr "Kompresor" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Downward" +#~ msgstr "Kompresi Menekan" + +#~ msgid "Upward" +#~ msgstr "Kompresi Mengangkat" + +#, fuzzy +#~ msgid "Compression Mode" +#~ msgstr "Modus Kompresi" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Ambang Batas" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Besaran" + +#~ msgid "Attack" +#~ msgstr "Attack" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Waktu Real Time" + +#~ msgid "Threshold" +#~ msgstr "Ambang Batas" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Attack" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Ambang Batas" + +#~ msgid "Release" +#~ msgstr "Rilis" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Rilis" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Ambang Batas" + +#~ msgid "Ratio" +#~ msgstr "Rasio" + +#~ msgid "Knee" +#~ msgstr "Knee" + +#~ msgid "Makeup" +#~ msgstr "Penguatan" + +#~ msgid "Sidechain" +#~ msgstr "Sidechain" + +#~ msgid "Peak" +#~ msgstr "Peak" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#, fuzzy +#~ msgid "Low-Pass" +#~ msgstr "Band Rendah" + +#~ msgid "Uniform" +#~ msgstr "Uniform" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Sidechain" + +#~ msgid "Source" +#~ msgstr "Sumber" + +#, fuzzy +#~ msgid "Middle" +#~ msgstr "Volume Kanal Tengah" + +#~ msgid "Side" +#~ msgstr "Volume Kanal Sisi" + +#~ msgid "Left" +#~ msgstr "Kiri" + +#~ msgid "Right" +#~ msgstr "Kanan" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Sidechain" + +#~ msgid "Type" +#~ msgstr "Tipe" + +#~ msgid "Feed-forward" +#~ msgstr "Feed-forward" + +#, fuzzy +#~ msgid "Feed-back" +#~ msgstr "Volume Penyuapan" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Sidechain" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Pembatas Masukan" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Pra-Amplifikasi" + +#~ msgid "Reactivity" +#~ msgstr "Pengaktifan Ulang" + +#~ msgid "Lookahead" +#~ msgstr "Lookahead" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Sidechain" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "High Pass" + +#~ msgid "Frequency" +#~ msgstr "Frekuensi" + +#~ msgid "Off" +#~ msgstr "Mati" + +#, fuzzy +#~ msgid "12 dB/oct" +#~ msgstr "Lowpass 12dB/oktaf" + +#, fuzzy +#~ msgid "24 dB/oct" +#~ msgstr "Lowpass 24dB/oktaf" + +#, fuzzy +#~ msgid "36 dB/oct" +#~ msgstr "Lowpass 36dB/oktaf" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Filter High Pass" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Frekuensi Tinggi" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Filter High Pass" + +#~ msgid "Gain" +#~ msgstr "Besar Gain" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Besar Lembah" + +#~ msgid "Curve" +#~ msgstr "Bentuk Kurva" + +#~ msgid "L" +#~ msgstr "Kiri" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Total Kanal" + +#~ msgid "R" +#~ msgstr "Kanan" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Pisahkan Kanal" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Respons Impuls" + +#~ msgid "Stereo Width" +#~ msgstr "Lebar Stereo" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Log Scale" +#~ msgstr "Skala" + +#~ msgid "Autogain" +#~ msgstr "Autogain" + +#~ msgid "Rate" +#~ msgstr "Rataan Frekuensi" + +#~ msgid "Samples" +#~ msgstr "Jumlah Sampel" + +#~ msgid "Duration" +#~ msgstr "Durasi" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Respons Impuls" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Output" + +#~ msgid "Import Impulse" +#~ msgstr "Muat Impuls" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Muat Berkas Impuls" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Muat Berkas Impuls" + +#~ msgid "Default" +#~ msgstr "Aturan Bawaan" + +#~ msgid "Cutoff" +#~ msgstr "Frekuensi Potong" + +#~ msgid "Feed" +#~ msgstr "Volume Penyuapan" + +#~ msgid "Bypass" +#~ msgstr "Bypass" + +#~ msgid "Mute" +#~ msgstr "Bungkam" + +#~ msgid "Detection" +#~ msgstr "Deteksi" + +#~ msgid "Wide" +#~ msgstr "Luas" + +#~ msgid "Split" +#~ msgstr "Pisah" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Pisah" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frekuensi" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Peak" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frekuensi" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Besar Gain" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frekuensi" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Level" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frekuensi" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Peak Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frekuensi" + +#~ msgid "Laxity" +#~ msgstr "Laksitas" + +#~ msgid "Detected" +#~ msgstr "Terlacak" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Pengurangan" + +#~ msgid "Frame Size" +#~ msgstr "Ukuran Bingkai" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filter" + +#~ msgid "Bands" +#~ msgstr "Jumlah Band" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "Split Channels" +#~ msgstr "Pisahkan Kanal" + +#~ msgid "Flat Response" +#~ msgstr "Respons Datar" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Hitung Frekuensi" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "Preset" + +#~ msgid "Bell" +#~ msgstr "Bell" + +#, fuzzy +#~ msgid "High Pass" +#~ msgstr "High Pass" + +#~ msgid "High Shelf" +#~ msgstr "High Shelf" + +#, fuzzy +#~ msgid "Low Pass" +#~ msgstr "Pass Rendah" + +#~ msgid "Low Shelf" +#~ msgstr "Low Shelf" + +#~ msgid "Resonance" +#~ msgstr "Resonansi" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Pass Rendah" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Jumlah Band" + +#~ msgid "Slope" +#~ msgstr "Besar Lembah" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Besar Lembah" + +#~ msgid "Width" +#~ msgstr "Lebar" + +#~ msgid "Quality" +#~ msgstr "Kualitas" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Langit-langit" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Deteksi" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Hapus Berkas Preset Ini" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "Lowpass 12dB/oktaf" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "Lowpass 24dB/oktaf" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "Lowpass 36dB/oktaf" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "Highpass 12dB/oktaf" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "Highpass 24dB/oktaf" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "Highpass 36dB/oktaf" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "Bandpass 6dB/oktaf" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "Bandpass 12dB/oktaf" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "Bandpass 18dB/oktaf" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "Bandreject 6dB/oktaf" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "Bandpass 12dB/oktaf" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "Bandpass 18dB/oktaf" + +#~ msgid "Inertia" +#~ msgstr "Kelembaman" + +#~ msgid "Gate" +#~ msgstr "Gate" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Rilis" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Terintegrasi" + +#~ msgid "Gating" +#~ msgstr "Gating" + +#~ msgid "Oversampling" +#~ msgstr "Peningkat Sampling" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Luas" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Luas" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Lebar" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Lebar" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Lebar" + +#~ msgid "None" +#~ msgstr "Biarkan" + +#~ msgid "Half x2(3L)" +#~ msgstr "Setengah x2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "Setengah x3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "Setengah x3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "Setengah x4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "Setengah x4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "Setengah x6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "Setengah x6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "Setengah x8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "Setengah x8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "Penuh x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "Penuh x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "Penuh x3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "Penuh x3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "Penuh x4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "Penuh x4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "Penuh x6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "Penuh x6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "Penuh x8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "Penuh x8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "SC PreAmp" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Pra-Amplifikasi Sidechain" + +#~ msgid "Stereo Link" +#~ msgstr "Penautan Stereo" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Sidechain" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Gain Otomatis" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Gain Otomatis" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Gain Otomatis" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Gain Otomatis" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Kiri" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Kanan" + +#~ msgid "Sidechain Left" +#~ msgstr "Sidechain Kiri" + +#~ msgid "Sidechain Right" +#~ msgstr "Sidechain Kanan" + +#~ msgid "Standard" +#~ msgstr "Standar" + +#~ msgid "Flat" +#~ msgstr "Datar" + +#~ msgid "FFT Size" +#~ msgstr "Ukuran FFT" + +#~ msgid "Output Volume" +#~ msgstr "Volume Keluaran" + +#~ msgid "Ceiling" +#~ msgstr "Langit-langit" + +#~ msgid "Operating Mode" +#~ msgstr "Mode Operasi" + +#~ msgid "Classic" +#~ msgstr "Klasik" + +#~ msgid "Modern" +#~ msgstr "Modern" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Sidechain" + +#~ msgid "Pink BT" +#~ msgstr "BT Pink" + +#~ msgid "Pink MT" +#~ msgstr "MT Pink" + +#~ msgid "Brown BT" +#~ msgstr "BT Coklat" + +#~ msgid "Brown MT" +#~ msgstr "MT Coklat" + +#~ msgid "Bands List" +#~ msgstr "Daftar Band" + +#~ msgid "Band 1" +#~ msgstr "Band 1" + +#~ msgid "Band 2" +#~ msgstr "Band 2" + +#~ msgid "Band 3" +#~ msgstr "Band 3" + +#~ msgid "Band 4" +#~ msgstr "Band 4" + +#~ msgid "Band 5" +#~ msgstr "Band 5" + +#~ msgid "Band 6" +#~ msgstr "Band 6" + +#~ msgid "Band 7" +#~ msgstr "Band 7" + +#~ msgid "Band 8" +#~ msgstr "Band 8" + +#~ msgid "Band Start" +#~ msgstr "Mulai Band" + +#~ msgid "Band End" +#~ msgstr "Akhir Band" + +#~ msgid "Band Compression Mode" +#~ msgstr "Mode Kompresi Band" + +#~ msgid "Band Bypass" +#~ msgstr "Bypass Band" + +#~ msgid "Band Sidechain Options" +#~ msgstr "Opsi Sidechain Band" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Filter Low-Cut" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Frekuensi Filter Low-Cut" + +#~ msgid "High-Cut Filter" +#~ msgstr "Filter High-Cut" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Frekuensi Filter High-Cut" + +#~ msgid "PreAmp" +#~ msgstr "PreAmp" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Gain Input" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Bentuk Kurva" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Pisah" + +#~ msgid "Split 1/2" +#~ msgstr "Split 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frekuensi" + +#~ msgid "Split 2/3" +#~ msgstr "Split 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frekuensi" + +#~ msgid "Split 3/4" +#~ msgstr "Split 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frekuensi" + +#~ msgid "Sub Band" +#~ msgstr "Band Sub" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Pengurangan Kuatan" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Attack" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Rilis" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Ambang Batas" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Penguatan" + +#~ msgid "Max Reduction" +#~ msgstr "Pengurangan" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Pengurangan Kuatan" + +#~ msgid "Low Band" +#~ msgstr "Band Rendah" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Pengurangan Kuatan" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Attack" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Rilis" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Ambang Batas" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Penguatan" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Pengurangan Kuatan" + +#~ msgid "Mid Band" +#~ msgstr "Band Tengah" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Pengurangan Kuatan" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Attack" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Rilis" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Ambang Batas" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Penguatan" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Pengurangan Kuatan" + +#~ msgid "High Band" +#~ msgstr "Band Tinggi" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Bypass" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Pengurangan Kuatan" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Attack" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Rilis" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Ambang Batas" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Jumlah Band" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Penguatan" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Pengurangan Kuatan" + +#~ msgid "General" +#~ msgstr "Umum" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Gunakan Aturan Bawaan" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Pembatas Masukan" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Gunakan Aturan Bawaan" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Gain Input" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Penggemaan" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Atur Sampling" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Frekuensi" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Angkatan Maksimal" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Aturan Bawaan" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Gain Input" + +#~ msgid "Output Presets" +#~ msgstr "Preset Output" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Daftar Keluaran Preset Otomatis" + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Pembatas Masukan" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Preset Input" + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Preset Input" + +#, fuzzy +#~ msgid "Clients" +#~ msgstr "Sen" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Sen" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Uji Sinyal" + +#~ msgid "State" +#~ msgstr "Status" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Hidupkan" + +#~ msgid "Channels" +#~ msgstr "Total Kanal" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Total Kanal" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Tabel Sinus" + +#~ msgid "White Noise" +#~ msgstr "Derau Putih" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "High Shelf" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Kualitas" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Format Resampling" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Preset" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Kerenyahan" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Deteksi" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Kompresi" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Kliping Lunak" + +#~ msgid "Cents" +#~ msgstr "Sen" + +#~ msgid "Semitones" +#~ msgstr "Seminada" + +#~ msgid "Octaves" +#~ msgstr "Oktav" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Hapus Berkas Preset Ini" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Efek Input" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#~ msgid "Plugins List" +#~ msgstr "Daftar Plugin" + +#~ msgid "_General" +#~ msgstr "_Umum" + +#~ msgid "Service" +#~ msgstr "Layanan" + +#, fuzzy +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Shutdown pada Penutupan Jendela" + +#~ msgid "Audio" +#~ msgstr "Audio" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Proses Semua Output" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Proses Semua Input" + +#~ msgid "Use Cubic Volume" +#~ msgstr "Gunakan Volume Kubik" + +#~ msgid "Style" +#~ msgstr "Gaya" + +#~ msgid "Use Dark Theme" +#~ msgstr "Gunakan Tema Gelap" + +#~ msgid "Hide Menus on Outside Clicks" +#~ msgstr "Sembunyikan Menu di Klik Luar" + +#~ msgid "_Spectrum" +#~ msgstr "_Spektrum" + +#~ msgid "Shape" +#~ msgstr "Rupa" + +#~ msgid "Bars" +#~ msgstr "Batang" + +#~ msgid "Lines" +#~ msgstr "Garis" + +#~ msgid "Dots" +#~ msgstr "Titik" + +#~ msgid "Points" +#~ msgstr "Titik" + +#~ msgid "Height" +#~ msgstr "Tinggi" + +#~ msgid "Line Width" +#~ msgstr "Lebar Garis" + +#~ msgid "Fill" +#~ msgstr "Spektrum Batangan" + +#~ msgid "Show Bars Border" +#~ msgstr "Tampilkan batar bar" + +#~ msgid "Rounded Corners" +#~ msgstr "Sudut Bulat" + +#~ msgid "Color" +#~ msgstr "Warna" + +#~ msgid "Lines and Bars" +#~ msgstr "Garis dan Bar" + +#~ msgid "Axis Labels" +#~ msgstr "Label Sumbu" + +#~ msgid "Frequency Range" +#~ msgstr "Rentang Frekuensi" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maksimal" + +#~ msgid "Load" +#~ msgstr "Muat" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Simpan Setelan Saat Ini Ke Berkas Preset" + +#~ msgid "Remove this preset file" +#~ msgstr "Hapus Berkas Preset Ini" + +#~ msgid "New Output Preset Name" +#~ msgstr "Nama Preset Keluaran Baru" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Buat Preset" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Impor Preset" + +#~ msgid "Search Output Preset" +#~ msgstr "Cari Preset Keluaran" + +#~ msgid "Output Presets List" +#~ msgstr "Daftar Preset Keluaran" + +#~ msgid "New Input Preset Name" +#~ msgstr "Nama Preset Input Baru" + +#~ msgid "Search Input Preset" +#~ msgstr "Cari Preset Input" + +#~ msgid "Input Presets List" +#~ msgstr "Daftar Preset Input" + +#~ msgid "High Frequency Damping" +#~ msgstr "Pembasahan Frekuensi Tinggi" + +#~ msgid "Room Size" +#~ msgstr "Ukuran Ruangan" + +#~ msgid "Small" +#~ msgstr "Kecil" + +#~ msgid "Medium" +#~ msgstr "Sedang" + +#~ msgid "Large" +#~ msgstr "Besar" + +#~ msgid "Tunnel" +#~ msgstr "Terowongan" + +#~ msgid "Large/smooth" +#~ msgstr "Besar/Halus" + +#~ msgid "Experimental" +#~ msgstr "Eksperimental" + +#~ msgid "Diffusion" +#~ msgstr "Difusi" + +#~ msgid "Pre Delay" +#~ msgstr "Pra Tunda" + +#~ msgid "Decay Time" +#~ msgstr "Waktu Decay" + +#~ msgid "Wet Amount" +#~ msgstr "Besaran Wet" + +#~ msgid "Wet Level" +#~ msgstr "Tingkat Wet" + +#~ msgid "Dry Amount" +#~ msgstr "Besaran Dry" + +#~ msgid "Dry Level" +#~ msgstr "Tingkat Dry" + +#~ msgid "Bass Cut" +#~ msgstr "Potong Bass" + +#~ msgid "Treble Cut" +#~ msgstr "Potong Treble" + +#~ msgid "Ambience" +#~ msgstr "Suasana" + +#~ msgid "Empty Walls" +#~ msgstr "Tembok Kosong" + +#~ msgid "Room" +#~ msgstr "Ruangan" + +#~ msgid "Large Empty Hall" +#~ msgstr "Aula Besar Kosong" + +#~ msgid "Disco" +#~ msgstr "Disko" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Aula Besar Terisi Penuh" + +#~ msgid "Import Model" +#~ msgstr "Impor Model" + +#~ msgid "Models" +#~ msgstr "Model" + +#~ msgid "Standard Model" +#~ msgstr "Model Standar" + +#~ msgid "RNNoise Models List" +#~ msgstr "Daftar Model RNNoise" + +#~ msgid "Active Model" +#~ msgstr "Model Aktif" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Model RNNoise Standar" + +#~ msgid "Overview" +#~ msgstr "Ringkasan" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Buka Manual EasyEffects" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Layar penuh/Pulihkan dari layar penuh" + +#~ msgid "Close the Window" +#~ msgstr "Tutup jendela" + +#~ msgid "Quit EasyEffects" +#~ msgstr "Keluar EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Keseimbangan" + +#~ msgid "Input Balance" +#~ msgstr "Masukan Keseimbangan" + +#~ msgid "Softclip" +#~ msgstr "Kliping Lunak" + +#~ msgid "Softclip Level" +#~ msgstr "Tingkat Softclip" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matriks Stereo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "Kiri-Kanan > Kiri-Kanan (Stereo Standar)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "Kiri-Kanan > Tengah (Stereo ke Sisi Tengah)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "Tengah > Kiri-Kanan (Sisi Tengah ke Stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "Kiri-Kanan > Kiri-Kiri (Kanal Kiri Mono)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "Kiri-Kanan > Kanan-kanan (Kanal Kanan Mono)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "Kiri-Kanan > Kiri+Kanan (Kiri Mono + Kanan Mono)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "Kiri-Kanan > Kanan-Kiri (Pembalikan Setereo)" + +#~ msgid "Stereo Mode" +#~ msgstr "Mode Stereo" + +#~ msgid "Invert Phase" +#~ msgstr "Balikkan Phase" + +#~ msgid "Side Level" +#~ msgstr "Volume Kanal Sisi" + +#~ msgid "Side Balance" +#~ msgstr "Keseimbangan Sisi" + +#~ msgid "Middle Level" +#~ msgstr "Volume Kanal Tengah" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama Kanal Tengah" + +#~ msgid "Output Balance" +#~ msgstr "Keluaran Balance" + +#~ msgid "Delay L/R" +#~ msgstr "Penundaan Kiri/Kanan" + +#~ msgid "Delay Left Right" +#~ msgstr "Penundaan Kiri Kanan" + +#~ msgid "Stereo Base" +#~ msgstr "Basis Stereo" + +#~ msgid "Stereo Phase" +#~ msgstr "Phase Stereo" + +#, fuzzy +#~ msgid "Running" +#~ msgstr "berjalan" + +#, fuzzy +#~ msgid "Suspended" +#~ msgstr "Ditangguhkan" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "membuat" + +#, fuzzy +#~ msgid "Error" +#~ msgstr "error" + +#, fuzzy +#~ msgid "Unknown" +#~ msgstr "tidak dikenal" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Total Kanal" + +#~ msgid "Output Presets: " +#~ msgstr "Preset Keluaran: " + +#~ msgid "Input Presets: " +#~ msgstr "Preset Input: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efek Suara untuk Aplikasi PipeWire" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Tutup EasyEffects. Berguna Ketika Berjalan dalam Modus Layanan." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Muat Preset. Misalkan: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Atur Ulang EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Sembunyikan jendela." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Bypass global. 1 untuk mengaktifkan, 2 untuk menonaktifkan dan 3 untuk " +#~ "mendapatkan status" + +#~ msgid "Show available presets." +#~ msgstr "Tampilkan Preset Tersedia." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Muat Berkas Impuls" + +#~ msgid "Import Impulse File" +#~ msgstr "Impor File Impuls" + +#~ msgid "Open" +#~ msgstr "Buka" + +#~ msgid "Cancel" +#~ msgstr "Batal" + +#~ msgid "Impulse Response" +#~ msgstr "Respons Impuls" + +#~ msgid "Load Impulse" +#~ msgstr "Muat Impuls" + +#~ msgid "Remove Impulse" +#~ msgstr "Hapus Impuls" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Muat Berkas Impuls" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Tidak dapat Memuat Berkas Impuls" + +#~ msgid "Recorders" +#~ msgstr "Perekam" + +#~ msgid "Players" +#~ msgstr "Pemain" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "Tak Terbatas" + +#~ msgid "Import APO Preset File" +#~ msgstr "Impor File Preset APO" + +#~ msgid "APO Presets" +#~ msgstr "Preset APO" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Hapus Preset Pemuatan Otomatis" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Gain Input" + +#~ msgid "Add" +#~ msgstr "Tambah" + +#~ msgid "Import Preset" +#~ msgstr "Impor Preset" + +#~ msgid "Import Model File" +#~ msgstr "Impor file Model" + +#~ msgid "RNNoise Models" +#~ msgstr "Model RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Penguat Bass" + +#~ msgid "Bass Loudness" +#~ msgstr "Kenyaringan Bass" + +#~ msgid "Convolver" +#~ msgstr "Konvolver" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Pengkristal Suara" + +#~ msgid "Deesser" +#~ msgstr "Penghilang Desis" + +#~ msgid "Delay" +#~ msgstr "Penundaan" + +#~ msgid "Echo Canceller" +#~ msgstr "Penghilang Gema" + +#~ msgid "Equalizer" +#~ msgstr "Ekualiser" + +#~ msgid "Exciter" +#~ msgstr "Penguat Frekuensi Tinggi" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Limiter" +#~ msgstr "Pembatas" + +#~ msgid "Maximizer" +#~ msgstr "Pemaksimal Gain" + +#~ msgid "Multiband Compressor" +#~ msgstr "Kompresor Multiband" + +#~ msgid "Multiband Gate" +#~ msgstr "Multiband Gate" + +#~ msgid "Pitch" +#~ msgstr "Nada" + +#~ msgid "Reverberation" +#~ msgstr "Penggemaan" + +#~ msgid "Noise Reduction" +#~ msgstr "Pengurangan Noise" + +#~ msgid "Stereo Tools" +#~ msgstr "Pengolah Stereo" + +#~ msgid "Average" +#~ msgstr "Rata-Rata" + +#~ msgid "Failed" +#~ msgstr "Gagal" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Gunakan Aturan Bawaan" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Hapus Berkas Preset Ini" + +#~ msgid "Import Presets" +#~ msgstr "Muat Preset" + +#~ msgid "Start Service at Login" +#~ msgstr "Mulai Layanan Saat Startup" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Setel Ulang Volume Perangkat Kami saat Memulai" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Model Aktif" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "Daftar Blokir" + +#~ msgid "Blocklist" +#~ msgstr "Daftar Blokir" + +#~ msgid "Speakers" +#~ msgstr "Speaker" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Plugin" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Hidupkan" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Hidupkan" + +#~ msgid "Format" +#~ msgstr "Format Resampling" + +#~ msgid "Latency" +#~ msgstr "Besar Latensi" + +#~ msgid "idle" +#~ msgstr "siaga" + +#~ msgid "Faster" +#~ msgstr "Lebih Cepat" + +#~ msgid "Preserve Formant" +#~ msgstr "Jaga Bentuk" + +#~ msgid "Cmoy" +#~ msgstr "C. Moy" + +#~ msgid "Jmeier" +#~ msgstr "J. Meier" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Gain Input" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Total Kanal" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Monitor Lantai" + +#~ msgid "Output Effects" +#~ msgstr "Efek Luaran" + +#~ msgid "Settings" +#~ msgstr "Setelan" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Setelan" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Durasi" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Uji Sinyal" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Uji Sinyal" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spektrum" + +#~ msgid "Spectrum Color" +#~ msgstr "Warna Spektrum" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Modus Agresif" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Pengurangan Kuatan" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Tinggi" + +#~ msgid "Dry" +#~ msgstr "Dry" + +#~ msgid "S/C Level" +#~ msgstr "Level Sisi/Tengah" + +#~ msgid "Short Term" +#~ msgstr "Waktu Singkat" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Band Rendah" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Atur Volume dan hidupkan/matikan Efek" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Dilengkapi dengan Ekualiser dengan Preset Bawaan" + +#~ msgid "Input Limiter" +#~ msgstr "Pembatas Masukan" + +#~ msgid "Calibration" +#~ msgstr "Kalibrasi" + +#~ msgid "Limit" +#~ msgstr "Batas" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuasi" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Penerap Efek Suara untuk Aplikasi Berbasis Pulseaudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Terapkan Efek Suara via PulseAudio" + +#~ msgid "Help" +#~ msgstr "Bantuan" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrasikan Mikrofon" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Kotak" + +#~ msgid "Saw" +#~ msgstr "Gergaji" + +#~ msgid "Triangle" +#~ msgstr "Segitiga" + +#~ msgid "Silence" +#~ msgstr "Diam" + +#~ msgid "Pink Noise" +#~ msgstr "Derau Merah Muda" + +#~ msgid "Ticks" +#~ msgstr "Ketukan per Detik" + +#~ msgid "Gaussian Noise" +#~ msgstr "Derau Gaussia" + +#~ msgid "Red Noise" +#~ msgstr "Derau Merah" + +#~ msgid "Blue Noise" +#~ msgstr "Derau Biru" + +#~ msgid "Violet Noise" +#~ msgstr "Derau Ungu" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Jendela" + +#~ msgid "Measure Noise" +#~ msgstr "Ukur Derau" + +#~ msgid "Subtract Noise" +#~ msgstr "Kurangi Derau" + +#~ msgid "Extended Filter" +#~ msgstr "Filter Diperluas" + +#~ msgid "Low" +#~ msgstr "Rendah" + +#~ msgid "Moderate" +#~ msgstr "Sedang" + +#~ msgid "High" +#~ msgstr "Tinggi" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Tingkat Supresi" + +#~ msgid "Delay Agnostic" +#~ msgstr "Penundaan Agnosti" + +#~ msgid "Very High" +#~ msgstr "Sangat Tinggi" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor Derau" + +#~ msgid "Adaptive Digital" +#~ msgstr "Digital Adaptif" + +#~ msgid "Fixed Digital" +#~ msgstr "Digital Tetap" + +#~ msgid "Gain Controller" +#~ msgstr "Pengatur Angkatan" + +#~ msgid "Detection Likelihood" +#~ msgstr "Lacak Keberadaan Vokal" + +#~ msgid "Very Low" +#~ msgstr "Sangat Rendah" + +#~ msgid "Voice Detector" +#~ msgstr "Pelacak Vokal" + +#~ msgid "Use Custom Color" +#~ msgstr "Gunakan Warna Kustom" + +#~ msgid "Use Gradient" +#~ msgstr "Terapkan Gradien warna" + +#~ msgid "Gradient Color" +#~ msgstr "Warna Gradien" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Muat Berkas Respons Impuls" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Pilih Berkas Repons Impuls" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Modus Agresif" + +#~ msgid "Before" +#~ msgstr "Sebelum" + +#~ msgid "After" +#~ msgstr "Sesudah" + +#, fuzzy +#~ msgid "Loudness Range" +#~ msgstr "Rentang Kelantangan" + +#~ msgid "Apply" +#~ msgstr "Terapkan" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Aturan Bawaan" + +#, fuzzy +#~ msgid "Default Source" +#~ msgstr "Aturan Bawaan" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Durasi" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Frekuensi Terendah" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Preset" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Deteksi" + +#~ msgid "Muted" +#~ msgstr "Dibungkam" + +#~ msgid "Distant Headphones" +#~ msgstr "Headphone Berjarak" + +#~ msgid "Priority Type" +#~ msgstr "Atur Prioritas" + +#~ msgid "Niceness" +#~ msgstr "Proritas Sempurna" + +#~ msgid "Priority" +#~ msgstr "Atur Prioritas" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frekuensi" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frekuensi" + +#~ msgid "About" +#~ msgstr "Tentang EasyEffects" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Total Kanal" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Modus Penyampling" + +#~ msgid "Buffer" +#~ msgstr "Ukuran Penyangga" + +#~ msgid "Block Size" +#~ msgstr "Ukuran Blok" + +#~ msgid "Resampler" +#~ msgstr "Modus Penyampling" + +#~ msgid "paused" +#~ msgstr "terjeda" + +#~ msgid "playing" +#~ msgstr "memutar" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Muat Preset" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Pengurangan Kuatan" + +#~ msgid "Exponent" +#~ msgstr "Eksponen" diff --git a/po/news/it_IT.po b/po/news/it_IT.po new file mode 100644 index 0000000..a002ea8 --- /dev/null +++ b/po/news/it_IT.po @@ -0,0 +1,2938 @@ +# Italian translation file for EasyEffects +# Copyright (C) 2018 +# This file is distributed under the same license as the EasyEffects package. +# Matteo Iervasi , 2018. +# Gianluca Boiano , 2018. +# Albano Battistella , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-25 22:40+0000\n" +"Last-Translator: Giusy Digital \n" +"Language-Team: Italian \n" +"Language: it_IT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14-dev\n" +"Translator: Albano Battistella \n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Effetti Audio per Applicazioni Pipewire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects è un'applicazione specifica per la manipolazione dei flussi " +"audio. Tra i diversi moduli contenuti, include un equalizzatore, un limiter, " +"un compressore e uno strumento per il riverbero. In aggiunta è anche " +"disponibile un analizzatore dello spettro delle frequenze." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects è il successore di PulseEffects. EasyEffects supporta " +"esclusivamente il server audio PipeWire. Gli utenti su PulseAudio possono " +"continuare a usare PulseEffects in alternativa." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Eseguito in simultanea al server PipeWire, EasyEffects funzionerà con la " +"quasi totalità, se non tutte, le applicazioni disponibili sul sistema. Le " +"applicazioni supportate sono mostrate nella finestra principale e ognuna può " +"essere abilitata individualmente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Oltre alla manipolazione dei flussi in uscita, EasyEffects è in grado di " +"applicare effetti anche a dispositivi in ingresso, per esempio un microfono. " +"Una funzionalità utile sia durante le registrazioni che nelle conversazioni " +"di gruppo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"EasyEffects all'avvio presenta la configurazione utilizzata nella sessione " +"precedente. Tuttavia è possibile salvare i parametri attuali in uno " +"specifico profilo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" +"La scheda principale che mostra il flusso in uscita di due applicazioni" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "Il modulo di Enfasi Bassi con i propri parametri" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "Il modulo Convolver con i propri parametri" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "Funzionalità:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" +"Lo stato di bypass per gli effetti può essere salvato nei file di profilo. " +"Le ragioni di questa scelta sono riportate nel ticket 1039" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" +"Il codice per l'autocaricamento dei profili con i dispositivi usb è stato " +"migliorato." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" +"Un messaggio di dialogo viene mostrato quando fallisce il caricamento di un " +"profilo o di un file Impulso." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" +"Il Sidechain Gate di `Linux Studio Plugins` è stato aggiunto per rimpiazzare " +"quello di Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "Bug corretti:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" +"EasyEffects non dovrebbe più andare in crash quando la localizzazione non è " +"correttamente configurata." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" +"È stata implementata una soluzione nella nostra icona per aggirare lo scarso " +"supporto del formato SVG nei sistemi QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "Altre note:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" +"Quando gli effetti sono disabilitati per un'applicazione, adesso impostiamo " +"il suo target metadata a null. Questo permetterà al gestore delle sessioni " +"(wireplumber) di reindirizzare correttamente il flusso verso un nuovo " +"dispositivo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" +"Aggiunta una nuova configurazione. EasyEffects adesso può essere impostato " +"per ignorare i flussi dei monitor dei dispositivi. Questo aiuterà a " +"risolvere alcuni problemi che gli utenti avevano con l'utilizzo di OBS." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "Il codice che mostra il formato di campionamento è stato migliorato" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" +"La libreria rnnoise è adesso opzionale. Questo può aiutare a realizzare un " +"pacchetto Debian. Consultare il ticket 1000 per maggiori informazioni." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" +"I nostri log ora mostrano il numero di linea del codice sorgente dove il " +"messaggio viene stampato" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" +"Il checkbox di abilitazione degli effetti nella finestra non era aggiornato " +"quando programmi esterni come pavucontrol reindirizzavano i flussi lontano " +"dai nostri dispositivi virtuali. Questo problema dovrebbe essere risolto ora." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" +"Corretto un bug che poteva capitare quando la cronologia dell'Auto Guadagno " +"veniva modificata." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "Evitato il crash quando pw-mididump è in esecuzione" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "L'interfaccia del plugin pitch è stata migliorata" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" +"La nostra icona dell'applicazione è ora compatibile con i desktop che " +"utilizzano QT" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" +"Il nostro codice blocklist utilizzerà il tag `application.id` se lo stream " +"lo imposta" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" +"Per evitare problemi con lo scroll del mouse, le voci della lista delle " +"applicazioni nelle schede `Riproduttori/Registratori` non mostrano più uno " +"slider orizzontale per regolare il volume. Maggiori dettagli su questa " +"soluzione possono essere consultati nei ticket 1211 e 1427" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" +"Quando non sono presenti applicazioni nelle schede `Riproduttori/" +"Registratori`, sarà visualizzato un messaggio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "Molti aggiornamenti di traduzione" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" +"Corretto un bug per il quale EasyEffects andava in crash quando il numero di " +"punti mostrati nello spettro veniva cambiato mentre la nostra pipeline era " +"attiva e la sezione dello spettro era visibile" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" +"Il valore di latenza della pipeline visualizzato nella nostra finestra " +"poteva essere errato in alcune situazioni. Questo è stato risolto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" +"Presente una nuova impostazione per configurare un timeout di inattività per " +"la pipeline. Quando nessun client sta riproducendo o registrando, i filtri " +"vengono sconnessi dopo aver superato il timeout di inattività. Questo è " +"stato realizzato per non sprecare risorse CPU nel processare un segnale muto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"Il plugin di Auto Guadagno adesso permette di selezionare quale dei tre tipi " +"di Loudness usare per calcolare la media geometrica." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"Il plugin di Auto Guadagno adesso permette l'impostazione della massima " +"cronologia e non utilizza più l'istogramma `libebur128`. Questo dovrebbe " +"evitare i casi in cui la Loudness `Integrata` rimaneva blocca allo stesso " +"valore." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"L'icona di EasyEffects è stata aggiornata in modo da essere visibile anche " +"nei desktop QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"L'opzione della riga di comando che restituisce lo stato di bypass globale " +"funziona di nuovo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Migliorata la gestione della latenza dinamica di PipeWire da parte del " +"modulo di Crossfeed. Non si dovrebbero più verificare anomali cambi di " +"volume." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Risolto un bug che non permetteva la corretta gestione dei microfoni mono da " +"parte di EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Supporto per la prossima versione di PipeWire `0.3.44`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Migliorata la gestione della latenza dinamica di PipeWire da parte del " +"modulo di Auto Guadagno. Non si dovrebbero più verificare anomali cambi di " +"volume." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Aggiunta un'opzione per reimpostare il volume del nostro dispositivo " +"virtuale all'avvio di EasyEffects. Ciò dovrebbe essere d'aiuto nei casi in " +"cui il nostro dispositivo venga mutato dal server per ragioni ignote." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Migliore supporto per la sospensione del computer." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Traduzioni aggiornate" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Risolto un bug per cui il tentativo di creare un profilo di caricamento " +"automatico senza preimpostazioni causava l'arresto anomalo dell'applicazione." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"Risolto un bug in cui impostando a `zero` la `qualità` di una banda " +"dell'Equalizzatore, l'intera applicazione andava in crash." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita è usata per creare alcune parti della nostra interfaccia e la " +"modifica dei temi chiaro/scuro." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" +"Il menu delle impostazioni è stato ridisegnato con gli oggetti di LibAdwaita." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"L'importazione dei profili Equalizer APO è stata migliorata per applicare " +"non solo i filtri a Campana, ma anche gli altri supportati (al momento " +"soltanto il filtro Passabanda non è disponibile nel plugin LSP)." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"L'opzione `Reset Preferenze` nel menu adesso funziona anche in Flatpak." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"Abbiamo una nuova opzione che permette di disabilitare il `autohide` dei " +"nostri menu. Questo permette di aggirare alcuni bug dei menu Popover " +"attualmente presenti in gtk4." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"Migliorata l'analisi dell'importazione APO con profili che hanno la virgola " +"come separatore delle migliaia." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"La libreria fmt è una nuova dipendenza, almeno fin quando i compilatori c++ " +"non la implementeranno in predefinito. Ciò è previsto nei prossimi anni." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM e GLIBMM non sono più una dipendenza. Adesso usiamo gtk4 direttamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"Adesso è possibile combinare più Impulsi nell'interfaccia del Convolver. Un " +"nuovo file di Impulso viene generato e il suo nome è aggiunto nella lista." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"Migliorato il disegno della `asse x` nei nostri grafici. Adesso il numero " +"delle etichette si adatta in base alla larghezza della finestra." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"La documentazione è stata aggiornata con le nuove funzionalità di " +"EasyEffects. I vecchi riferimenti a PulseEffects sono stati rimossi. Il " +"bottone per consultare la documentazione è stato aggiunto nel menu." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"Inserendo un valore fuori scala nello spinbutton, adesso il parametro viene " +"aggiornato al valore minimo/massimo, invece che resettarlo a quello " +"precedente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" +"La finestra principale adesso ricorda lo stato di massimizzazione e lo " +"ripristina alla nuova apertura." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "La libreria `tbb` è una nuova dipendenza" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" +"Il Limiter e il Compressore Multibanda adesso possono usare una sidechain " +"esterna." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" +"Il modulo di Auto Guadagno adesso permette all'utente di selezionare quale " +"tipologia di Loudness usare come riferimento per la correzione del volume." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" +"La funzionalità di importazione dei profili APO nell'Equalizzatore adesso " +"analizza anche il parametro di \"Pre Amplificazione\"." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "Il Volume Cubico può essere abilitato dalle impostazioni generali." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" +"Il plugin dello Spettro doveva essere nella fase di passthrough quando non " +"era visibile, ma ciò accadeva soltanto quando la finestra era chiusa." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "Migliorato il supporto alle Tecnologie Assistive." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" +"Le sonde usate in alcuni filtri come il Compressore e il Limiter non erano " +"ricollegati quando l'ordine degli effetti veniva modificato. Questo problema " +"dovrebbe essere risolto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" +"I flussi monitor di PipeWire adesso dovrebbero essere esclusi e rimossi " +"dalla lista delle applicazioni." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" +"Crash come quelli riportati nel ticket 1172 dovrebbero essere stati corretti." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "Risolto un caso in cui lo Spettro andava in crash." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"Pavucontrol non è più aggiunto alla lista delle applicazioni in ingresso su " +"sistemi con localizzazione diversa da quella inglese." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" +"Migliorata la compatibilità con WirePlumber. Questo è necessario per i " +"sistemi che hanno deciso di utilizzarlo al posto del gestore delle sessioni " +"integrato in PipeWire. Maggiori informazioni nel ticket 1144." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" +"All'aggiunta di un profilo di autocaricamento per uno specifico dispositivo " +"già presente in lista, ora il profilo viene aggiornato. In questo modo non " +"c'è bisogno di rimuovere lo stesso dispositivo e riaggiungerlo per vederlo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" +"La funzionalità dell'autocaricamento dei profili è stata nuovamente " +"riprogettata. Adesso dovrebbe funzionare su più tipologie di dispositivi. " +"Per maggiori informazioni, consultare il ticket 1051." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" +"Se il Limiter e il Maximizer sono posizionati alla fine della lista, i nuovi " +"moduli sono aggiunti nella penultima posizione in modo da evitare eventuali " +"danneggiamenti agli altoparlanti in caso di volume troppo alto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" +"Alla rimozione di un flusso dalle App Escluse, il precedente stato dovrebbe " +"essere ripristinato." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" +"Talvolta alla rimozione dei modelli nel modulo di riduzione del rumore, il " +"modello utilizzato non veniva aggiornato. Questo problema è stato risolto." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" +"Alla modifica dei profili in un editor esterno, adesso non saranno più " +"mostrate voci multiple nella lista dei profili." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" +"Adesso i flussi nelle App Escluse vengono correttamente disabilitati allo " +"switch dei profili." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" +"Adesso lo stato del Bypass globale dovrebbe essere correttamente aggiornato " +"quando i moduli cambiano." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" +"Le icone mancanti sul sistema non dovrebbero essere più mostrate nella " +"sezione delle informazioni delle applicazioni (se un'icona non è visibile " +"nonostante siate sicuri che sia correttamente installata, vi preghiamo di " +"segnalarcelo aprendo un nuovo ticket)." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" +"Alcune icone non visualizzate in Plasma con il tema Breeze adesso dovrebbero " +"essere visibili." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "Traduzione Cinese aggiornata." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "Traduzione Italiana aggiornata." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" +"Aggiunto il supporto al parametro `Quantità Incremento` del Compressore" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" +"Il Compressore Multibanda adesso implemento lo stereo multiband compressor " +"sviluppato da Linux Studio Plugins invece di quello di Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" +"Il Limiter adesso implementa lo stereo limiter sviluppato da Linux Studio " +"Plugins invece di quello di Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" +"I filtri LV2 adesso sono generati nel diagramma PipeWire soltanto quando " +"sono caricati per la prima volta. Tuttavia, una volta caricati, rimangono " +"connessi fin quando EasyEffects non viene terminato." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" +"Il modulo di Riduzione Eco adesso imposta correttamente il campionamento." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" +"Il parametro soglia del Deesser adesso è salvato correttamente nel profilo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" +"Migliorata la suddivisione delle bande nel Crystalizer con nuovi valori di " +"default delle Intensità." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" +"In base al guadagno di input/output, le corrispondenti barre non erano " +"allineate correttamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" +"All'aggiunta di nuove bande nell'Equalizzatore, la modalità è impostata su " +"`Campana` invece che `Off`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" +"L'importazione degli Equalizer APO adesso funziona correttamente su " +"localizzazioni differenti da C." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" +"Migliorata la gestione delle connessioni tra le porte dei nodi in PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" +"L'amplificazione del Crystalizer era troppo alta. Adesso dovrebbe essere " +"impostata a livelli ragionevoli." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" +"Migliorato il resampler usato nei moduli che lo richiedono (come RNNoise)" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" +"L'impostazione di profili di autocaricamento multipli adesso dovrebbe " +"funzionare" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" +"La translazione dell'interfaccia per alcuni moduli è stata correttamente " +"impostata" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" +"Il menu dei file di Impulso del Convolver è stato migliorato aggirando un " +"problema per cui i file non erano caricati quando soltanto uno era " +"disponibile nel menu, consultare il ticket 1011" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" +"Corretto un bug che non inizializzava correttamente il modulo di Intonazione" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" +"L'icona di allarma saturazione adesso non sposta più gli oggetti adiacenti" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "Aggiustati i locale in alcuni oggetti" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "Corretti gli allineamenti in alcuni oggetti" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" +"Il plugin di Loudness è stato nuovamente reimplementato per le ragioni " +"descritte nel ticket 820. Questo significa che è di nuovo una dipendenza " +"opzionale." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" +"Risolto un errore di segmentazione che accadeva quando delle dipendenze " +"opzionali non erano installate" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "Migliorata l'interfaccia dell'equalizzatore." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" +"Adesso usiamo un Compressore Sidechain LSP che permette di selezionare una " +"sorgente esterna come sidechain di ingresso." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "Adesso supportiamo la modalità `Incremento` del Compressore LSP." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" +"Quando `separa canali` è abilitato nell'Equalizzatore, i profili APO " +"importati saranno applicati soltanto al canale visualizzato. Questo permette " +"di importare profili differenti per i diversi canali invece che gli stessi " +"per entrambi." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" +"Risolti alcuni errori di segmentazione quando si creavano o rimuovevano i " +"profili di autocaricamento" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" +"Questa è una delle più grandi release che io abbia mai fatto. Il numero dei " +"cambiamenti è cosi elevato che è difficile descriverle tutte qui." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" +"Le seguenti sono soltanto le più importanti. Gli utenti interessati a questa " +"fase possono consultare i ticket 904 e 874." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "L'applicazione è stata rinominata da PulseEffects a `EasyEffects`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "gtkmm3 è stato rimpiazzato da gtkmm4" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "Gstreamer è stato rimpiazzato dai filtri nativi PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" +"Molte funzionalità sono state riscritte da zero. L'autocaricamento dei " +"preset ne è un esempio. Un'altra modifica importante è presente nel menu di " +"selezione dei moduli. Adesso sono mostrati nella finestra soltanto i plugin " +"aggiunti alla lista." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" +"Boost non è più una dipendenza. Il prezzo da pagare per questa scelta è il " +"cambiamento della struttura dei profili. Con un po' di pazienza è possibile " +"modificare i profili di PulseEffects in un editor di testo per renderli " +"compatibili con EasyEffects. Magari qualcuno realizzerà uno script per " +"questa operazione." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" +"Nuove librerie sono state aggiunte e altre che erano opzionali adesso sono " +"necessarie" + +#~ msgid "This release adds the following features:" +#~ msgstr "Questa release aggiunge le seguenti funzionalità:" + +#~ msgid "manager" +#~ msgstr "manager" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr "" +#~ "sink. Questo potrà risolvere alcune anomalie che gli utenti avevano con " +#~ "OBS." + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "su Debian. Consultare il ticket #1000 per maggiori informazioni." + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Questa release risolve i seguenti bug:" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "rimuovevano gli stream dai nostri dispositivi virtuali. Questo problema " +#~ "dovrebbe essere risolto." + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "la scheda non mostra più una scala del volume. Maggiori dettagli sul " +#~ "problema e la soluzione per esso possono essere trovati su #1211" + +#~ msgid "and #1427" +#~ msgstr "e #1427" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "" +#~ "la nostra pipeline era attiva e il widget dello spettro era visibile" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Aggiunta una nuova opzione che permette di selezionare un periodo di " +#~ "inattività per la pipeline. Quando nessun client" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "o registrando dai nostri dispositivi i filtri verranno scollegati al " +#~ "raggiungimento del timeout. Questo è fatto per essere sicuro" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "non sprechiamo il silenzio di elaborazione della potenza della CPU." + +#~ msgid "mean." +#~ msgstr "la media geometrica." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Ciò eviterà i casi in cui la Loudness `Integrata` rimanga fissa " +#~ "costantemente sullo stesso valore." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Questa release corregge i seguenti bug:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Questa release aggiunge le seguenti funzionalità:" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "al posto del session manager integrato in PipeWire. Maggiori informazioni " +#~ "in [1144](" + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Le icone non presenti sul sistema adesso non dovrebbero essere " +#~ "visualizzate nell'interfaccia delle applicazioni" + +#~ msgid "a look at and" +#~ msgstr "possono dare un'occhiata e" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Equalizzatore, Compressore e Altri Effetti Audio" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limiter;compressore;riverbero;equalizzatore;autovolume;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Profili\"" + +#~ msgid "Enable/disable this application" +#~ msgstr "Abilita/disabilita questa applicazione" + +#~ msgid "Enable" +#~ msgstr "Abilita" + +#~ msgid "Excluded App List: Add/remove this application" +#~ msgstr "Lista App Escluse: Aggiungi/rimuovi questa applicazione" + +#~ msgid "Exclude" +#~ msgstr "Escludi" + +#~ msgid "Mute Application" +#~ msgstr "Silenzia Applicazione" + +#~ msgid "Change the volume of this application" +#~ msgstr "Modifica il volume di questa applicazione" + +#~ msgid "Application Volume" +#~ msgstr "Volume Applicazione" + +#~ msgid "_Preferences" +#~ msgstr "_Preferenze" + +#~ msgid "_Manual" +#~ msgstr "_Manuale" + +#~ msgid "_Shortcuts" +#~ msgstr "_Scorciatoie" + +#~ msgid "_Reset Settings" +#~ msgstr "_Reset Preferenze" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Info su EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Profili" + +#~ msgid "Presets Menu" +#~ msgstr "Menu Profili" + +#~ msgid "Enable/disable the global bypass" +#~ msgstr "Abilita/disabilita il bypass globale" + +#~ msgid "Global Bypass" +#~ msgstr "Bypass Globale" + +#~ msgid "Primary Menu" +#~ msgstr "Menu Principale" + +#~ msgid "EasyEffects Window" +#~ msgstr "Finestra di EasyEffects" + +#~ msgid "Applications List" +#~ msgstr "Lista Applicazioni" + +#~ msgid "Empty List" +#~ msgstr "Elenco Vuoto" + +#~ msgid "No Audio Application Available" +#~ msgstr "Nessuna Applicazione Audio Disponibile" + +#~ msgid "Target" +#~ msgstr "Livello" + +#~ msgid "Maximum History" +#~ msgstr "Cronologia Massima" + +#~ msgid "Reference" +#~ msgstr "Riferimento" + +#~ msgid "Momentary" +#~ msgstr "Momentaneo" + +#~ msgid "Short-Term" +#~ msgstr "Breve-Termine" + +#~ msgid "Integrated" +#~ msgstr "Integrato" + +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Media Geometrica (MBI)" + +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Media Geometrica (MB)" + +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Media Geometrica (MI)" + +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Media Geometrica (BI)" + +#~ msgid "Reset History" +#~ msgstr "Reset Cronologia" + +#~ msgid "Relative" +#~ msgstr "Relativo" + +#~ msgid "Range" +#~ msgstr "Gamma" + +#~ msgid "Loudness" +#~ msgstr "Loudness" + +#~ msgid "Output Gain" +#~ msgstr "Guadagno Uscita" + +#~ msgid "Input" +#~ msgstr "Ingresso" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Guadagno in Ingresso del Plugin" + +#~ msgid "Output" +#~ msgstr "Uscita" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Guadagno in Uscita del Plugin" + +#~ msgid "Reset" +#~ msgstr "Reset" + +#~ msgid "Using" +#~ msgstr "Utilizzo" + +#~ msgid "Device" +#~ msgstr "Dispositivo Audio" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Profile" +#~ msgstr "Profilo Dispositivo" + +#~ msgid "Preset" +#~ msgstr "Profilo EasyEffects" + +#~ msgid "Remove this autoload preset" +#~ msgstr "Rimuovi questo profilo di auto-caricamento" + +#~ msgid "Listen" +#~ msgstr "Ascolta" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mix Armoniche" + +#~ msgid "3rd" +#~ msgstr "3a" + +#~ msgid "2nd" +#~ msgstr "2a" + +#~ msgid "Amount" +#~ msgstr "Quantità" + +#~ msgid "Harmonics" +#~ msgstr "Armoniche" + +#~ msgid "Scope" +#~ msgstr "Soglia" + +#~ msgid "Floor" +#~ msgstr "Limite Inferiore" + +#~ msgid "Floor Value" +#~ msgstr "Valore Limite Inferiore" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Application Name" +#~ msgstr "Nome Applicazione" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "Aggiungi alle Applicazioni Escluse" + +#~ msgid "Excluded Applications List" +#~ msgstr "Lista delle Applicazioni Escluse" + +#~ msgid "Show Excluded Applications" +#~ msgstr "Mostra Applicazioni Escluse" + +#~ msgid "Compressor" +#~ msgstr "Compressore" + +#~ msgid "Mode" +#~ msgstr "Modalità" + +#~ msgid "Downward" +#~ msgstr "Riduttiva" + +#~ msgid "Upward" +#~ msgstr "Espansiva" + +#~ msgid "Boosting" +#~ msgstr "Incrementale" + +#~ msgid "Compression Mode" +#~ msgstr "Modalità Compressione" + +#~ msgid "Boost Threshold" +#~ msgstr "Soglia Incremento" + +#~ msgid "Boost Amount" +#~ msgstr "Quantità Incremento" + +#~ msgid "Attack" +#~ msgstr "Attacco" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Threshold" +#~ msgstr "Soglia" + +#~ msgid "Attack Time" +#~ msgstr "Tempo di Attacco" + +#~ msgid "Attack Threshold" +#~ msgstr "Soglia di Attacco" + +#~ msgid "Release" +#~ msgstr "Rilascio" + +#~ msgid "Release Time" +#~ msgstr "Tempo di Rilascio" + +#~ msgid "Release Threshold" +#~ msgstr "Soglia di Rilascio" + +#~ msgid "Ratio" +#~ msgstr "Rapporto" + +#~ msgid "Knee" +#~ msgstr "Curvatura" + +#~ msgid "Makeup" +#~ msgstr "Guadagno" + +#~ msgid "Sidechain" +#~ msgstr "Sidechain" + +#~ msgid "Peak" +#~ msgstr "Picco" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Passa-Basso" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#~ msgid "Sidechain Mode" +#~ msgstr "Modalità Sidechain" + +#~ msgid "Source" +#~ msgstr "Sorgente" + +#~ msgid "Middle" +#~ msgstr "Medio" + +#~ msgid "Side" +#~ msgstr "Lato" + +#~ msgid "Left" +#~ msgstr "Sinistro" + +#~ msgid "Right" +#~ msgstr "Destro" + +#~ msgid "Sidechain Source" +#~ msgstr "Sorgente Sidechain" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Feed-forward" +#~ msgstr "Feed-forward" + +#~ msgid "Feed-back" +#~ msgstr "Feed-back" + +#~ msgid "External" +#~ msgstr "Esterna" + +#~ msgid "Sidechain Type" +#~ msgstr "Tipo Sidechain" + +#~ msgid "Input Device" +#~ msgstr "Dispositivo Ingresso" + +#~ msgid "PreAmplification" +#~ msgstr "PreAmplificazione" + +#~ msgid "Reactivity" +#~ msgstr "Reattività" + +#~ msgid "Lookahead" +#~ msgstr "Lookahead" + +#~ msgid "Sidechain Filters" +#~ msgstr "Filtri Sidechain" + +#~ msgid "High-Pass" +#~ msgstr "Passa-Alto" + +#~ msgid "Frequency" +#~ msgstr "Frequenza" + +#~ msgid "Off" +#~ msgstr "Off" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/ott" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/ott" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/ott" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Modalità Filtro Passa-Alto" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Frequenza Filtro Passa-Alto" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Modalità Filtro Passa-Basso" + +#~ msgid "Gain" +#~ msgstr "Guadagno" + +#~ msgid "Envelope" +#~ msgstr "Envelope" + +#~ msgid "Curve" +#~ msgstr "Curva" + +#~ msgid "L" +#~ msgstr "S" + +#~ msgid "Left Channel" +#~ msgstr "Canale Sinistro" + +#~ msgid "R" +#~ msgstr "D" + +#~ msgid "Right Channel" +#~ msgstr "Canale Destro" + +#~ msgid "Impulses" +#~ msgstr "Impulsi" + +#~ msgid "Combine" +#~ msgstr "Combina" + +#~ msgid "Stereo Width" +#~ msgstr "Ampiezza Stereo" + +#~ msgid "Spectrum" +#~ msgstr "Spettro" + +#~ msgid "Log Scale" +#~ msgstr "Scala Logaritmica" + +#~ msgid "Autogain" +#~ msgstr "Auto Guadagno" + +#~ msgid "Rate" +#~ msgstr "Frequenza" + +#~ msgid "Samples" +#~ msgstr "Campioni" + +#~ msgid "Duration" +#~ msgstr "Durata" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "Combina Risposte Impulso" + +#~ msgid "First Kernel" +#~ msgstr "Primo Kernel" + +#~ msgid "Second Kernel" +#~ msgstr "Secondo Kernel" + +#~ msgid "Output File Name" +#~ msgstr "Nome File Combinato" + +#~ msgid "Combined Kernel Name" +#~ msgstr "Nome File Combinato" + +#~ msgid "Import Impulse" +#~ msgstr "Importa Impulso" + +#~ msgid "Search" +#~ msgstr "Cerca" + +#~ msgid "Search Impulse File" +#~ msgstr "Cerca File di Impulso" + +#~ msgid "Impulse Files List" +#~ msgstr "Lista File di Impulso" + +#~ msgid "Default" +#~ msgstr "Predefinito" + +#~ msgid "Cutoff" +#~ msgstr "Taglio" + +#~ msgid "Feed" +#~ msgstr "Feed" + +#~ msgid "Bypass" +#~ msgstr "Bypass" + +#~ msgid "Mute" +#~ msgstr "Silenzia" + +#~ msgid "Detection" +#~ msgstr "Rilevamento" + +#~ msgid "Wide" +#~ msgstr "Banda Larga" + +#~ msgid "Split" +#~ msgstr "Split" + +#~ msgid "F1 Split" +#~ msgstr "F1 Split" + +#~ msgid "Frequency 1 Split" +#~ msgstr "Frequenza 1 Split" + +#~ msgid "F2 Peak" +#~ msgstr "F2 Picco" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frequenza 2 Picco" + +#~ msgid "F1 Gain" +#~ msgstr "F1 Guadagno" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frequenza 1 Guadagno" + +#~ msgid "F2 Level" +#~ msgstr "F2 Livello" + +#~ msgid "Frequency 2 Level" +#~ msgstr "Frequenza 2 Livello" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2 Picco Q" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frequenza 2 Picco Q" + +#~ msgid "Laxity" +#~ msgstr "Lassità" + +#~ msgid "Detected" +#~ msgstr "Rilevato" + +#~ msgid "Reduction" +#~ msgstr "Riduzione" + +#~ msgid "Frame Size" +#~ msgstr "Dimensione Frame" + +#~ msgid "Filter Length" +#~ msgstr "Lunghezza Filtro" + +#~ msgid "Excluded Apps" +#~ msgstr "App Escluse" + +#~ msgid "Bands" +#~ msgstr "Bande" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Separa Canali" + +#~ msgid "Flat Response" +#~ msgstr "Risposta Piatta" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calcola Frequenze" + +#~ msgid "Load APO Preset" +#~ msgstr "Carica Profilo APO" + +#~ msgid "Bell" +#~ msgstr "Campana" + +#~ msgid "High Pass" +#~ msgstr "Passa Alto" + +#~ msgid "High Shelf" +#~ msgstr "Sopra Soglia" + +#~ msgid "Low Pass" +#~ msgstr "Passa Basso" + +#~ msgid "Low Shelf" +#~ msgstr "Sotto Soglia" + +#~ msgid "Notch" +#~ msgstr "Notch" + +#~ msgid "Resonance" +#~ msgstr "Risonanza" + +#~ msgid "All Pass" +#~ msgstr "Passa Tutto" + +#~ msgid "Band Type" +#~ msgstr "Tipo Banda" + +#~ msgid "Band Mode" +#~ msgstr "Modalità Banda" + +#~ msgid "Slope" +#~ msgstr "Pendenza" + +#~ msgid "Band Slope" +#~ msgstr "Pendenza della Banda" + +#~ msgid "Width" +#~ msgstr "Ampiezza" + +#~ msgid "Quality" +#~ msgstr "Qualità" + +#~ msgid "Solo" +#~ msgstr "Isola" + +#~ msgid "Ceil" +#~ msgstr "Limite Superiore" + +#~ msgid "Ceil Value" +#~ msgstr "Valore Limite Superiore" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Accesso" + +#~ msgid "Description" +#~ msgstr "Descrizione" + +#~ msgid "Remove this model file" +#~ msgstr "Rimuovi questo profilo" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Passa Basso" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Passa Basso" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Passa Basso" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Passa Alto" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Passa Alto" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Passa Alto" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Passa Banda" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Passa Banda" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Passa Banda" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Elimina Banda" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Elimina Banda" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct Elimina Banda" + +#~ msgid "Inertia" +#~ msgstr "Inerzia" + +#~ msgid "Gate" +#~ msgstr "Gate" + +#~ msgid "Zone" +#~ msgstr "Zona" + +#~ msgid "Hysteresis" +#~ msgstr "Isteresi" + +#~ msgid "Attack Zone Start" +#~ msgstr "Inizio Zona Attacco" + +#~ msgid "Release Zone Start" +#~ msgstr "Inizio Zona Rilascio" + +#~ msgid "Internal" +#~ msgstr "Interna" + +#~ msgid "Gating" +#~ msgstr "Gate" + +#~ msgid "Oversampling" +#~ msgstr "Sovracampionamento" + +#~ msgid "Dither" +#~ msgstr "Dither" + +#~ msgid "Herm Thin" +#~ msgstr "Herm Thin" + +#~ msgid "Herm Wide" +#~ msgstr "Herm Wide" + +#~ msgid "Herm Tail" +#~ msgstr "Herm Tail" + +#~ msgid "Herm Duck" +#~ msgstr "Herm Duck" + +#~ msgid "Exp Thin" +#~ msgstr "Exp Thin" + +#~ msgid "Exp Wide" +#~ msgstr "Exp Wide" + +#~ msgid "Exp Tail" +#~ msgstr "Exp Tail" + +#~ msgid "Exp Duck" +#~ msgstr "Exp Duck" + +#~ msgid "Line Thin" +#~ msgstr "Line Thin" + +#~ msgid "Line Wide" +#~ msgstr "Line Wide" + +#~ msgid "Line Tail" +#~ msgstr "Line Tail" + +#~ msgid "Line Duck" +#~ msgstr "Line Duck" + +#~ msgid "None" +#~ msgstr "Off" + +#~ msgid "Half x2(2L)" +#~ msgstr "Parziale x2(2L)" + +#~ msgid "Half x2(3L)" +#~ msgstr "Parziale x2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "Parziale x3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "Parziale x3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "Parziale x4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "Parziale x4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "Parziale x6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "Parziale x6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "Parziale x8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "Parziale x8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "Intero x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "Intero x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "Intero x3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "Intero x3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "Intero x4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "Intero x4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "Intero x6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "Intero x6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "Intero x8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "Intero x8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "SC PreAmp" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "PreAmplificazione Sidechain" + +#~ msgid "Boost" +#~ msgstr "Incremento" + +#~ msgid "Stereo Link" +#~ msgstr "Relazione Canali" + +#~ msgid "External Sidechain" +#~ msgstr "Sidechain Esterna" + +#~ msgid "External Sidechain Source" +#~ msgstr "Sorgente Sidechain Esterna" + +#~ msgid "Auto Leveling" +#~ msgstr "Auto Regolazione" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "Auto Regolazione Attacco" + +#~ msgid "Auto Leveling Release" +#~ msgstr "Auto Regolazione Rilascio" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "Auto Regolazione Curvatura" + +#~ msgid "Gain Left" +#~ msgstr "Guadagno Sinistro" + +#~ msgid "Gain Right" +#~ msgstr "Guadagno Destro" + +#~ msgid "Sidechain Left" +#~ msgstr "Sidechain Sinistro" + +#~ msgid "Sidechain Right" +#~ msgstr "Sidechain Destro" + +#~ msgid "Standard" +#~ msgstr "Standard" + +#~ msgid "Flat" +#~ msgstr "Flat" + +#~ msgid "FFT Size" +#~ msgstr "Dimensione FFT" + +#~ msgid "Fast Fourier Transform Size" +#~ msgstr "Dimensione della Trasformata di Fourier Veloce" + +#~ msgid "Output Volume" +#~ msgstr "Volume Uscita" + +#~ msgid "Ceiling" +#~ msgstr "Limite Superiore" + +#~ msgid "Operating Mode" +#~ msgstr "Modalità Operativa" + +#~ msgid "Classic" +#~ msgstr "Classica" + +#~ msgid "Modern" +#~ msgstr "Moderna" + +#~ msgid "Sidechain Boost" +#~ msgstr "Incremento Sidechain" + +#~ msgid "Pink BT" +#~ msgstr "Rumore Rosa BT" + +#~ msgid "Pink MT" +#~ msgstr "Rumore Rosa MT" + +#~ msgid "Brown BT" +#~ msgstr "Rumore Marrone BT" + +#~ msgid "Brown MT" +#~ msgstr "Rumore Marrone MT" + +#~ msgid "Bands List" +#~ msgstr "Lista Bande" + +#~ msgid "Band 1" +#~ msgstr "Banda 1" + +#~ msgid "Band 2" +#~ msgstr "Banda 2" + +#~ msgid "Band 3" +#~ msgstr "Banda 3" + +#~ msgid "Band 4" +#~ msgstr "Banda 4" + +#~ msgid "Band 5" +#~ msgstr "Banda 5" + +#~ msgid "Band 6" +#~ msgstr "Banda 6" + +#~ msgid "Band 7" +#~ msgstr "Banda 7" + +#~ msgid "Band 8" +#~ msgstr "Banda 8" + +#~ msgid "Band Start" +#~ msgstr "Inizio Banda" + +#~ msgid "Band End" +#~ msgstr "Fine Banda" + +#~ msgid "Band Compression Mode" +#~ msgstr "Banda Modalità Compressione" + +#~ msgid "Band Bypass" +#~ msgstr "Bypass Banda" + +#~ msgid "Band Sidechain Options" +#~ msgstr "Opzioni Sidechain Banda" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtro Passa-Basso" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Frequenza Filtro Passa-Basso" + +#~ msgid "High-Cut Filter" +#~ msgstr "Filtro Passa-Alto" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Frequenza Filtro Passa-Alto" + +#~ msgid "PreAmp" +#~ msgstr "PreAmp" + +#~ msgid "Band Gain" +#~ msgstr "Guadagno Banda" + +#~ msgid "Band Envelope" +#~ msgstr "Envelope Banda" + +#~ msgid "Band Curve" +#~ msgstr "Curva Banda" + +#~ msgid "Split Mode" +#~ msgstr "Modalità Split" + +#~ msgid "Split 1/2" +#~ msgstr "Split 1/2" + +#~ msgid "Split Frequency 1" +#~ msgstr "Frequenza Split 1" + +#~ msgid "Split 2/3" +#~ msgstr "Split 2/3" + +#~ msgid "Split Frequency 2" +#~ msgstr "Frequenza Split 2" + +#~ msgid "Split 3/4" +#~ msgstr "Split 3/4" + +#~ msgid "Split Frequency 3" +#~ msgstr "Frequenza Split 3" + +#~ msgid "Sub Band" +#~ msgstr "Sottobanda" + +#~ msgid "Band 1 Bypass" +#~ msgstr "Banda 1 Bypass" + +#~ msgid "Band 1 Solo" +#~ msgstr "Banda 1 Isola" + +#~ msgid "Band 1 Detection" +#~ msgstr "Banda 1 Rilevamento" + +#~ msgid "Band 1 Attack" +#~ msgstr "Banda 1 Attacco" + +#~ msgid "Band 1 Release" +#~ msgstr "Banda 1 Rilascio" + +#~ msgid "Band 1 Threshold" +#~ msgstr "Banda 1 Soglia" + +#~ msgid "Band 1 Ratio" +#~ msgstr "Banda 1 Rapporto" + +#~ msgid "Band 1 Knee" +#~ msgstr "Banda 1 Curvatura" + +#~ msgid "Band 1 Makeup" +#~ msgstr "Banda 1 Guadagno" + +#~ msgid "Max Reduction" +#~ msgstr "Max Riduzione" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Banda 1 Massima Riduzione" + +#~ msgid "Low Band" +#~ msgstr "Banda Bassa" + +#~ msgid "Band 2 Bypass" +#~ msgstr "Banda 2 Bypass" + +#~ msgid "Band 2 Solo" +#~ msgstr "Banda 2 Isola" + +#~ msgid "Band 2 Detection" +#~ msgstr "Banda 2 Rilevamento" + +#~ msgid "Band 2 Attack" +#~ msgstr "Banda 2 Attacco" + +#~ msgid "Band 2 Release" +#~ msgstr "Banda 2 Rilascio" + +#~ msgid "Band 2 Threshold" +#~ msgstr "Banda 2 Soglia" + +#~ msgid "Band 2 Ratio" +#~ msgstr "Banda 2 Rapporto" + +#~ msgid "Band 2 Knee" +#~ msgstr "Banda 2 Curvatura" + +#~ msgid "Band 2 Makeup" +#~ msgstr "Banda 2 Guadagno" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Banda 2 Massima Riduzione" + +#~ msgid "Mid Band" +#~ msgstr "Banda Media" + +#~ msgid "Band 3 Bypass" +#~ msgstr "Banda 3 Bypass" + +#~ msgid "Band 3 Solo" +#~ msgstr "Banda 3 Isola" + +#~ msgid "Band 3 Detection" +#~ msgstr "Banda 3 Rilevamento" + +#~ msgid "Band 3 Attack" +#~ msgstr "Banda 3 Attacco" + +#~ msgid "Band 3 Release" +#~ msgstr "Banda 3 Rilascio" + +#~ msgid "Band 3 Threshold" +#~ msgstr "Banda 3 Soglia" + +#~ msgid "Band 3 Ratio" +#~ msgstr "Banda 3 Rapporto" + +#~ msgid "Band 3 Knee" +#~ msgstr "Banda 3 Curvatura" + +#~ msgid "Band 3 Makeup" +#~ msgstr "Banda 3 Guadagno" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Banda 3 Massima Riduzione" + +#~ msgid "High Band" +#~ msgstr "Banda Alta" + +#~ msgid "Band 4 Bypass" +#~ msgstr "Banda 4 Bypass" + +#~ msgid "Band 4 Solo" +#~ msgstr "Banda 4 Isola" + +#~ msgid "Band 4 Detection" +#~ msgstr "Banda 4 Rilevamento" + +#~ msgid "Band 4 Attack" +#~ msgstr "Banda 4 Attacco" + +#~ msgid "Band 4 Release" +#~ msgstr "Banda 4 Rilascio" + +#~ msgid "Band 4 Threshold" +#~ msgstr "Banda 4 Soglia" + +#~ msgid "Band 4 Ratio" +#~ msgstr "Banda 4 Rapporto" + +#~ msgid "Band 4 Knee" +#~ msgstr "Banda 4 Curvatura" + +#~ msgid "Band 4 Makeup" +#~ msgstr "Banda 4 Guadagno" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Banda 4 Massima Riduzione" + +#~ msgid "General" +#~ msgstr "Generale" + +#~ msgid "Device Management" +#~ msgstr "Gestione Dispositivi" + +#~ msgid "" +#~ "It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +#~ "external applications (e.g. Gnome Settings and Plasma System Settings)." +#~ msgstr "" +#~ "Si raccomanda di NON impostare EasyEffects Sink/Source come Dispositivo " +#~ "Predefinito in applicazioni esterne (per esempio Gnome Settings e Plasma " +#~ "System Settings)." + +#~ msgid "Use Default Input" +#~ msgstr "Usa Ingresso Predefinito" + +#~ msgid "Custom Input Device" +#~ msgstr "Dispositivo Ingresso Personalizzato" + +#~ msgid "Use Default Output" +#~ msgstr "Usa Uscita Predefinita" + +#~ msgid "Custom Output Device" +#~ msgstr "Dispositivo Uscita Personalizzato" + +#~ msgid "Server Information" +#~ msgstr "Informazioni Server" + +#~ msgid "Header Version" +#~ msgstr "Versione Header" + +#~ msgid "Library Version" +#~ msgstr "Versione Libreria" + +#~ msgid "Sampling Rate" +#~ msgstr "Frequenza di Campionamento" + +#~ msgid "Minimum Quantum" +#~ msgstr "Quantum Minimo" + +#~ msgid "Maximum Quantum" +#~ msgstr "Quantum Massimo" + +#~ msgid "Default Quantum" +#~ msgstr "Quantum Predefinito" + +#~ msgid "Presets Autoloading" +#~ msgstr "Auto Caricamento Profili" + +#~ msgid "Output Devices" +#~ msgstr "Dispositivi di Uscita" + +#~ msgid "Output Presets" +#~ msgstr "Profili di Uscita" + +#~ msgid "Create Association" +#~ msgstr "Crea Associazione" + +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "Aggiungi Profilo di Auto Caricamento in Uscita" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Profili di Auto Caricamento in Uscita" + +#~ msgid "Input Devices" +#~ msgstr "Dispositivi di Ingresso" + +#~ msgid "Input Presets" +#~ msgstr "Profili di Ingresso" + +#~ msgid "Add Autoloading Input Preset" +#~ msgstr "Aggiungi Profilo di Auto Caricamento in Ingresso" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Profili di Auto Caricamento in Ingresso" + +#~ msgid "Modules" +#~ msgstr "Moduli" + +#~ msgid "Modules List" +#~ msgstr "Lista Moduli" + +#~ msgid "Clients" +#~ msgstr "Client" + +#~ msgid "Clients List" +#~ msgstr "Lista Client" + +#~ msgid "Test Signal" +#~ msgstr "Segnale di Test" + +#~ msgid "State" +#~ msgstr "Stato" + +#~ msgid "Enabled" +#~ msgstr "Abilitato" + +#~ msgid "Properties" +#~ msgstr "Proprietà" + +#~ msgid "Channels" +#~ msgstr "Canali" + +#~ msgid "Both" +#~ msgstr "Entrambi" + +#~ msgid "Both Channels" +#~ msgstr "Entrambi i Canali" + +#~ msgid "Waveform" +#~ msgstr "Tipo Onda" + +#~ msgid "Sine Wave" +#~ msgstr "Sinusoidale" + +#~ msgid "White Noise" +#~ msgstr "Rumore Bianco" + +#~ msgid "High Speed" +#~ msgstr "Alta Velocità" + +#~ msgid "High Quality" +#~ msgstr "Alta Qualità" + +#~ msgid "High Consistency" +#~ msgstr "Alta Consistenza" + +#~ msgid "Formant" +#~ msgstr "Formante" + +#~ msgid "Shifted" +#~ msgstr "Alterata" + +#~ msgid "Preserved" +#~ msgstr "Preservata" + +#~ msgid "Transients" +#~ msgstr "Transienti" + +#~ msgid "Crisp" +#~ msgstr "Netti" + +#~ msgid "Mixed" +#~ msgstr "Intermedi" + +#~ msgid "Smooth" +#~ msgstr "Tenui" + +#~ msgid "Detector" +#~ msgstr "Rilevazione" + +#~ msgid "Compound" +#~ msgstr "Composto" + +#~ msgid "Percussive" +#~ msgstr "Percussivo" + +#~ msgid "Soft" +#~ msgstr "Soft" + +#~ msgid "Phase" +#~ msgstr "Fase" + +#~ msgid "Laminar" +#~ msgstr "Laminare" + +#~ msgid "Independent" +#~ msgstr "Indipendente" + +#~ msgid "Cents" +#~ msgstr "Centesimi" + +#~ msgid "Semitones" +#~ msgstr "Semitoni" + +#~ msgid "Octaves" +#~ msgstr "Ottave" + +#~ msgid "Remove this effect" +#~ msgstr "Rimuovi questo effetto" + +#~ msgid "Enable/disable this effect" +#~ msgstr "Abilita/disabilita questo effetto" + +#~ msgid "Change the position of this effect" +#~ msgstr "Cambia la posizione di questo effetto" + +#~ msgid "Add Effect" +#~ msgstr "Aggiungi Effetto" + +#~ msgid "Used Plugins List" +#~ msgstr "Lista Moduli Utilizzati" + +#~ msgid "No Effects" +#~ msgstr "Nessun Effetto" + +#~ msgid "Audio Stream Not Modified" +#~ msgstr "Flusso Audio Non Alterato" + +#~ msgid "Search Plugin" +#~ msgstr "Cerca Modulo" + +#~ msgid "Plugins List" +#~ msgstr "Lista dei Moduli" + +#~ msgid "_General" +#~ msgstr "_Generale" + +#~ msgid "Service" +#~ msgstr "Servizio" + +#~ msgid "Launch Service at System Startup" +#~ msgstr "Inizia come Servizio all'Avvio del Sistema" + +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Termina alla Chiusura della Finestra" + +#~ msgid "Audio" +#~ msgstr "Audio" + +#~ msgid "Process All Output Streams" +#~ msgstr "Processa Tutto i Flussi in Uscita" + +#~ msgid "Process All Input Streams" +#~ msgstr "Processa Tutti i Flussi in Ingresso" + +#~ msgid "Ignore Streams from Monitor of Devices" +#~ msgstr "Ignora i Flussi dai Monitor dei Dispositivi" + +#~ msgid "Use Cubic Volume" +#~ msgstr "Usa Volume Cubico" + +#~ msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +#~ msgstr "" +#~ "Reimposta il Volume dei Dispositivi Virtuali di EasyEffects all'Avvio" + +#~ msgid "Inactivity Timeout" +#~ msgstr "Tempo Inattività" + +#~ msgid "Style" +#~ msgstr "Stile" + +#~ msgid "Use Dark Theme" +#~ msgstr "Usa Tema Scuro" + +#~ msgid "Hide Menus on Outside Clicks" +#~ msgstr "Chiudi Menu con Click Esterno" + +#~ msgid "_Spectrum" +#~ msgstr "_Spettro" + +#~ msgid "Shape" +#~ msgstr "Forma" + +#~ msgid "Bars" +#~ msgstr "Barre" + +#~ msgid "Lines" +#~ msgstr "Linee" + +#~ msgid "Dots" +#~ msgstr "Punti" + +#~ msgid "Points" +#~ msgstr "Punti" + +#~ msgid "Height" +#~ msgstr "Altezza" + +#~ msgid "Line Width" +#~ msgstr "Spessore Linea" + +#~ msgid "Fill" +#~ msgstr "Riempi" + +#~ msgid "Show Bars Border" +#~ msgstr "Mostra Bordo" + +#~ msgid "Rounded Corners" +#~ msgstr "Angoli Arrotondati" + +#~ msgid "Color" +#~ msgstr "Colore" + +#~ msgid "Lines and Bars" +#~ msgstr "Linee e Barre" + +#~ msgid "Axis Labels" +#~ msgstr "Etichette sull'Asse" + +#~ msgid "Frequency Range" +#~ msgstr "Gamma Frequenze" + +#~ msgid "Minimum" +#~ msgstr "Minima" + +#~ msgid "Maximum" +#~ msgstr "Massima" + +#~ msgid "Load" +#~ msgstr "Carica" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Salva impostazioni attuali in questo profilo" + +#~ msgid "Remove this preset file" +#~ msgstr "Rimuovi questo profilo" + +#~ msgid "New Output Preset Name" +#~ msgstr "Nome Nuovo Profilo di Uscita" + +#~ msgid "Create a new preset" +#~ msgstr "Crea un nuovo profilo" + +#~ msgid "Import a preset" +#~ msgstr "Importa un profilo" + +#~ msgid "Search Output Preset" +#~ msgstr "Cerca Profilo di Uscita" + +#~ msgid "Output Presets List" +#~ msgstr "Lista Profili di Uscita" + +#~ msgid "New Input Preset Name" +#~ msgstr "Nome Nuovo Profilo di Ingresso" + +#~ msgid "Search Input Preset" +#~ msgstr "Cerca Profilo di Ingresso" + +#~ msgid "Input Presets List" +#~ msgstr "Lista Profili di Ingresso" + +#~ msgid "High Frequency Damping" +#~ msgstr "Smorza Alte Frequenze" + +#~ msgid "Room Size" +#~ msgstr "Dimensione Stanza" + +#~ msgid "Small" +#~ msgstr "Piccola" + +#~ msgid "Medium" +#~ msgstr "Media" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Tunnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/liscia" + +#~ msgid "Experimental" +#~ msgstr "Sperimentale" + +#~ msgid "Diffusion" +#~ msgstr "Diffusione" + +#~ msgid "Pre Delay" +#~ msgstr "Pre Ritardo" + +#~ msgid "Decay Time" +#~ msgstr "Tempo Decay" + +#~ msgid "Wet Amount" +#~ msgstr "Quantità Dry" + +#~ msgid "Wet Level" +#~ msgstr "Livello Wet" + +#~ msgid "Dry Amount" +#~ msgstr "Quantità Wet" + +#~ msgid "Dry Level" +#~ msgstr "Livello Dry" + +#~ msgid "Bass Cut" +#~ msgstr "Taglio Bassi" + +#~ msgid "Treble Cut" +#~ msgstr "Taglio Alti" + +#~ msgid "Ambience" +#~ msgstr "Ambiente" + +#~ msgid "Empty Walls" +#~ msgstr "Mura Vuote" + +#~ msgid "Room" +#~ msgstr "Stanza" + +#~ msgid "Large Empty Hall" +#~ msgstr "Sala Grande Vuota" + +#~ msgid "Disco" +#~ msgstr "Discoteca" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Sala Grande Occupata" + +#~ msgid "Import Model" +#~ msgstr "Importa Modello" + +#~ msgid "Models" +#~ msgstr "Modelli" + +#~ msgid "Standard Model" +#~ msgstr "Modello Standard" + +#~ msgid "RNNoise Models List" +#~ msgstr "Lista Modelli RNNoise" + +#~ msgid "Model Not Loaded" +#~ msgstr "Modello Non Caricato" + +#~ msgid "Active Model" +#~ msgstr "Modello Attivo" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Modello RNNoise Standard" + +#~ msgid "Overview" +#~ msgstr "Sommario" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Apri il Manuale di EasyEffects" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Attiva/Disattiva Schermo Intero" + +#~ msgid "Close the Window" +#~ msgstr "Chiudi la Finestra" + +#~ msgid "Quit EasyEffects" +#~ msgstr "Termina EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Bilanciamento" + +#~ msgid "Input Balance" +#~ msgstr "Bilanciamento Ingresso" + +#~ msgid "Softclip" +#~ msgstr "Softclip" + +#~ msgid "Softclip Level" +#~ msgstr "Livello Softclip" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matrice Stereo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "SD > SD (Predefinito Stereo)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "SD > MS (Stereo a Medio-Lato)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > SD (Medio-Lato a Stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "SD > SS (Canale Sinistro Mono)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "SD > DD (Canale Destro Mono)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "SD > S+D (Mono Somma S+D)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "SD > DS (Inverti Canali Stereo)" + +#~ msgid "Stereo Mode" +#~ msgstr "Modalità Stereo" + +#~ msgid "Invert Phase" +#~ msgstr "Inverti Fase" + +#~ msgid "Side Level" +#~ msgstr "Livello Lato" + +#~ msgid "Side Balance" +#~ msgstr "Bilanciamento Lato" + +#~ msgid "Middle Level" +#~ msgstr "Livello Medio" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama Medio" + +#~ msgid "Output Balance" +#~ msgstr "Bilanciamento in Uscita" + +#~ msgid "Delay L/R" +#~ msgstr "Delay S/D" + +#~ msgid "Delay Left Right" +#~ msgstr "Ritardo Sinistro Destro" + +#~ msgid "Stereo Base" +#~ msgstr "Base Stereo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fase Stereo" + +#~ msgid "Running" +#~ msgstr "In esecuzione" + +#~ msgid "Suspended" +#~ msgstr "Sospeso" + +#~ msgid "Idle" +#~ msgstr "Inattivo" + +#~ msgid "Creating" +#~ msgstr "In creazione" + +#~ msgid "Error" +#~ msgstr "Errore" + +#~ msgid "Unknown" +#~ msgstr "Sconosciuto" + +#~ msgid "channels" +#~ msgstr "Canali" + +#~ msgid "Output Presets: " +#~ msgstr "Profili Uscita: " + +#~ msgid "Input Presets: " +#~ msgstr "Profili Ingresso: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Effetti Audio per Applicazioni PipeWire" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Esci da EasyEffects. Utile in esecuzione come servizio." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Carica un profilo. Esempio: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Reset EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Nascondi la Finestra." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Bypass globale. 1 per abilitare, 2 per disabilitare e 3 per ottenere lo " +#~ "stato" + +#~ msgid "Show available presets." +#~ msgstr "Mostra profili disponibili." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#~ msgid "The File Is Not Regular" +#~ msgstr "Il File È Irregolare" + +#~ msgid "The Impulse File May Be Corrupted or Unsupported" +#~ msgstr "Il File di Risposta Impulsiva Può Essere Corrotto o Non Supportato" + +#~ msgid "Only Stereo Impulse Files Are Supported" +#~ msgstr "" +#~ "Sono Supportati Soltanto File di Risposta Impulsiva in Formato Stereo" + +#~ msgid "Impulse File Not Imported" +#~ msgstr "File di Risposta Impulsiva Non Importato" + +#~ msgid "Import Impulse File" +#~ msgstr "Importa File di Impulso" + +#~ msgid "Open" +#~ msgstr "Apri" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Impulse Response" +#~ msgstr "Risposta Impulso" + +#~ msgid "Load Impulse" +#~ msgstr "Carica Impulso" + +#~ msgid "Remove Impulse" +#~ msgstr "Rimuovi Impulso" + +#~ msgid "No Impulse File Loaded" +#~ msgstr "Nessun File di Risposta Impulsiva Caricato" + +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Impossibile Caricare il File di Risposta Impulsiva" + +#~ msgid "Recorders" +#~ msgstr "Registratori" + +#~ msgid "Players" +#~ msgstr "Riproduttori" + +#~ msgid "Effects" +#~ msgstr "Effetti" + +#~ msgid "infinity" +#~ msgstr "infinito" + +#~ msgid "Import APO Preset File" +#~ msgstr "Importa File Profilo APO" + +#~ msgid "APO Presets" +#~ msgstr "Profili APO" + +#~ msgid "" +#~ "APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +#~ msgstr "" +#~ "Profilo APO Non Caricato. Il Formato Può Essere Errato. Si Prega di " +#~ "Controllare il Contenuto." + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Rimuovi Profilo di Auto Caricamento" + +#~ msgid "Remove" +#~ msgstr "Rimuovi" + +#~ msgid "Output Device" +#~ msgstr "Dispositivo Uscita" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Import Preset" +#~ msgstr "Importa Profilo" + +#~ msgid "" +#~ "Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To " +#~ "The Standard Model." +#~ msgstr "" +#~ "Il Modello Selezionato Non È Stato Caricato. Il Formato Potrebbe Essere " +#~ "Non Supportato. Il Modello Standard È Stato Ripristinato." + +#~ msgid "Import Model File" +#~ msgstr "Importa File Modello" + +#~ msgid "RNNoise Models" +#~ msgstr "Modelli RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Enfasi Bassi" + +#~ msgid "Bass Loudness" +#~ msgstr "Loudness Bassi" + +#~ msgid "Convolver" +#~ msgstr "Convolver" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Crystalizer" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Delay" + +#~ msgid "Echo Canceller" +#~ msgstr "Rimozione Eco" + +#~ msgid "Equalizer" +#~ msgstr "Equalizzatore" + +#~ msgid "Exciter" +#~ msgstr "Exciter" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Limiter" +#~ msgstr "Limiter" + +#~ msgid "Maximizer" +#~ msgstr "Maximizer" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compressore Multibanda" + +#~ msgid "Multiband Gate" +#~ msgstr "Gate Multibanda" + +#~ msgid "Pitch" +#~ msgstr "Intonazione" + +#~ msgid "Reverberation" +#~ msgstr "Riverbero" + +#~ msgid "Noise Reduction" +#~ msgstr "Riduzione Rumore" + +#~ msgid "Stereo Tools" +#~ msgstr "Strumenti Stereo" + +#~ msgid "Close (Press ESC)" +#~ msgstr "Chiudi (Premi ESC)" + +#~ msgid "Average" +#~ msgstr "Media" + +#~ msgid "Failed" +#~ msgstr "Errore" + +#~ msgid "Use Default" +#~ msgstr "Usa Predefinito" + +#~ msgid "Remove this plugin" +#~ msgstr "Rimuovi questo profilo" + +#~ msgid "Import Presets" +#~ msgstr "Importa Profili" + +#~ msgid "Start Service at Login" +#~ msgstr "Esegui Servizio all'Avvio" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Reimposta il Volume di EasyEffects all'Avvio" + +#~ msgid "Shutdown on Window Close" +#~ msgstr "Termina alla Chiusura della Finestra" + +#~ msgid "Process All Outputs" +#~ msgstr "Processa Tutto in Uscita" + +#~ msgid "Process All Inputs" +#~ msgstr "Processa Tutto in Ingresso" + +#~ msgid "Exclude Device Monitor Streams" +#~ msgstr "Escludi i flussi di monitoraggio del dispositivo" + +#~ msgid "Activate" +#~ msgstr "Abilita" + +#~ msgid "Add to Blocklist" +#~ msgstr "Aggiungi ad App Escluse" + +#~ msgid "Blocklist" +#~ msgstr "App Escluse" + +#~ msgid "Add Plugin" +#~ msgstr "Aggiungi Modulo" + +#~ msgid "Speakers" +#~ msgstr "Altoparlanti" + +#~ msgid "Microphone" +#~ msgstr "Microfono" + +#~ msgid "Plugins" +#~ msgstr "Moduli" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Attivato" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Attivato" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latenza" + +#~ msgid "idle" +#~ msgstr "inattivo" + +#~ msgid "Faster" +#~ msgstr "Più Veloce" + +#~ msgid "Preserve Formant" +#~ msgstr "Preserva Formante" + +#~ msgid "Crispness" +#~ msgstr "Chiarezza" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not" +#~ msgstr "" +#~ "Il filtro di guadagno automatico dovrebbe gestire meglio gli interruttori " +#~ "di latenza dinamica di PipeWire. I salti nel livello del volume non " +#~ "dovrebbe" + +#~ msgid "happen anymore in these situations." +#~ msgstr "succedere più in queste situazioni." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts." +#~ msgstr "" +#~ "Abbiamo aggiunto un'opzione che consente di ripristinare il volume e lo " +#~ "stato muto dei nostri dispositivi virtuali all'avvio di EasyEffects." + +#~ msgid "" +#~ "It should help with the cases were our devices are muted by the audio " +#~ "server for unknown reasons." +#~ msgstr "" +#~ "Dovrebbe aiutare con i casi in cui i nostri dispositivi sono silenziati " +#~ "dal server audio per ragioni sconosciute." + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" diff --git a/po/news/ja.po b/po/news/ja.po new file mode 100644 index 0000000..3ed06df --- /dev/null +++ b/po/news/ja.po @@ -0,0 +1,2835 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-18 22:44+0000\n" +"Last-Translator: R.Suga <21r.suga@gmail.com>\n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "PipeWire アプリケーション用オーディオエフェクト" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects は、高度なオーディオ操作ツールです。イコライザー、リミッター、コ" +"ンプレッサー、リバーブツールなどが含まれていますが、これらはほんの一部です。" +"さらに、スペクトラムアナライザーもあります。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects は、PulseEffects の後継版です。EasyEffects は PipeWire のオーディ" +"オサーバーのみ対応しています。PulseAudio をお使いの場合、代わりに " +"PulseEffects をお使いください。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"EasyEffects はデフォルトの PipeWire サウンドサーバーを使用しているので、ほと" +"んどのアプリケーションで動作します。サポートされているすべてのアプリケーショ" +"ンは、メインウィンドウに表示され、それぞれ個別に有効にすることができます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"EasyEffects は、音の出力を操作するだけでなく、マイクなどの入力デバイスにもエ" +"フェクトをかけることができます。例えば、音声録音の時に便利ですが、音声会話の" +"時にも効果を発揮します。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"EasyEffects を起動すると、前回のセッションで使用した設定を適用します。また、" +"現在のすべての設定をプロファイルとして保存することもできます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "2 つのオーディオ出力アプリを表示するメインページ" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "オーディオコントロールを表示するベースエンハンサーページ" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "オーディオコントロールを表示するコンボルバーのページ" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +#, fuzzy +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" +"リミッタープラグインは、Calf Studio のものから Linux Studio Plugins のステレ" +"オリミッタープラグインを使用するようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +#, fuzzy +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" +"アプリケーションに対してエフェクトが無効になっている場合、ターゲットメタデー" +"タをnullに設定します。これにより、メディアセッションが可能になります" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +#, fuzzy +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" +"新しい設定オプションが追加されました。これは、EasyEffects が監視シンクデバイ" +"スのストリームを無視することを可能にします。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "ストリームのサンプル形式を表示するコードが改善されました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +#, fuzzy +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" +"rnnoise ライブラリがオプションになりました。これはパッケージメンテナがDebian" +"パッケージをビルドするのに役立ちます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" +"ログにメッセージが出力されるソースコードの行が表示されるようになりました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +#, fuzzy +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" +"pavucontrol などのサードパーティ製プログラムが動作しているとき、ウィンドウの" +"「エフェクトを有効にする」チェックボックスが更新されないことがありました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" +"オートゲインの最大履歴を変更すると、クラッシュすることがある問題を修正しまし" +"た。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "pw-mididump 実行時のクラッシュを回避" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "ピッチプラグインのインターフェースが改善されました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "アプリケーションアイコンが QT を使用するデスクトップに対応しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" +"ブロックリストのコードは、ストリームが `application.id` タグを設定した場合、" +"それを使用します" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +#, fuzzy +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" +"マウスのスクロールの問題を回避するために、`プレーヤー/レコーダー` に表示され" +"るアプリケーションリストのエントリを表示します" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" +"`プレーヤー/レコーダー` に表示できるアプリケーションがない場合、メッセージが" +"表示されます" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "多くの翻訳の更新" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +#, fuzzy +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" +"EasyEffects が次の状態のときにスペクトラムに表示されるポイント数を変更したと" +"きにクラッシュするバグを修正しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" +"ウィンドウに表示されるパイプラインの待機時間の値は、状況によっては間違ってい" +"る可能性があります。この問題は修正されました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"オートゲインプラグインでは、3つのラウドネスのうち、どのラウドネスを使用して幾" +"何学的な計算を行うかを選択できるようになりました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"オートゲインプラグインに最大履歴を設定できるようになり、libebur128 ヒストグラ" +"ムモードは使用されなくなりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"EasyEffects のアイコンは、QT デスクトップで見えるように更新されました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"グローバルバイパスの状態を返すコマンドラインオプションが再び動作するようにな" +"りました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"クロスフィードフィルターは、PipeWire の動的遅延スイッチにうまく対応するように" +"なりました。これで、音量レベルのジャンプが起こらなくなるはずです。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "モノラルマイクが EasyEffects で正しく動作しない不具合を修正しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "次の PipeWire リリース `0.3.44` への対応" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"オートゲインフィルターは、PipeWire の動的遅延スイッチにうまく対応するようにな" +"りました。これで、音量レベルのジャンプが起こらなくなるはずです。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"EasyEffects の起動時に、バーチャルデバイスのボリュームとミュートの状態をリ" +"セットできるオプションを追加しました。これは、謎の理由でオーディオサーバーに" +"よってデバイスがミュートされている場合に役立ちます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "コンピュータのサスペンドのサポートが強化されました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "翻訳の更新" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"プリセットを持たない自動読み込みプロファイルを作成しようとすると、アプリケー" +"ションがクラッシュするというバグを修正しました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"イコライザーバンドの「品質」を「0」に設定するとアプリケーションがクラッシュす" +"るバグを修正しました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita は、ウィンドウの一部を作成したり、ダークテーマとライトテーマを切り" +"替えるために使用されます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "設定メニューは、LibAdwaita ウィジェットを使用して再設計されました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +#, fuzzy +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"イコライザー APO のプリセットインポート機能で、ベルフィルターだけでなく、対応" +"する他のフィルターも適用できるよう改善しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"メニューの「すべての設定をリセット」機能が Flatpak でも動作するようにしまし" +"た。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"メニューの 「自動非表示」を無効にすることができる新しいオプションを用意しまし" +"た。これにより、現在 gtk4 で抱えているポップオーバーメニュー関連のバグを回避" +"できるかもしれません。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"中央の周波数帯でカンマを千の区切りとして保存された APO プリセットを読み込むた" +"めの解析がより強力になりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"fmt ライブラリは、少なくとも c++ コンパイラがその機能を実装していない間は新し" +"い依存関係にあります。これは今後数年のうちに実現すると思われます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM と GLIBMM はもう依存関係にありません。現在は gtk4 を直接使用していま" +"す。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"コンボルバーインターフェースでインパルスレスポンスを組み合わせることができる" +"ようになりました。新しいインパルスファイルが生成され、インパルスリストに表示" +"されます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"プロットの「x 軸」の描画を改善しました。ウィンドウの幅に応じてラベルの数が動" +"的に調整されるようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"ドキュメントが EasyEffects の新機能を反映して更新されました。PulseEffects に" +"関する古い文献は削除されました。メニューセクションにドキュメントボタンが追加" +"されました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"スピンボタンに範囲外の値が入力されたときに、前の値にリセットされるのではな" +"く、最低/最高の値に更新されるようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" +"アプリケーションウィンドウは最大化された状態を記憶し、次回の起動時に反映しま" +"す。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "「tbb」ライブラリは新しい依存関係です" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" +"リミッターとマルチバンドコンプレッサーのプラグインで、オプションの外部サイド" +"チェーンを使用できるようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" +"オートゲインプラグインで、音量補正の基準となるラウドネスを選択できるようにな" +"りました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" +"イコライザープラグインの APO プロファイルインポート機能で、\"Pre " +"Amplification\" パラメータを解析するようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" +"オプションのキュービックボリュームは一般設定で有効にすることができます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" +"PipeWire のモニターストリームがアプリケーションリストから除外され、削除される" +"ようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +#, fuzzy +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" +"うまくいけば [1172]( で報告されたもののようなクラッシュが修正されています。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "スペクトラムがクラッシュするのを防ぎました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"英語以外の言語を使用しているシステムでは、Pavucontrol は入力アプリケーション" +"リストに追加されません。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +#, fuzzy +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" +"WirePlumber との互換性を改善しました。これは次のものの代わりにシステムで動作" +"するために必要です" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" +"すでにリストにあるデバイスに自動読み込みプロファイルを追加しようとすると、そ" +"のターゲットプリセットが更新されます。これにより、プロファイルを削除して再度" +"作成せずにプロファイルのプリセットを変更することができます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +#, fuzzy +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" +"プリセットの自動読み込みサポートの実装を再設計しました。これにより、多くの" +"ハードウェアで動作するようになりました。詳しくは issue [1051]( を確認してくだ" +"さい" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" +"プラグインスタックの最後にリミッターやマキシマイザーが設定されている場合、高" +"い出力レベルでハードウェアが損傷するのを防ぐために、新しいプラグインは最後か" +"ら2番目の位置に追加されます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "ブロックリストからアプリケーションを削除すると、有効な状態に戻ります。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" +"ノイズ除去プラグインからインポートしたモデルを削除すると、現在使用しているモ" +"デルが正しく更新されないことがありました。これは現在修正されているはずです。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" +"外部エディタでプリセットファイルを編集すると、重複したエントリーがプリセット" +"メニューに表示されなくなります。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" +"プリセットを切り替えたときに、ブロックリストが正しく設定されるようになりまし" +"た。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" +"プラグインのスタックを変更したときに、グローバルバイパスボタンの状態が正しく" +"更新されるようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" +"Breeze アイコンテーマを使用した Plasma DE で表示されなかった一部のアイコンが" +"表示されるようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "中国語の翻訳を更新しました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "イタリア語の翻訳を更新しました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "コンプレッサーのパラメーター「Boost Amount」に対応しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" +"マルチバンドコンプレッサープラグインは、Calf Studio のものから Linux Studio " +"Plugins のステレオマルチバンドコンプレッサープラグインを使用するようになりま" +"した。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" +"リミッタープラグインは、Calf Studio のものから Linux Studio Plugins のステレ" +"オリミッタープラグインを使用するようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" +"LV2 フィルターは、最初に読み込まれたときのみ PipeWire グラフに生成されるよう" +"になりました。一度読み込まれると、EasyEffects がシャットダウンするまで接続さ" +"れたままになります。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" +"エコーキャンセラーのサンプリングレートが正しく設定されるようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" +"ディエッサープラグインのしきい値パラメーターがプリセットファイルに保存される" +"ようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" +"クリスタライザーのバンドスプリットを改善し、新しいデフォルトの強度値を追加し" +"ました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" +"入力ゲインや出力ゲインの値によっては、対応するレベルバーが揃わないことがあり" +"ました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" +"イコライザーバンドを追加すると、「オフ」ではなく「ベル」に設定されます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" +"イコライザー APO のプリセットの読み込みが、C 以外のロケールで正しく動作するよ" +"うになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "PipeWire のポートフィルターノード間のリンク管理を改善しました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" +"以前は、クリスタライザープラグインの信号増幅が高すぎました。今は、より合理的" +"なレベルになっているはずです。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" +"リサンプラーを必要とするプラグイン (rnnoise プラグインなど) で使用されるリザ" +"ンプラーの改善" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "複数の自動読み込みプリセットを設定しても正常に動作するようになりました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" +"一部のプラグインのダイアログで、一時的なウィンドウが適切に設定されるようにな" +"りました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +#, fuzzy +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" +"コンボルバーのインパルス応答メニューで、インパルスファイルが1つしかない場合に" +"読み込まれないという問題を改善しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "ピッチプラグインが正しく初期化されないことがあるバグを修正しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" +"サチュレーション警告は、もう隣のウィジェットの位置を変えることはありません" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "いくつかのウィジェットのロケールを修正" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "いくつかのウィジェットで誤った配置になっていたのを修正" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +#, fuzzy +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" +"ラウドネスプラグインは、ここで説明されている理由のために再び使用されていま" +"す。そのため、オプションの依存関係になりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" +"オプションの依存パッケージがインストールされていない場合に発生するセグメン" +"テーションフォールトを修正しました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "イコライザーのインターフェースを改善しました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" +"現在は、サイドチェーン入力として外部ソースを選択できるサイドチェーン LSP コン" +"プレッサーを使用しています。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "LSP コンプレッサーの「ブースト」モードに対応しました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" +"イコライザーで「スプリットチャンネル」が有効になっている場合、インポートされ" +"た APO プリセットは、ウィンドウに表示されているチャンネルのみ適用されます。こ" +"れにより、両方に同じ値を設定するのではなく、チャンネルごとに異なるプリセット" +"をインポートすることができます。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" +"プリセットの自動読み込みプロファイル作成時やプリセットの削除時に発生するセグ" +"メンテーションフォールトを修正" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" +"今回のリリースは、これまでのリリースの中でも最も大きなもののひとつです。変更" +"点が多すぎて、ここですべてを話すことはできません。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +#, fuzzy +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "以下は、最も重要なものだけです。ここに至るまでの道のりに興味のある方は" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" +"アプリケーションとそのリポジトリの名称が PulseEffects から EasyEffects に変更" +"されました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "gtkmm3 は gtkmm4 に置き換えられました" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "Gstreamer は、ネイティブの PipeWire フィルターに置き換えられました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" +"多くの機能がゼロから再実装されました。プリセットの自動読み込みはその一例で" +"す。また、プラグイン選択メニューも大きく変化しました。ユーザーは、使用したい" +"プラグインだけをウィンドウに表示できるようになりました。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" +"Boost は依存関係でなくなりました。そのため、プリセットの構造に少し変更があり" +"ました。根気があれば、PulseEffects のプリセットをテキストエディタで編集して、" +"EasyEffects で動作させることができます。誰かがこの機能のためのスクリプトを開" +"発してくれることを期待しています。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" +"新しいライブラリーが使われるようになり、以前はオプションであったライブラリー" +"の一部が必須になりました" + +#~ msgid "This release adds the following features:" +#~ msgstr "このリリースでは、以下の機能が追加されています:" + +#~ msgid "manager" +#~ msgstr "マネージャー" + +#~ msgid "" +#~ "devices. This will help to fix some of problems our users were having " +#~ "when using OBS." +#~ msgstr "" +#~ "これにより、OBS を使用する際にユーザーが抱えていた問題のいくつかを解決する" +#~ "ことができます。" + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "詳しくは issue #1000 を参照してください。" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "このリリースでは、以下のバグが修正されています:" + +#~ msgid "" +#~ "moved the stream away from our virtual devices. This should be fixed now." +#~ msgstr "" +#~ "そのストリームを仮想デバイスから遠ざけました。これは今すぐ修正する必要があ" +#~ "ります。" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "タブにボリュームスケールが表示されなくなりました。この問題の詳細と解決策に" +#~ "ついては、#1211 を参照してください" + +#~ msgid "and #1427" +#~ msgstr "and #1427" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "" +#~ "パイプラインがアクティブで、かつスペクトラムウィジェットが表示されている間" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "パイプラインの非アクティブ時のタイムアウトを選択できる設定が追加されまし" +#~ "た。クライアントが再生していないとき" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "の接続や録画は、タイムアウトに達するとフィルタリングが解除されます。これは" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "CPUのパワーを無駄にせず、無音で処理することができます。" + +#~ msgid "mean." +#~ msgstr "。" + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "これにより、Integrated ラウドネスが永遠に同じ値で止まってしまうようなケー" +#~ "スを避けることができます。" + +#~ msgid "This release fixes the following bug:" +#~ msgstr "このリリースでは、以下のバグが修正されています:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "このリリースでは、以下の機能が追加されています:" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "内蔵の PipeWire セッションマネージャーです。詳細は issue [1144]( で確認で" +#~ "きます" + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "システム上のアイコンが見つからない場合は、アプリケーション情報インター" +#~ "フェース内に表示されません" + +#~ msgid "a look at and" +#~ msgstr "を見て、" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "イコライザー、コンプレッサーなどのオーディオエフェクト" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "リミッター;コンプレッサー;リバーブ;イコライザー;オートボリューム;" + +#~ msgid "\"Presets\"" +#~ msgstr "「プリセット」" + +#~ msgid "Enable/disable this application" +#~ msgstr "このアプリケーションの有効化/無効化" + +#~ msgid "Enable" +#~ msgstr "有効" + +#~ msgid "Excluded App List: Add/remove this application" +#~ msgstr "除外されたアプリリスト: このアプリケーションを追加/削除" + +#~ msgid "Exclude" +#~ msgstr "除外" + +#~ msgid "Mute Application" +#~ msgstr "アプリケーションをミュート" + +#~ msgid "Change the volume of this application" +#~ msgstr "このアプリケーションの音量を変更" + +#~ msgid "Application Volume" +#~ msgstr "アプリケーションの音量" + +#~ msgid "_Preferences" +#~ msgstr "_環境設定" + +#~ msgid "_Manual" +#~ msgstr "_マニュアル" + +#~ msgid "_Shortcuts" +#~ msgstr "_ショートカット" + +#~ msgid "_Reset Settings" +#~ msgstr "_設定をリセット" + +#~ msgid "_About EasyEffects" +#~ msgstr "_EasyEffects について" + +#~ msgid "Presets" +#~ msgstr "プリセット" + +#~ msgid "Presets Menu" +#~ msgstr "プリセットメニュー" + +#~ msgid "Enable/disable the global bypass" +#~ msgstr "グローバルバイパスの有効化/無効化" + +#~ msgid "Global Bypass" +#~ msgstr "グローバルバイパス" + +#~ msgid "Primary Menu" +#~ msgstr "メインメニュー" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects ウィンドウ" + +#~ msgid "Applications List" +#~ msgstr "アプリケーションリスト" + +#~ msgid "Empty List" +#~ msgstr "空のリスト" + +#~ msgid "No Audio Application Available" +#~ msgstr "オーディオアプリケーションがありません" + +#~ msgid "Target" +#~ msgstr "ターゲット" + +#~ msgid "Maximum History" +#~ msgstr "最大履歴" + +#~ msgid "Reference" +#~ msgstr "リファレンス" + +#~ msgid "Momentary" +#~ msgstr "瞬間的" + +#~ msgid "Short-Term" +#~ msgstr "短期" + +#~ msgid "Integrated" +#~ msgstr "統合" + +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "幾何平均 (MSI)" + +#~ msgid "Geometric Mean (MS)" +#~ msgstr "幾何平均 (MS)" + +#~ msgid "Geometric Mean (MI)" +#~ msgstr "幾何平均 (MI)" + +#~ msgid "Geometric Mean (SI)" +#~ msgstr "幾何平均 (SI)" + +#~ msgid "Reset History" +#~ msgstr "履歴をリセット" + +#~ msgid "Relative" +#~ msgstr "相対的" + +#~ msgid "Range" +#~ msgstr "範囲" + +#~ msgid "Loudness" +#~ msgstr "ラウドネス" + +#~ msgid "Output Gain" +#~ msgstr "出力ゲイン" + +#~ msgid "Input" +#~ msgstr "入力" + +#~ msgid "Plugin Input Gain" +#~ msgstr "プラグイン入力ゲイン" + +#~ msgid "Output" +#~ msgstr "出力" + +#~ msgid "Plugin Output Gain" +#~ msgstr "プラグイン出力ゲイン" + +#~ msgid "Reset" +#~ msgstr "リセット" + +#~ msgid "Using" +#~ msgstr "使用中" + +#~ msgid "Device" +#~ msgstr "デバイス" + +#~ msgid "Name" +#~ msgstr "名前" + +#~ msgid "Profile" +#~ msgstr "プロファイル" + +#~ msgid "Preset" +#~ msgstr "プリセット" + +#~ msgid "Remove this autoload preset" +#~ msgstr "この自動読み込みプリセットを削除" + +#~ msgid "Listen" +#~ msgstr "聞く" + +#~ msgid "Blend Harmonics" +#~ msgstr "ブレンドハーモニクス" + +#~ msgid "3rd" +#~ msgstr "3rd" + +#~ msgid "2nd" +#~ msgstr "2nd" + +#~ msgid "Amount" +#~ msgstr "量" + +#~ msgid "Harmonics" +#~ msgstr "ハーモニクス" + +#~ msgid "Scope" +#~ msgstr "範囲" + +#~ msgid "Floor" +#~ msgstr "フロア" + +#~ msgid "Floor Value" +#~ msgstr "フロア値" + +#~ msgid "Link" +#~ msgstr "リンク" + +#~ msgid "Application Name" +#~ msgstr "アプリケーション名" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "除外アプリケーションに追加" + +#~ msgid "Excluded Applications List" +#~ msgstr "除外されたアプリケーションリスト" + +#~ msgid "Show Excluded Applications" +#~ msgstr "除外されたアプリケーションを表示" + +#~ msgid "Compressor" +#~ msgstr "コンプレッサー" + +#~ msgid "Mode" +#~ msgstr "モード" + +#~ msgid "Downward" +#~ msgstr "下方向" + +#~ msgid "Upward" +#~ msgstr "上方向" + +#~ msgid "Boosting" +#~ msgstr "ブースト" + +#~ msgid "Compression Mode" +#~ msgstr "圧縮モード" + +#~ msgid "Boost Threshold" +#~ msgstr "ブーストしきい値" + +#~ msgid "Boost Amount" +#~ msgstr "ブースト量" + +#~ msgid "Attack" +#~ msgstr "アタック" + +#~ msgid "Time" +#~ msgstr "時間" + +#~ msgid "Threshold" +#~ msgstr "しきい値" + +#~ msgid "Attack Time" +#~ msgstr "アタックタイム" + +#~ msgid "Attack Threshold" +#~ msgstr "アタックしきい値" + +#~ msgid "Release" +#~ msgstr "リリース" + +#~ msgid "Release Time" +#~ msgstr "リリース時間" + +#~ msgid "Release Threshold" +#~ msgstr "リリースしきい値" + +#~ msgid "Ratio" +#~ msgstr "比率" + +#~ msgid "Knee" +#~ msgstr "ニー" + +#~ msgid "Makeup" +#~ msgstr "メイクアップ" + +#~ msgid "Sidechain" +#~ msgstr "サイドチェーン" + +#~ msgid "Peak" +#~ msgstr "ピーク" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "ローパス" + +#~ msgid "Uniform" +#~ msgstr "ユニフォーム" + +#~ msgid "Sidechain Mode" +#~ msgstr "サイドチェーンモード" + +#~ msgid "Source" +#~ msgstr "ソース" + +#~ msgid "Middle" +#~ msgstr "中央" + +#~ msgid "Side" +#~ msgstr "サイド" + +#~ msgid "Left" +#~ msgstr "左" + +#~ msgid "Right" +#~ msgstr "右" + +#~ msgid "Sidechain Source" +#~ msgstr "サイドチェーンソース" + +#~ msgid "Type" +#~ msgstr "タイプ" + +#~ msgid "Feed-forward" +#~ msgstr "フィードフォワード" + +#~ msgid "Feed-back" +#~ msgstr "フィードバック" + +#~ msgid "External" +#~ msgstr "外部" + +#~ msgid "Sidechain Type" +#~ msgstr "サイドチェーンタイプ" + +#~ msgid "Input Device" +#~ msgstr "入力デバイス" + +#~ msgid "PreAmplification" +#~ msgstr "プリアンプリーション" + +#~ msgid "Reactivity" +#~ msgstr "反応性" + +#~ msgid "Lookahead" +#~ msgstr "ルックアヘッド" + +#~ msgid "Sidechain Filters" +#~ msgstr "サイドチェーンフィルター" + +#~ msgid "High-Pass" +#~ msgstr "ハイパス" + +#~ msgid "Frequency" +#~ msgstr "周波数" + +#~ msgid "Off" +#~ msgstr "オフ" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "ハイパスフィルターモード" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "ハイパスフィルター周波数" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "ローパスフィルターモード" + +#~ msgid "Gain" +#~ msgstr "ゲイン" + +#~ msgid "Envelope" +#~ msgstr "包装" + +#~ msgid "Curve" +#~ msgstr "カーブ" + +#~ msgid "L" +#~ msgstr "L" + +#~ msgid "Left Channel" +#~ msgstr "左チャンネル" + +#~ msgid "R" +#~ msgstr "R" + +#~ msgid "Right Channel" +#~ msgstr "右チャンネル" + +#~ msgid "Impulses" +#~ msgstr "インパルス" + +#~ msgid "Combine" +#~ msgstr "コンバイン" + +#~ msgid "Stereo Width" +#~ msgstr "ステレオ幅" + +#~ msgid "Spectrum" +#~ msgstr "スペクトラム" + +#~ msgid "Log Scale" +#~ msgstr "ログスケール" + +#~ msgid "Autogain" +#~ msgstr "オートゲイン" + +#~ msgid "Rate" +#~ msgstr "レート" + +#~ msgid "Samples" +#~ msgstr "サンプル" + +#~ msgid "Duration" +#~ msgstr "長さ" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "インパルス応答をコンバイン" + +#~ msgid "First Kernel" +#~ msgstr "ファーストカーネル" + +#~ msgid "Second Kernel" +#~ msgstr "セカンドカーネル" + +#~ msgid "Output File Name" +#~ msgstr "出力ファイル名" + +#~ msgid "Combined Kernel Name" +#~ msgstr "複合カーネル名" + +#~ msgid "Import Impulse" +#~ msgstr "インパルスをインポート" + +#~ msgid "Search" +#~ msgstr "検索" + +#~ msgid "Search Impulse File" +#~ msgstr "インパルスファイルを検索" + +#~ msgid "Impulse Files List" +#~ msgstr "インパルスファイル一覧" + +#~ msgid "Default" +#~ msgstr "デフォルト" + +#~ msgid "Cutoff" +#~ msgstr "カットオフ" + +#~ msgid "Feed" +#~ msgstr "フィード" + +#~ msgid "Bypass" +#~ msgstr "バイパス" + +#~ msgid "Mute" +#~ msgstr "ミュート" + +#~ msgid "Detection" +#~ msgstr "検出" + +#~ msgid "Wide" +#~ msgstr "ワイド" + +#~ msgid "Split" +#~ msgstr "スプリット" + +#~ msgid "F1 Split" +#~ msgstr "F1 スプリット" + +#~ msgid "Frequency 1 Split" +#~ msgstr "周波数 1 スプリット" + +#~ msgid "F2 Peak" +#~ msgstr "F2 ピーク" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "周波数 2 ピーク" + +#~ msgid "F1 Gain" +#~ msgstr "F1 ゲイン" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "周波数 1 ゲイン" + +#~ msgid "F2 Level" +#~ msgstr "F2 レベル" + +#~ msgid "Frequency 2 Level" +#~ msgstr "周波数 2 レベル" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2 ピーク Q" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "周波数 2 ピーク Q" + +#~ msgid "Laxity" +#~ msgstr "ゆるみ" + +#~ msgid "Detected" +#~ msgstr "検出" + +#~ msgid "Reduction" +#~ msgstr "減少" + +#~ msgid "Frame Size" +#~ msgstr "フレームサイズ" + +#~ msgid "Filter Length" +#~ msgstr "フィルター長" + +#~ msgid "Excluded Apps" +#~ msgstr "除外されたアプリ" + +#~ msgid "Bands" +#~ msgstr "バンド" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "チャンネルの分割" + +#~ msgid "Flat Response" +#~ msgstr "フラットレスポンス" + +#~ msgid "Calculate Frequencies" +#~ msgstr "周波数の計算" + +#~ msgid "Load APO Preset" +#~ msgstr "APO プリセットを読み込む" + +#~ msgid "Bell" +#~ msgstr "ベル" + +#~ msgid "High Pass" +#~ msgstr "ハイパス" + +#~ msgid "High Shelf" +#~ msgstr "ハイシェルフ" + +#~ msgid "Low Pass" +#~ msgstr "ローパス" + +#~ msgid "Low Shelf" +#~ msgstr "ローシェルフ" + +#~ msgid "Notch" +#~ msgstr "ノッチ" + +#~ msgid "Resonance" +#~ msgstr "反響" + +#~ msgid "All Pass" +#~ msgstr "オールパス" + +#~ msgid "Band Type" +#~ msgstr "バンドタイプ" + +#~ msgid "Band Mode" +#~ msgstr "バンドモード" + +#~ msgid "Slope" +#~ msgstr "スロープ" + +#~ msgid "Band Slope" +#~ msgstr "バンドスロープ" + +#~ msgid "Width" +#~ msgstr "幅" + +#~ msgid "Quality" +#~ msgstr "品質" + +#~ msgid "Solo" +#~ msgstr "ソロ" + +#~ msgid "Ceil" +#~ msgstr "切り上げ" + +#~ msgid "Ceil Value" +#~ msgstr "切り上げ値" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "アクセス" + +#~ msgid "Description" +#~ msgstr "説明" + +#~ msgid "Remove this model file" +#~ msgstr "このモデルファイルを削除" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct ローパス" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct ローパス" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct ローパス" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct ハイパス" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct ハイパス" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct ハイパス" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct バンドパス" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct バンドパス" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct バンドパス" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct バンドリジェクト" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct バンドリジェクト" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct バンドリジェクト" + +#~ msgid "Inertia" +#~ msgstr "慣性" + +#~ msgid "Gate" +#~ msgstr "ゲート" + +#~ msgid "Zone" +#~ msgstr "ゾーン" + +#~ msgid "Hysteresis" +#~ msgstr "ヒステリシス" + +#~ msgid "Attack Zone Start" +#~ msgstr "アタックゾーンスタート" + +#~ msgid "Release Zone Start" +#~ msgstr "リリースゾーン開始" + +#~ msgid "Internal" +#~ msgstr "内部" + +#~ msgid "Gating" +#~ msgstr "ゲーティング" + +#~ msgid "Oversampling" +#~ msgstr "オーバーサンプリング" + +#~ msgid "Dither" +#~ msgstr "ディザ" + +#~ msgid "Herm Thin" +#~ msgstr "Herm Thin" + +#~ msgid "Herm Wide" +#~ msgstr "Herm Wide" + +#~ msgid "Herm Tail" +#~ msgstr "Herm Tail" + +#~ msgid "Herm Duck" +#~ msgstr "Herm Duck" + +#~ msgid "Exp Thin" +#~ msgstr "Exp Thin" + +#~ msgid "Exp Wide" +#~ msgstr "Exp Wide" + +#~ msgid "Exp Tail" +#~ msgstr "Exp Tail" + +#~ msgid "Exp Duck" +#~ msgstr "Exp Duck" + +#~ msgid "Line Thin" +#~ msgstr "Line Thin" + +#~ msgid "Line Wide" +#~ msgstr "Line Wide" + +#~ msgid "Line Tail" +#~ msgstr "Line Tail" + +#~ msgid "Line Duck" +#~ msgstr "Line Duck" + +#~ msgid "None" +#~ msgstr "なし" + +#~ msgid "Half x2(2L)" +#~ msgstr "ハーフ ×2(2L)" + +#~ msgid "Half x2(3L)" +#~ msgstr "ハーフ ×2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "ハーフ ×3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "ハーフ ×3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "ハーフ ×4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "ハーフ ×4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "ハーフ ×6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "ハーフ ×6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "ハーフ ×8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "ハーフ ×8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "フル x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "フル x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "フル ×3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "フル ×3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "フル ×4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "フル ×4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "フル ×6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "フル ×6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "フル ×8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "フル ×8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "SC プリアンプ" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "サイドチェーン PreAmplification" + +#~ msgid "Boost" +#~ msgstr "ブースト" + +#~ msgid "Stereo Link" +#~ msgstr "ステレオリンク" + +#~ msgid "External Sidechain" +#~ msgstr "外部サイドチェーン" + +#~ msgid "External Sidechain Source" +#~ msgstr "外部サイドチェーンソース" + +#~ msgid "Auto Leveling" +#~ msgstr "オートレベリング" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "オートレベリングアタック" + +#~ msgid "Auto Leveling Release" +#~ msgstr "オートレベリングリリース" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "オートレベリングニー" + +#~ msgid "Gain Left" +#~ msgstr "左ゲイン" + +#~ msgid "Gain Right" +#~ msgstr "右ゲイン" + +#~ msgid "Sidechain Left" +#~ msgstr "左サイドチェーン" + +#~ msgid "Sidechain Right" +#~ msgstr "右サイドチェーン" + +#~ msgid "Standard" +#~ msgstr "標準" + +#~ msgid "Flat" +#~ msgstr "フラット" + +#~ msgid "FFT Size" +#~ msgstr "FFT サイズ" + +#~ msgid "Fast Fourier Transform Size" +#~ msgstr "高速フーリエ変換サイズ" + +#~ msgid "Output Volume" +#~ msgstr "出力ボリューム" + +#~ msgid "Ceiling" +#~ msgstr "シーリング" + +#~ msgid "Operating Mode" +#~ msgstr "動作モード" + +#~ msgid "Classic" +#~ msgstr "クラシック" + +#~ msgid "Modern" +#~ msgstr "モダン" + +#~ msgid "Sidechain Boost" +#~ msgstr "サイドチェーンブースト" + +#~ msgid "Pink BT" +#~ msgstr "ピンク BT" + +#~ msgid "Pink MT" +#~ msgstr "ピンク MT" + +#~ msgid "Brown BT" +#~ msgstr "ブラウン BT" + +#~ msgid "Brown MT" +#~ msgstr "ブラウン MT" + +#~ msgid "Bands List" +#~ msgstr "バンドリスト" + +#~ msgid "Band 1" +#~ msgstr "バンド 1" + +#~ msgid "Band 2" +#~ msgstr "バンド 2" + +#~ msgid "Band 3" +#~ msgstr "バンド 3" + +#~ msgid "Band 4" +#~ msgstr "バンド 4" + +#~ msgid "Band 5" +#~ msgstr "バンド 5" + +#~ msgid "Band 6" +#~ msgstr "バンド 6" + +#~ msgid "Band 7" +#~ msgstr "バンド 7" + +#~ msgid "Band 8" +#~ msgstr "バンド 8" + +#~ msgid "Band Start" +#~ msgstr "バンドスタート" + +#~ msgid "Band End" +#~ msgstr "バンドエンド" + +#~ msgid "Band Compression Mode" +#~ msgstr "バンド圧縮モード" + +#~ msgid "Band Bypass" +#~ msgstr "バンドバイパス" + +#~ msgid "Band Sidechain Options" +#~ msgstr "バンドサイドチェーンオプション" + +#~ msgid "Low-Cut Filter" +#~ msgstr "ローカットフィルター" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "ローカットフィルター周波数" + +#~ msgid "High-Cut Filter" +#~ msgstr "ハイカットフィルター" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "ハイカットフィルター周波数" + +#~ msgid "PreAmp" +#~ msgstr "プリアンプ" + +#~ msgid "Band Gain" +#~ msgstr "バンドゲイン" + +#~ msgid "Band Envelope" +#~ msgstr "バンドエンベロープ" + +#~ msgid "Band Curve" +#~ msgstr "バンドカーブ" + +#~ msgid "Split Mode" +#~ msgstr "スプリットモード" + +#~ msgid "Split 1/2" +#~ msgstr "スプリット 1/2" + +#~ msgid "Split Frequency 1" +#~ msgstr "スプリット周波数 1" + +#~ msgid "Split 2/3" +#~ msgstr "スプリット 2/3" + +#~ msgid "Split Frequency 2" +#~ msgstr "スプリット周波数 2" + +#~ msgid "Split 3/4" +#~ msgstr "スプリット 3/4" + +#~ msgid "Split Frequency 3" +#~ msgstr "スプリット周波数 3" + +#~ msgid "Sub Band" +#~ msgstr "サブバンド" + +#~ msgid "Band 1 Bypass" +#~ msgstr "バンド 1 バイパス" + +#~ msgid "Band 1 Solo" +#~ msgstr "バンド 1 ソロ" + +#~ msgid "Band 1 Detection" +#~ msgstr "バンド 1 検出" + +#~ msgid "Band 1 Attack" +#~ msgstr "バンド 1 アタック" + +#~ msgid "Band 1 Release" +#~ msgstr "バンド 1 リリース" + +#~ msgid "Band 1 Threshold" +#~ msgstr "バンド 1 しきい値" + +#~ msgid "Band 1 Ratio" +#~ msgstr "バンド 1 比率" + +#~ msgid "Band 1 Knee" +#~ msgstr "バンド 1 ニー" + +#~ msgid "Band 1 Makeup" +#~ msgstr "バンド 1 メイクアップ" + +#~ msgid "Max Reduction" +#~ msgstr "最大リダクション" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "バンド 1 最大リダクション" + +#~ msgid "Low Band" +#~ msgstr "ローバンド" + +#~ msgid "Band 2 Bypass" +#~ msgstr "バンド 2 バイパス" + +#~ msgid "Band 2 Solo" +#~ msgstr "バンド 2 ソロ" + +#~ msgid "Band 2 Detection" +#~ msgstr "バンド 2 検出" + +#~ msgid "Band 2 Attack" +#~ msgstr "バンド 2 アタック" + +#~ msgid "Band 2 Release" +#~ msgstr "バンド 2 リリース" + +#~ msgid "Band 2 Threshold" +#~ msgstr "バンド 2 しきい値" + +#~ msgid "Band 2 Ratio" +#~ msgstr "バンド 2 比率" + +#~ msgid "Band 2 Knee" +#~ msgstr "バンド 2 ニー" + +#~ msgid "Band 2 Makeup" +#~ msgstr "バンド 2 メイクアップ" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "バンド 2 最大リダクション" + +#~ msgid "Mid Band" +#~ msgstr "ミッドバンド" + +#~ msgid "Band 3 Bypass" +#~ msgstr "バンド 3 バイパス" + +#~ msgid "Band 3 Solo" +#~ msgstr "バンド 3 ソロ" + +#~ msgid "Band 3 Detection" +#~ msgstr "バンド 3 検出" + +#~ msgid "Band 3 Attack" +#~ msgstr "バンド 3 アタック" + +#~ msgid "Band 3 Release" +#~ msgstr "バンド 3 リリース" + +#~ msgid "Band 3 Threshold" +#~ msgstr "バンド 3 しきい値" + +#~ msgid "Band 3 Ratio" +#~ msgstr "バンド 3 比率" + +#~ msgid "Band 3 Knee" +#~ msgstr "バンド 3 ニー" + +#~ msgid "Band 3 Makeup" +#~ msgstr "バンド 3 メイクアップ" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "バンド 3 最大リダクション" + +#~ msgid "High Band" +#~ msgstr "ハイバンド" + +#~ msgid "Band 4 Bypass" +#~ msgstr "バンド 4 バイパス" + +#~ msgid "Band 4 Solo" +#~ msgstr "バンド 4 ソロ" + +#~ msgid "Band 4 Detection" +#~ msgstr "バンド 4 検出" + +#~ msgid "Band 4 Attack" +#~ msgstr "バンド 4 アタック" + +#~ msgid "Band 4 Release" +#~ msgstr "バンド 4 リリース" + +#~ msgid "Band 4 Threshold" +#~ msgstr "バンド 4 しきい値" + +#~ msgid "Band 4 Ratio" +#~ msgstr "バンド 4 比率" + +#~ msgid "Band 4 Knee" +#~ msgstr "バンド 4 ニー" + +#~ msgid "Band 4 Makeup" +#~ msgstr "バンド 4 メイクアップ" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "バンド 4 最大リダクション" + +#~ msgid "General" +#~ msgstr "一般" + +#~ msgid "Device Management" +#~ msgstr "デバイス管理" + +#~ msgid "" +#~ "It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +#~ "external applications (e.g. Gnome Settings and Plasma System Settings)." +#~ msgstr "" +#~ "外部アプリケーション (Gnome 設定や Plasma システム設定など) で " +#~ "EasyEffects の Sink/Source をデフォルトデバイスとして設定しないことをお勧" +#~ "めします。" + +#~ msgid "Use Default Input" +#~ msgstr "デフォルトの入力を使用" + +#~ msgid "Custom Input Device" +#~ msgstr "カスタム入力デバイス" + +#~ msgid "Use Default Output" +#~ msgstr "デフォルトの出力を使用" + +#~ msgid "Custom Output Device" +#~ msgstr "カスタム出力デバイス" + +#~ msgid "Server Information" +#~ msgstr "サーバー情報" + +#~ msgid "Header Version" +#~ msgstr "ヘッダーバージョン" + +#~ msgid "Library Version" +#~ msgstr "ライブラリバージョン" + +#~ msgid "Sampling Rate" +#~ msgstr "サンプリングレート" + +#~ msgid "Minimum Quantum" +#~ msgstr "最小クォンタム" + +#~ msgid "Maximum Quantum" +#~ msgstr "最大クォンタム" + +#~ msgid "Default Quantum" +#~ msgstr "デフォルトクォンタム" + +#~ msgid "Presets Autoloading" +#~ msgstr "プリセット自動読み込み" + +#~ msgid "Output Devices" +#~ msgstr "出力デバイス" + +#~ msgid "Output Presets" +#~ msgstr "出力プリセット" + +#~ msgid "Create Association" +#~ msgstr "アソシエーションを作成" + +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "自動読み込み出力プリセットを追加" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "自動読み込み出力プリセットリスト" + +#~ msgid "Input Devices" +#~ msgstr "入力デバイス" + +#~ msgid "Input Presets" +#~ msgstr "入力プリセット" + +#~ msgid "Add Autoloading Input Preset" +#~ msgstr "自動読み込み入力プリセットを追加" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "自動読み込み入力プリセットリスト" + +#~ msgid "Modules" +#~ msgstr "モジュール" + +#~ msgid "Modules List" +#~ msgstr "モジュールリスト" + +#~ msgid "Clients" +#~ msgstr "クライアント" + +#~ msgid "Clients List" +#~ msgstr "クライアントリスト" + +#~ msgid "Test Signal" +#~ msgstr "テスト信号" + +#~ msgid "State" +#~ msgstr "状態" + +#~ msgid "Enabled" +#~ msgstr "有効" + +#~ msgid "Properties" +#~ msgstr "プロパティ" + +#~ msgid "Channels" +#~ msgstr "チャンネル" + +#~ msgid "Both" +#~ msgstr "両方" + +#~ msgid "Both Channels" +#~ msgstr "両方チャンネル" + +#~ msgid "Waveform" +#~ msgstr "波形" + +#~ msgid "Sine Wave" +#~ msgstr "正弦波" + +#~ msgid "White Noise" +#~ msgstr "ホワイトノイズ" + +#~ msgid "High Speed" +#~ msgstr "高速" + +#~ msgid "High Quality" +#~ msgstr "高品質" + +#~ msgid "High Consistency" +#~ msgstr "高い一貫性" + +#~ msgid "Formant" +#~ msgstr "フォルマント" + +#~ msgid "Shifted" +#~ msgstr "シフト" + +#~ msgid "Preserved" +#~ msgstr "保存済み" + +#~ msgid "Transients" +#~ msgstr "トランジェント" + +#~ msgid "Crisp" +#~ msgstr "鮮明" + +#~ msgid "Mixed" +#~ msgstr "ミックス" + +#~ msgid "Smooth" +#~ msgstr "スムース" + +#~ msgid "Detector" +#~ msgstr "ディテクター" + +#~ msgid "Compound" +#~ msgstr "化合物" + +#~ msgid "Percussive" +#~ msgstr "パーカッシブ" + +#~ msgid "Soft" +#~ msgstr "ソフト" + +#~ msgid "Phase" +#~ msgstr "フェーズ" + +#~ msgid "Laminar" +#~ msgstr "ラミナー" + +#~ msgid "Independent" +#~ msgstr "独立" + +#~ msgid "Cents" +#~ msgstr "セント" + +#~ msgid "Semitones" +#~ msgstr "半音" + +#~ msgid "Octaves" +#~ msgstr "オクターブ" + +#~ msgid "Remove this effect" +#~ msgstr "このエフェクトを削除" + +#~ msgid "Enable/disable this effect" +#~ msgstr "このエフェクトの有効化/無効化" + +#~ msgid "Change the position of this effect" +#~ msgstr "このエフェクトの位置を変更する" + +#~ msgid "Add Effect" +#~ msgstr "エフェクトの追加" + +#~ msgid "Used Plugins List" +#~ msgstr "使用プラグインリスト" + +#~ msgid "No Effects" +#~ msgstr "エフェクトなし" + +#~ msgid "Audio Stream Not Modified" +#~ msgstr "オーディオストリームは変更されていません" + +#~ msgid "Search Plugin" +#~ msgstr "プラグインを検索" + +#~ msgid "Plugins List" +#~ msgstr "プラグインリスト" + +#~ msgid "_General" +#~ msgstr "_一般" + +#~ msgid "Service" +#~ msgstr "サービス" + +#~ msgid "Launch Service at System Startup" +#~ msgstr "システム起動時にサービスを起動" + +#~ msgid "Shutdown on Window Closing" +#~ msgstr "ウィンドウを閉じるときにシャットダウン" + +#~ msgid "Audio" +#~ msgstr "オーディオ" + +#~ msgid "Process All Output Streams" +#~ msgstr "すべての出力を処理" + +#~ msgid "Process All Input Streams" +#~ msgstr "すべての入力を処理" + +#~ msgid "Ignore Streams from Monitor of Devices" +#~ msgstr "デバイスのモニターからのストリームを無視" + +#~ msgid "Use Cubic Volume" +#~ msgstr "キュービックボリュームを使用" + +#~ msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +#~ msgstr "起動時に EasyEffects 仮想デバイスの音量をリセット" + +#~ msgid "Inactivity Timeout" +#~ msgstr "非アクティブタイムアウト" + +#~ msgid "Style" +#~ msgstr "スタイル" + +#~ msgid "Use Dark Theme" +#~ msgstr "ダークテーマを使用" + +#~ msgid "Hide Menus on Outside Clicks" +#~ msgstr "外側クリックでメニュー非表示" + +#~ msgid "_Spectrum" +#~ msgstr "_スペクトラム" + +#~ msgid "Shape" +#~ msgstr "形状" + +#~ msgid "Bars" +#~ msgstr "バー" + +#~ msgid "Lines" +#~ msgstr "線" + +#~ msgid "Dots" +#~ msgstr "ドット" + +#~ msgid "Points" +#~ msgstr "ポイント" + +#~ msgid "Height" +#~ msgstr "高さ" + +#~ msgid "Line Width" +#~ msgstr "線幅" + +#~ msgid "Fill" +#~ msgstr "塗りつぶし" + +#~ msgid "Show Bars Border" +#~ msgstr "バーの境界線を表示" + +#~ msgid "Rounded Corners" +#~ msgstr "角丸" + +#~ msgid "Color" +#~ msgstr "色" + +#~ msgid "Lines and Bars" +#~ msgstr "線とバー" + +#~ msgid "Axis Labels" +#~ msgstr "軸ラベル" + +#~ msgid "Frequency Range" +#~ msgstr "周波数範囲" + +#~ msgid "Minimum" +#~ msgstr "最小" + +#~ msgid "Maximum" +#~ msgstr "最大" + +#~ msgid "Load" +#~ msgstr "ロード" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "現在の設定をこのプリセットファイルに保存" + +#~ msgid "Remove this preset file" +#~ msgstr "このプリセットファイルを削除" + +#~ msgid "New Output Preset Name" +#~ msgstr "新規出力プリセット名" + +#~ msgid "Create a new preset" +#~ msgstr "プリセットを作成" + +#~ msgid "Import a preset" +#~ msgstr "プリセットをインポート" + +#~ msgid "Search Output Preset" +#~ msgstr "出力プリセットを検索" + +#~ msgid "Output Presets List" +#~ msgstr "出力プリセットリスト" + +#~ msgid "New Input Preset Name" +#~ msgstr "新規入力プリセット名" + +#~ msgid "Search Input Preset" +#~ msgstr "入力プリセットを検索" + +#~ msgid "Input Presets List" +#~ msgstr "入力プリセットリスト" + +#~ msgid "High Frequency Damping" +#~ msgstr "高周波ダンピング" + +#~ msgid "Room Size" +#~ msgstr "部屋のサイズ" + +#~ msgid "Small" +#~ msgstr "小" + +#~ msgid "Medium" +#~ msgstr "中" + +#~ msgid "Large" +#~ msgstr "大" + +#~ msgid "Tunnel" +#~ msgstr "トンネル" + +#~ msgid "Large/smooth" +#~ msgstr "大/なめらか" + +#~ msgid "Experimental" +#~ msgstr "実験的" + +#~ msgid "Diffusion" +#~ msgstr "拡散" + +#~ msgid "Pre Delay" +#~ msgstr "プリディレイ" + +#~ msgid "Decay Time" +#~ msgstr "減衰時間" + +#~ msgid "Wet Amount" +#~ msgstr "Wet 量" + +#~ msgid "Wet Level" +#~ msgstr "Wet レベル" + +#~ msgid "Dry Amount" +#~ msgstr "Dry 量" + +#~ msgid "Dry Level" +#~ msgstr "Dry レベル" + +#~ msgid "Bass Cut" +#~ msgstr "ベースカット" + +#~ msgid "Treble Cut" +#~ msgstr "高音カット" + +#~ msgid "Ambience" +#~ msgstr "環境" + +#~ msgid "Empty Walls" +#~ msgstr "何もない壁" + +#~ msgid "Room" +#~ msgstr "部屋" + +#~ msgid "Large Empty Hall" +#~ msgstr "何もない大きなホール" + +#~ msgid "Disco" +#~ msgstr "ディスコ" + +#~ msgid "Large Occupied Hall" +#~ msgstr "占有面積の大きいホール" + +#~ msgid "Import Model" +#~ msgstr "モデルのインポート" + +#~ msgid "Models" +#~ msgstr "モデル" + +#~ msgid "Standard Model" +#~ msgstr "標準モデル" + +#~ msgid "RNNoise Models List" +#~ msgstr "RNNoise モデルリスト" + +#~ msgid "Model Not Loaded" +#~ msgstr "モデルがロードされていません" + +#~ msgid "Active Model" +#~ msgstr "アクティブモデル" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "標準 RNNoise モデル" + +#~ msgid "Overview" +#~ msgstr "概要" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "EasyEffects のマニュアルを開く" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "フルスクリーン/フルスクリーンから復元" + +#~ msgid "Close the Window" +#~ msgstr "ウィンドウを閉じる" + +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects を終了" + +#~ msgid "Balance" +#~ msgstr "バランス" + +#~ msgid "Input Balance" +#~ msgstr "入力バランス" + +#~ msgid "Softclip" +#~ msgstr "ソフトクリップ" + +#~ msgid "Softclip Level" +#~ msgstr "ソフトクリップレベル" + +#~ msgid "Stereo Matrix" +#~ msgstr "ステレオマトリックス" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (ステレオデフォルト)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (ステレオからミッドサイド)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (ミッドサイドからステレオ)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (モノラル左チャンネル)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (モノラル右チャンネル)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (モノラル合計 L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (ステレオチャンネル反転)" + +#~ msgid "Stereo Mode" +#~ msgstr "ステレオモード" + +#~ msgid "Invert Phase" +#~ msgstr "位相反転" + +#~ msgid "Side Level" +#~ msgstr "サイドレベル" + +#~ msgid "Side Balance" +#~ msgstr "サイドバランス" + +#~ msgid "Middle Level" +#~ msgstr "中間レベル" + +#~ msgid "Middle Panorama" +#~ msgstr "中間パノラマ" + +#~ msgid "Output Balance" +#~ msgstr "出力バランス" + +#~ msgid "Delay L/R" +#~ msgstr "ディレイ L/R" + +#~ msgid "Delay Left Right" +#~ msgstr "ディレイ 左 右" + +#~ msgid "Stereo Base" +#~ msgstr "ステレオベース" + +#~ msgid "Stereo Phase" +#~ msgstr "ステレオ位相" + +#~ msgid "Running" +#~ msgstr "実行中" + +#~ msgid "Suspended" +#~ msgstr "サスペンド" + +#~ msgid "Idle" +#~ msgstr "アイドル" + +#~ msgid "Creating" +#~ msgstr "作成中" + +#~ msgid "Error" +#~ msgstr "エラー" + +#~ msgid "Unknown" +#~ msgstr "不明" + +#~ msgid "channels" +#~ msgstr "チャンネル" + +#~ msgid "Output Presets: " +#~ msgstr "出力プリセット: " + +#~ msgid "Input Presets: " +#~ msgstr "入力プリセット: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "PipeWire アプリケーション用オーディオエフェクト" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "EasyEffects を終了します。サービスモードで動作しているときに便利です。" + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "プリセットを読み込む。例: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "EasyEffects をリセット。" + +#~ msgid "Hide the Window." +#~ msgstr "ウィンドウを隠す。" + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "グローバルバイパス。1 で有効、2 で無効、3 でステータス取得" + +#~ msgid "Show available presets." +#~ msgstr "利用可能なプリセットを表示します。" + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#~ msgid "The File Is Not Regular" +#~ msgstr "このファイルは正しくありません" + +#~ msgid "The Impulse File May Be Corrupted or Unsupported" +#~ msgstr "" +#~ "インパルスファイルが破損しているか、サポートされていない可能性があります" + +#~ msgid "Only Stereo Impulse Files Are Supported" +#~ msgstr "ステレオインパルスファイルのみサポートされています" + +#~ msgid "Impulse File Not Imported" +#~ msgstr "インパルスファイルがインポートされていません" + +#~ msgid "Import Impulse File" +#~ msgstr "インパルスファイルをインポート" + +#~ msgid "Open" +#~ msgstr "開く" + +#~ msgid "Cancel" +#~ msgstr "キャンセル" + +#~ msgid "Impulse Response" +#~ msgstr "インパルスレスポンス" + +#~ msgid "Load Impulse" +#~ msgstr "インパルスを読み込み" + +#~ msgid "Remove Impulse" +#~ msgstr "インパルスを削除" + +#~ msgid "No Impulse File Loaded" +#~ msgstr "読み込まれたインパルスファイルはありません" + +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "インパルスファイルを読み込めません" + +#~ msgid "Recorders" +#~ msgstr "レコーダー" + +#~ msgid "Players" +#~ msgstr "プレイヤー" + +#~ msgid "Effects" +#~ msgstr "エフェクト" + +#~ msgid "infinity" +#~ msgstr "無限大" + +#~ msgid "Import APO Preset File" +#~ msgstr "APO プリセットファイルをインポート" + +#~ msgid "APO Presets" +#~ msgstr "APO プリセット" + +#~ msgid "" +#~ "APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +#~ msgstr "" +#~ "APO プリセットが読み込まれていません。ファイルフォーマットが間違っている可" +#~ "能性があります。内容を確認してください。" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "自動読み込みプリセットを削除" + +#~ msgid "Remove" +#~ msgstr "削除" + +#~ msgid "Output Device" +#~ msgstr "出力デバイス" + +#~ msgid "Add" +#~ msgstr "追加" + +#~ msgid "Import Preset" +#~ msgstr "プリセットをインポート" + +#~ msgid "" +#~ "Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To " +#~ "The Standard Model." +#~ msgstr "" +#~ "選択されたモデルが読み込まれていません。そのフォーマットはサポートされてい" +#~ "ない可能性があります。標準モデルに戻しました。" + +#~ msgid "Import Model File" +#~ msgstr "モデルファイルをインポート" + +#~ msgid "RNNoise Models" +#~ msgstr "RNNoise モデル" + +#~ msgid "Bass Enhancer" +#~ msgstr "ベースエンハンサー" + +#~ msgid "Bass Loudness" +#~ msgstr "低音ラウドネス" + +#~ msgid "Convolver" +#~ msgstr "コンボルバー" + +#~ msgid "Crossfeed" +#~ msgstr "クロスフィード" + +#~ msgid "Crystalizer" +#~ msgstr "クリスタライザー" + +#~ msgid "Deesser" +#~ msgstr "ディエッサー" + +#~ msgid "Delay" +#~ msgstr "ディレイ" + +#~ msgid "Echo Canceller" +#~ msgstr "エコーキャンセラー" + +#~ msgid "Equalizer" +#~ msgstr "イコライザー" + +#~ msgid "Exciter" +#~ msgstr "エキサイター" + +#~ msgid "Filter" +#~ msgstr "フィルター" + +#~ msgid "Limiter" +#~ msgstr "リミッター" + +#~ msgid "Maximizer" +#~ msgstr "マキシマイザー" + +#~ msgid "Multiband Compressor" +#~ msgstr "マルチバンドコンプレッサー" + +#~ msgid "Multiband Gate" +#~ msgstr "マルチバンドゲート" + +#~ msgid "Pitch" +#~ msgstr "ピッチ" + +#~ msgid "Reverberation" +#~ msgstr "リバーブ" + +#~ msgid "Noise Reduction" +#~ msgstr "ノイズリダクション" + +#~ msgid "Stereo Tools" +#~ msgstr "ステレオツール" + +#~ msgid "Close (Press ESC)" +#~ msgstr "閉じる (Esc キーを押す)" + +#~ msgid "Average" +#~ msgstr "平均" + +#~ msgid "Failed" +#~ msgstr "失敗" + +#~ msgid "Use Default" +#~ msgstr "デフォルトを使用" + +#~ msgid "Remove this plugin" +#~ msgstr "このプラグインを削除" + +#~ msgid "Import Presets" +#~ msgstr "プリセットをインポート" + +#~ msgid "Start Service at Login" +#~ msgstr "ログイン時にサービスを開始" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "起動時にデバイスの音量をリセット" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "アクティブモデル" + +#~ msgid "Add to Blocklist" +#~ msgstr "ブロックリストに追加" + +#~ msgid "Blocklist" +#~ msgstr "ブロックリスト" + +#~ msgid "Add Plugin" +#~ msgstr "プラグインを追加" + +#~ msgid "Speakers" +#~ msgstr "スピーカー" + +#~ msgid "Microphone" +#~ msgstr "マイク" + +#~ msgid "Plugins" +#~ msgstr "プラグイン" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "有効" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "有効" + +#~ msgid "Format" +#~ msgstr "フォーマット" + +#~ msgid "Latency" +#~ msgstr "レイテンシー" + +#~ msgid "idle" +#~ msgstr "アイドル" + +#~ msgid "Faster" +#~ msgstr "より速く" + +#~ msgid "Preserve Formant" +#~ msgstr "フォルマントを保持" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" diff --git a/po/news/km.po b/po/news/km.po new file mode 100644 index 0000000..66c76dc --- /dev/null +++ b/po/news/km.po @@ -0,0 +1,734 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" diff --git a/po/news/ko.po b/po/news/ko.po new file mode 100644 index 0000000..67a745c --- /dev/null +++ b/po/news/ko.po @@ -0,0 +1,1609 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-02-19 08:54+0000\n" +"Last-Translator: OctopusET \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.11-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "PipeWire 에서 작동하는 음향효과 프로그램" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects는 고급 오디오 처리 도구 입니다. 이퀄라이저, 리미터, 컴프레서, 리" +"버브 툴 등이 포함되며, 이외에도 여러가지 플러그인이 있습니다. 예를 들자면 스" +"펙트럼 분석기도 내장되어 있습니다." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects는 PulseEffects의 후속 프로젝트 입니다. EasyEffects는 PipeWire 만" +"을 지원 합니다. PulseAudio를 사용하는 경우 PulseEffects를 사용하십시오." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"EasyEffects는 기본 PipeWire 사운드 서버를 사용하므로 대부분의 응용 프로그램에" +"서 작동합니다. 지원되는 모든 응용 프로그램은 메인 화면에 표시되며 각각 개별적" +"으로 활성화할 수 있습니다." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"EasyEffects는 음향 출력을 처리할 뿐만 아니라 마이크 등의 입력 장치에도 음향효" +"과를 걸 수 있습니다. 예를 들어 오디오 녹음 할 때 유용하며 음성 대화 시에도 효" +"과를 발휘합니다." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"EasyEffects를 시작하면 마지막 세션에서 사용된 설정이 적용됩니다. 현재 설정을 " +"모두 프로파일로 저장할 수도 있습니다." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "두 개의 오디오 출력 프로그램을 보여주는 메인 페이지" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "오디오 컨트롤을 보여주는 bass enhancer 페이지" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "오디오 컨트롤을 보여주는 convolver 페이지" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "피치 플러그인의 인터페이스가 개선되었습니다" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "이제 응용 프로그램 아이콘이 QT를 사용하는 데스크톱과 호환됩니다." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" +"스트림이 설정하는 경우 차단 목록 코드는 `application.id` 태그를 사용합니다." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +#, fuzzy +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" +"마우스 스크롤 문제를 방지하려면 `재생/녹음`에 표시된 애플리케이션 목록의 항목" +"을 스크롤하십시오" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"크로스 피드 필터는 PipeWire의 동적 레이턴시 스위치에 잘 대응합니다. 이제 볼" +"륨 레벨 점프가 발생하지 않습니다." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "모노 마이크가 EasyEffects에서 제대로 작동하지 않던 버그를 수정했습니다" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "PipeWire 다음 릴리스 `0.3.44`를 지원" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "이 릴리스에는 다음 기능이 추가되었습니다:" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "탭에 더 이상 볼륨 스케일이 표시되지 않습니다. 문제 및 해결 방법에 대한 자" +#~ "세한 내용은 #1211에서 확인할 수 있습니다." + +#~ msgid "and #1427" +#~ msgstr "그리고 #1427" + +#~ msgid "This release fixes the following bug:" +#~ msgstr "이 릴리스는 다음 버그를 수정합니다:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "이 릴리스에는 다음 기능이 추가되었습니다:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "이퀄라이저, 컴프레서 그리고 기타 오디오 효과" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "리미터;컴프레서;리버브;이퀄라이저;자동음량조절;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"프리셋\"" + +#~ msgid "Mute Application" +#~ msgstr "응용 프로그램 음소거" + +#~ msgid "Application Volume" +#~ msgstr "응용 프로그램 음량" + +#~ msgid "Presets" +#~ msgstr "프리셋" + +#~ msgid "Presets Menu" +#~ msgstr "프리셋 메뉴" + +#~ msgid "Global Bypass" +#~ msgstr "전역 Bypass" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects 윈도우" + +#~ msgid "Applications List" +#~ msgstr "응용 프로그램 목록" + +#~ msgid "Target" +#~ msgstr "대상" + +#~ msgid "Reference" +#~ msgstr "참조" + +#~ msgid "Momentary" +#~ msgstr "Momentary" + +#~ msgid "Short-Term" +#~ msgstr "Short-Term" + +#~ msgid "Integrated" +#~ msgstr "Integrated" + +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Geometric Mean" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Geometric Mean" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Geometric Mean" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Geometric Mean" + +#~ msgid "Reset History" +#~ msgstr "히스토리 초기화" + +#, fuzzy +#~ msgid "Relative" +#~ msgstr "Relative" + +#~ msgid "Range" +#~ msgstr "Range" + +#~ msgid "Loudness" +#~ msgstr "Loudness" + +#~ msgid "Output Gain" +#~ msgstr "아웃풋 게인" + +#~ msgid "Input" +#~ msgstr "인풋" + +#~ msgid "Plugin Input Gain" +#~ msgstr "플러그인 인풋 게인" + +#~ msgid "Output" +#~ msgstr "아웃풋" + +#~ msgid "Plugin Output Gain" +#~ msgstr "플러그인 아웃풋 게인" + +#~ msgid "Reset" +#~ msgstr "리셋" + +#, fuzzy +#~ msgid "Using" +#~ msgstr "다음 사용 중" + +#~ msgid "Device" +#~ msgstr "장치" + +#~ msgid "Name" +#~ msgstr "이름" + +#~ msgid "Profile" +#~ msgstr "프로필" + +#~ msgid "Preset" +#~ msgstr "프리셋" + +#, fuzzy +#~ msgid "Listen" +#~ msgstr "듣는 중" + +#~ msgid "Blend Harmonics" +#~ msgstr "Blend Harmonics" + +#~ msgid "3rd" +#~ msgstr "3rd" + +#~ msgid "2nd" +#~ msgstr "2nd" + +#, fuzzy +#~ msgid "Amount" +#~ msgstr "Amount" + +#, fuzzy +#~ msgid "Harmonics" +#~ msgstr "Harmonics" + +#~ msgid "Scope" +#~ msgstr "Scope" + +#~ msgid "Floor" +#~ msgstr "Floor" + +#~ msgid "Floor Value" +#~ msgstr "Floor Value" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "응용 프로그램 제외" + +#~ msgid "Excluded Applications List" +#~ msgstr "제외된 프로그램 목록" + +#~ msgid "Show Excluded Applications" +#~ msgstr "제외된 프로그램 보기" + +#~ msgid "Compressor" +#~ msgstr "컴프레서" + +#~ msgid "Mode" +#~ msgstr "모드" + +#~ msgid "Downward" +#~ msgstr "Downward" + +#~ msgid "Upward" +#~ msgstr "Upward" + +#~ msgid "Boosting" +#~ msgstr "증폭" + +#, fuzzy +#~ msgid "Compression Mode" +#~ msgstr "Compression Mode" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Boost Threshold" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Boost Amount" + +#~ msgid "Attack" +#~ msgstr "어택" + +#~ msgid "Time" +#~ msgstr "타임" + +#~ msgid "Threshold" +#~ msgstr "Threshold" + +#~ msgid "Attack Time" +#~ msgstr "어택 타임" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Attack Threshold" + +#~ msgid "Release" +#~ msgstr "릴리스" + +#~ msgid "Release Time" +#~ msgstr "릴리스 타임" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Release Threshold" + +#, fuzzy +#~ msgid "Ratio" +#~ msgstr "Ratio" + +#, fuzzy +#~ msgid "Knee" +#~ msgstr "Knee" + +#, fuzzy +#~ msgid "Makeup" +#~ msgstr "Makeup" + +#, fuzzy +#~ msgid "Sidechain" +#~ msgstr "Sidechain" + +#, fuzzy +#~ msgid "Peak" +#~ msgstr "Peak" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Low-Pass" + +#, fuzzy +#~ msgid "Uniform" +#~ msgstr "Uniform" + +#~ msgid "Sidechain Mode" +#~ msgstr "Sidechain Mode" + +#~ msgid "Source" +#~ msgstr "소스" + +#~ msgid "Middle" +#~ msgstr "중간" + +#~ msgid "Side" +#~ msgstr "Side" + +#~ msgid "Left" +#~ msgstr "왼쪽" + +#~ msgid "Right" +#~ msgstr "오른쪽" + +#~ msgid "Sidechain Source" +#~ msgstr "Sidechain Source" + +#~ msgid "Type" +#~ msgstr "타입" + +#~ msgid "Feed-forward" +#~ msgstr "Feed-forward" + +#~ msgid "Feed-back" +#~ msgstr "피드백" + +#, fuzzy +#~ msgid "External" +#~ msgstr "External" + +#~ msgid "Sidechain Type" +#~ msgstr "Sidechain 타입" + +#~ msgid "Input Device" +#~ msgstr "입력 장치" + +#~ msgid "PreAmplification" +#~ msgstr "PreAmplification" + +#, fuzzy +#~ msgid "Reactivity" +#~ msgstr "Reactivity" + +#, fuzzy +#~ msgid "Lookahead" +#~ msgstr "Lookahead" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Sidechain Filters" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "High-Pass" + +#, fuzzy +#~ msgid "Frequency" +#~ msgstr "Frequency" + +#, fuzzy +#~ msgid "Off" +#~ msgstr "끄기" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "High-Pass Filter Mode" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "High-Pass Filter Frequency" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Low-Pass Filter Mode" + +#, fuzzy +#~ msgid "Gain" +#~ msgstr "Gain" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Envelope" + +#, fuzzy +#~ msgid "Curve" +#~ msgstr "Curve" + +#, fuzzy +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "좌측 채널" + +#, fuzzy +#~ msgid "R" +#~ msgstr "R" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "우측 채널" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Impulses" + +#, fuzzy +#~ msgid "Combine" +#~ msgstr "Combine" + +#, fuzzy +#~ msgid "Stereo Width" +#~ msgstr "Stereo Width" + +#, fuzzy +#~ msgid "Spectrum" +#~ msgstr "스펙트럼" + +#, fuzzy +#~ msgid "Rate" +#~ msgstr "레이트" + +#, fuzzy +#~ msgid "Samples" +#~ msgstr "Samples" + +#, fuzzy +#~ msgid "Duration" +#~ msgstr "Duration" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Combine Impulse Responses" + +#, fuzzy +#~ msgid "First Kernel" +#~ msgstr "First Kernel" + +#, fuzzy +#~ msgid "Second Kernel" +#~ msgstr "Second Kernel" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "출력 파일 이름" + +#, fuzzy +#~ msgid "Combined Kernel Name" +#~ msgstr "Combined Kernel Name" + +#, fuzzy +#~ msgid "Import Impulse" +#~ msgstr "Import Impulse" + +#, fuzzy +#~ msgid "Search" +#~ msgstr "검색" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Impulse 파일 검색" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Impulse 파일 목록" + +#, fuzzy +#~ msgid "Default" +#~ msgstr "기본값" + +#, fuzzy +#~ msgid "Cutoff" +#~ msgstr "Cutoff" + +#, fuzzy +#~ msgid "Feed" +#~ msgstr "Feed" + +#~ msgid "Bypass" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Mute" +#~ msgstr "음소거" + +#, fuzzy +#~ msgid "Detection" +#~ msgstr "Detection" + +#, fuzzy +#~ msgid "Wide" +#~ msgstr "Wide" + +#, fuzzy +#~ msgid "Split" +#~ msgstr "Split" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "F1 Split" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frequency 1 Split" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "F2 Peak" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frequency 2 Peak" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "F1 Gain" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frequency 1 Gain" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "F2 Level" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frequency 2 Level" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "F2 Peak Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frequency 2 Peak Q" + +#, fuzzy +#~ msgid "Laxity" +#~ msgstr "Laxity" + +#, fuzzy +#~ msgid "Detected" +#~ msgstr "Detected" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Reduction" + +#, fuzzy +#~ msgid "Frame Size" +#~ msgstr "Frame Size" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filter Length" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "API" +#~ msgstr "API" + +#, fuzzy +#~ msgid "Access" +#~ msgstr "액세스" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "릴리스 타임" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "External" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "컴프레서" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "바이패스" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "출력 게인" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "APO 프리셋" + +#, fuzzy +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "APO 프리셋" + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "APO 프리셋" + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "장치" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "State" +#~ msgstr "상태" + +#, fuzzy +#~ msgid "Channels" +#~ msgstr "채널" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "채널" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "포멧" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "프리셋" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detection" + +#, fuzzy +#~ msgid "Used Plugins List" +#~ msgstr "사용된 플러그인 목록" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "APO 프리셋" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "APO 프리셋" + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "타겟" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "타겟" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "출력 게인" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "제거" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "출력 게인" + +#, fuzzy +#~ msgid "Running" +#~ msgstr "실행 중" + +#, fuzzy +#~ msgid "Suspended" +#~ msgstr "일시 중단됨" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "만드는 중" + +#, fuzzy +#~ msgid "Error" +#~ msgstr "에러" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "채널" + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "PipeWire 음향 효과 애플리케이션" + +#, fuzzy +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Impulse 파일 목록" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "제거" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "제거" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Impulse 파일 목록" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Impulse 파일 검색" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "infinity" +#~ msgstr "무한대" + +#, fuzzy +#~ msgid "Import APO Preset File" +#~ msgstr "APO 프리셋 파일 임포트" + +#, fuzzy +#~ msgid "APO Presets" +#~ msgstr "APO 프리셋" + +#~ msgid "Remove" +#~ msgstr "제거" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "출력 게인" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "프리셋 임포트" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "APO 프리셋 파일 임포트" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "제거" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "음량" + +#, fuzzy +#~ msgid "Add to Blocklist" +#~ msgstr "차단 목록에 추가" + +#, fuzzy +#~ msgid "Add Plugin" +#~ msgstr "플러그인 추가" + +#, fuzzy +#~ msgid "Format" +#~ msgstr "포멧" + +#, fuzzy +#~ msgid "Latency" +#~ msgstr "레이턴시" + +#, fuzzy +#~ msgid "idle" +#~ msgstr "유휴 상태" diff --git a/po/news/meson.build b/po/news/meson.build new file mode 100644 index 0000000..2b314c4 --- /dev/null +++ b/po/news/meson.build @@ -0,0 +1,3 @@ +i18n_mod.gettext(meson.project_name() + '-news', + preset: 'glib' +) \ No newline at end of file diff --git a/po/news/nb_NO.po b/po/news/nb_NO.po new file mode 100644 index 0000000..97efb7e --- /dev/null +++ b/po/news/nb_NO.po @@ -0,0 +1,1540 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-24 14:24+0000\n" +"Last-Translator: Allan Nordhøy \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb_NO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Lydeffekter for PipeWire-programmer" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects er et avansert lydmanipuleringsverktøy. Det har tonekontroll, " +"lydbegrenser, kompressor og etterklangsverktøy, for å nevne noe. En innebygd " +"spektrumsanalysator komplementerer disse." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects er etterfølgeren til PulseEffects. EasyEffects støtter også " +"Pipewire sin lydtjener. PulseAudio-brukere bør bruke PulseEffects istedenfor." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Fordi EasyEffects bruker forvalgt PipeWire-lydtjener vil det fungere med " +"nesten alle programmer. Alle som støttes er å finne i hovedvinduet, der hver " +"av dem kan skrus på individuelt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Annet enn å endre lyden som sendes ut kan EasyEffects endre effekter for " +"inngangsenheter, som f.eks. en mikrofon. Dette er nyttig til for eksempel " +"lydopptak, men fungerer også bra for samtaler." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Når EasyEffects startes, vil den huske alle innstillingene du gjorde i " +"forrige økt. Det er også mulig å lagre innstillingene i ulike profiler." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "Hovedsiden som viser to programmer der det spilles av lyd" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "Bassforbedringssiden som viser lydkontroller" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +#, fuzzy +msgid "The convolver page showing audio controls" +msgstr "Convolver-siden viser lydkontroller" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "Funksjoner:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "Feilfikser:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Støtte for neste PipeWire-utgave `0.3.44`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Oppdaterte oversettelser" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "`tbb`-biblioteket er en ny avhengighet" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "Oppdatert kinesisk oversettelse." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "Oppdatert italiensk oversettelse." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "gtkmm3 erstattes av gtkmm4" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +#, fuzzy +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "GStreamer erstattet av systemspesifikke PipeWire-filtre." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "Denne utgaven bringer følgende funksjoner:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bånd 1" + +#, fuzzy +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Dette er en ny innstilling som lar brukeren velge tidsavbrudd for " +#~ "inaktivitet. Når ingen klient spiller" + +#, fuzzy +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "til eller tar opp fra enhetene vil filterne avlenkes etter at " +#~ "tidsavbruddsperioden er nådd. Dette gjøres for å ikke" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "kaste bort prosessorkraft på å behandle stillhet." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Denne utgaven fikser følgende feil:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Denne utgaven fikser følgende funksjon:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Tonekontroll, kompressor og andre lydeffekter" + +#~ msgid "\"Presets\"" +#~ msgstr "«Forhåndsinnstillinger»" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Påskrudd" + +#~ msgid "Mute Application" +#~ msgstr "Forstum program" + +#~ msgid "Application Volume" +#~ msgstr "Programlydstyrke" + +#~ msgid "_Preferences" +#~ msgstr "_Innstillinger" + +#, fuzzy +#~ msgid "_Manual" +#~ msgstr "_Manuell" + +#~ msgid "_Shortcuts" +#~ msgstr "_Snarveier" + +#~ msgid "_Reset Settings" +#~ msgstr "_Tilbakestill innstillinger" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Om EasyEffects" + +#, fuzzy +#~ msgid "Presets" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Profilmeny" + +#~ msgid "Primary Menu" +#~ msgstr "Hovedmeny" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects-vindu" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Programliste" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Programnavn" + +#~ msgid "Target" +#~ msgstr "Mål" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Maksimum" + +#~ msgid "Reference" +#~ msgstr "Referanse" + +#~ msgid "Integrated" +#~ msgstr "Integrert" + +#~ msgid "Reset History" +#~ msgstr "Tilbakestill historikk" + +#~ msgid "Relative" +#~ msgstr "Relativ" + +#~ msgid "Input" +#~ msgstr "Inngang" + +#~ msgid "Output" +#~ msgstr "Utgang" + +#~ msgid "Reset" +#~ msgstr "Tilbakestill" + +#~ msgid "Using" +#~ msgstr "Bruker" + +#~ msgid "Device" +#~ msgstr "Enhet" + +#~ msgid "Name" +#~ msgstr "Navn" + +#, fuzzy +#~ msgid "Profile" +#~ msgstr "Profil" + +#~ msgid "Preset" +#~ msgstr "Forhåndsinnstilling" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Fjern denne modellfilen" + +#~ msgid "Listen" +#~ msgstr "Lytt" + +#~ msgid "3rd" +#~ msgstr "Tredje" + +#~ msgid "2nd" +#~ msgstr "Andre" + +#~ msgid "Amount" +#~ msgstr "Mengde" + +#~ msgid "Harmonics" +#~ msgstr "Overtoner" + +#~ msgid "Scope" +#~ msgstr "Omfang" + +#~ msgid "Floor" +#~ msgstr "Gulv" + +#~ msgid "Floor Value" +#~ msgstr "Gulvverdi" + +#~ msgid "Link" +#~ msgstr "Lenke" + +#~ msgid "Application Name" +#~ msgstr "Programnavn" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Vis svartelistede programmer" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Svartelistede programmer" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Vis svartelistede programmer" + +#~ msgid "Compressor" +#~ msgstr "Kompressor" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Downward" +#~ msgstr "Nedover" + +#~ msgid "Upward" +#~ msgstr "Oppover" + +#~ msgid "Compression Mode" +#~ msgstr "Kompresjonsmodus" + +#~ msgid "Time" +#~ msgstr "Tid" + +#~ msgid "Threshold" +#~ msgstr "Terskel" + +#~ msgid "Ratio" +#~ msgstr "Forhold" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Lavpass" + +#~ msgid "Uniform" +#~ msgstr "Ensartet" + +#~ msgid "Source" +#~ msgstr "Kilde" + +#~ msgid "Left" +#~ msgstr "Venstre" + +#~ msgid "Right" +#~ msgstr "Høyre" + +#~ msgid "Type" +#~ msgstr "Type" + +#, fuzzy +#~ msgid "Feed-back" +#~ msgstr "Respons" + +#~ msgid "External" +#~ msgstr "Ekstern" + +#~ msgid "Input Device" +#~ msgstr "Inndataenhet" + +#~ msgid "High-Pass" +#~ msgstr "Høypass" + +#~ msgid "Frequency" +#~ msgstr "Frekvens" + +#~ msgid "Off" +#~ msgstr "Av" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/okt" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/okt" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/okt" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Høypassfilter-modus" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Høypassfilter-frekvens" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Lavpassfilter-modus" + +#~ msgid "Gain" +#~ msgstr "Forsterkning" + +#~ msgid "L" +#~ msgstr "V" + +#~ msgid "Left Channel" +#~ msgstr "Venstre kanal" + +#~ msgid "R" +#~ msgstr "H" + +#~ msgid "Right Channel" +#~ msgstr "Høyre kanal" + +#~ msgid "Impulses" +#~ msgstr "Impulser" + +#~ msgid "Combine" +#~ msgstr "Kombiner" + +#~ msgid "Stereo Width" +#~ msgstr "Stereobredde" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#~ msgid "Log Scale" +#~ msgstr "Log-skala" + +#~ msgid "Rate" +#~ msgstr "Takt" + +#~ msgid "Duration" +#~ msgstr "Varighet" + +#~ msgid "First Kernel" +#~ msgstr "Første kjerne" + +#~ msgid "Second Kernel" +#~ msgstr "Andre kjerne" + +#~ msgid "Output File Name" +#~ msgstr "Utdata-filnavn" + +#~ msgid "Combined Kernel Name" +#~ msgstr "Kombinert kjernenavn" + +#~ msgid "Search" +#~ msgstr "Søk" + +#~ msgid "Default" +#~ msgstr "Forvalg" + +#~ msgid "Detection" +#~ msgstr "Oppdagelse" + +#~ msgid "Wide" +#~ msgstr "Bred" + +#~ msgid "Reduction" +#~ msgstr "Reduksjon" + +#~ msgid "Frame Size" +#~ msgstr "Rammestørrelse" + +#~ msgid "Filter Length" +#~ msgstr "Filterlengde" + +#~ msgid "Bands" +#~ msgstr "Bånd" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Beregn frekvenser" + +#~ msgid "Resonance" +#~ msgstr "Resonans" + +#~ msgid "Width" +#~ msgstr "Bredde" + +#~ msgid "Quality" +#~ msgstr "Kvalitet" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Tilgang" + +#~ msgid "Description" +#~ msgstr "Beskrivelse" + +#~ msgid "Remove this model file" +#~ msgstr "Fjern denne modellfilen" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/okt lavpass" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/okt lavpass" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/okt lavpass" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/okt høypass" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/okt høypass" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/okt høypass" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/okt båndpass" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/okt båndpass" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/okt båndpass" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct båndsperre" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct båndsperre" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct båndsperre" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Ekstern" + +#~ msgid "Oversampling" +#~ msgstr "Oversampling" + +#~ msgid "None" +#~ msgstr "Ingen" + +#~ msgid "Output Volume" +#~ msgstr "Utgangslydstyrke" + +#~ msgid "Classic" +#~ msgstr "Klassisk" + +#~ msgid "Modern" +#~ msgstr "Moderne" + +#~ msgid "Band 1" +#~ msgstr "Bånd 1" + +#~ msgid "Band 2" +#~ msgstr "Bånd 2" + +#~ msgid "Band 3" +#~ msgstr "Bånd 3" + +#~ msgid "Band 4" +#~ msgstr "Bånd 4" + +#~ msgid "Band 5" +#~ msgstr "Bånd 5" + +#~ msgid "Band 6" +#~ msgstr "Bånd 6" + +#~ msgid "Band 7" +#~ msgstr "Bånd 7" + +#~ msgid "Band 8" +#~ msgstr "Bånd 8" + +#~ msgid "Band Start" +#~ msgstr "Bånd-start" + +#~ msgid "Band End" +#~ msgstr "Bånd-slutt" + +#~ msgid "Max Reduction" +#~ msgstr "Maks. reduksjon" + +#~ msgid "General" +#~ msgstr "Generelt" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Bruk forvalgt inngang" + +#~ msgid "Custom Input Device" +#~ msgstr "Egendefinert inngangsenhet" + +#~ msgid "Use Default Output" +#~ msgstr "Bruk forvalgt utgang" + +#~ msgid "Custom Output Device" +#~ msgstr "Egendefinert utgangsenhet" + +#~ msgid "Server Information" +#~ msgstr "Tjenerinfo" + +#~ msgid "Library Version" +#~ msgstr "Biblioteksversjon" + +#~ msgid "Output Devices" +#~ msgstr "Utgangsenheter" + +#~ msgid "Output Presets" +#~ msgstr "Utgangsforhåndsinnstillinger" + +#~ msgid "Create Association" +#~ msgstr "Opprett tilknytning" + +#~ msgid "Input Devices" +#~ msgstr "Inngangsenheter" + +#~ msgid "Input Presets" +#~ msgstr "Inngangsforhåndsinnstillinger" + +#~ msgid "Modules" +#~ msgstr "Moduler" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Modulliste" + +#~ msgid "Clients" +#~ msgstr "Klienter" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Klientliste" + +#~ msgid "Test Signal" +#~ msgstr "Testsignal" + +#~ msgid "State" +#~ msgstr "Tilstand" + +#~ msgid "Enabled" +#~ msgstr "Påskrudd" + +#~ msgid "Properties" +#~ msgstr "Egenskaper" + +#~ msgid "Channels" +#~ msgstr "Kanaler" + +#~ msgid "Both" +#~ msgstr "Begge" + +#~ msgid "Both Channels" +#~ msgstr "Begge kanaler" + +#~ msgid "Waveform" +#~ msgstr "Bølgeform" + +#~ msgid "Sine Wave" +#~ msgstr "Sinusbølge" + +#~ msgid "White Noise" +#~ msgstr "Hvit støy" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Kvalitet" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Format" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Oppdagelse" + +#~ msgid "Octaves" +#~ msgstr "Oktaver" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Fjern denne modellfilen" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#~ msgid "_General" +#~ msgstr "_Generelt" + +#~ msgid "Service" +#~ msgstr "Tjeneste" + +#~ msgid "Audio" +#~ msgstr "Lyd" + +#~ msgid "Style" +#~ msgstr "Stil" + +#~ msgid "Use Dark Theme" +#~ msgstr "Ifør mørk drakt" + +#~ msgid "_Spectrum" +#~ msgstr "_Spektrum" + +#~ msgid "Shape" +#~ msgstr "Form" + +#~ msgid "Bars" +#~ msgstr "Bjelker" + +#~ msgid "Lines" +#~ msgstr "Linjer" + +#~ msgid "Height" +#~ msgstr "Høyde" + +#~ msgid "Line Width" +#~ msgstr "Linjebredde" + +#~ msgid "Color" +#~ msgstr "Farge" + +#~ msgid "Maximum" +#~ msgstr "Maksimum" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Opprett forhåndsinnstilling" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importer forhåndsinnstillinger" + +#~ msgid "New Input Preset Name" +#~ msgstr "Nytt inngangforhåndsinnstillingsnavn" + +#~ msgid "Input Presets List" +#~ msgstr "Inngangforhåndsinnstillingsliste" + +#~ msgid "High Frequency Damping" +#~ msgstr "Høyfrekvensdemping" + +#~ msgid "Room Size" +#~ msgstr "Romstørrelse" + +#~ msgid "Small" +#~ msgstr "Lite" + +#~ msgid "Medium" +#~ msgstr "Middels" + +#~ msgid "Large" +#~ msgstr "Stort" + +#~ msgid "Tunnel" +#~ msgstr "Tunnel" + +#~ msgid "Experimental" +#~ msgstr "Eksperimentelt" + +#~ msgid "Large Empty Hall" +#~ msgstr "Tor tom hall" + +#~ msgid "Disco" +#~ msgstr "Diskotek" + +#~ msgid "Import Model" +#~ msgstr "Importer modell" + +#~ msgid "Models" +#~ msgstr "Modeller" + +#~ msgid "Active Model" +#~ msgstr "Aktiv modell" + +#~ msgid "Overview" +#~ msgstr "Oversikt" + +#~ msgid "Close the Window" +#~ msgstr "Lukk vinduet" + +#~ msgid "Quit EasyEffects" +#~ msgstr "Avslutt EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balanse" + +#~ msgid "Stereo Mode" +#~ msgstr "Stereomodus" + +#~ msgid "Invert Phase" +#~ msgstr "Inverter fase" + +#, fuzzy +#~ msgid "Error" +#~ msgstr "feil" + +#, fuzzy +#~ msgid "Unknown" +#~ msgstr "ukjent" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Hide the Window." +#~ msgstr "Skjul vinduet." + +#~ msgid "Show available presets." +#~ msgstr "Vis tilgjengelige forhåndsinnstillinger." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#~ msgid "Open" +#~ msgstr "Åpne" + +#~ msgid "Cancel" +#~ msgstr "Avbryt" + +#~ msgid "Recorders" +#~ msgstr "Opptakere" + +#~ msgid "Players" +#~ msgstr "Avspillere" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "uendelig" + +#~ msgid "Remove" +#~ msgstr "Fjern" + +#~ msgid "Output Device" +#~ msgstr "Utgangsenhet" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "Importer modellfil" + +#, fuzzy +#~ msgid "Bass Enhancer" +#~ msgstr "Balanse" + +#, fuzzy +#~ msgid "Convolver" +#~ msgstr "Convolver" + +#, fuzzy +#~ msgid "Echo Canceller" +#~ msgstr "Avbryt" + +#, fuzzy +#~ msgid "Maximizer" +#~ msgstr "Maksimum" + +#, fuzzy +#~ msgid "Multiband Compressor" +#~ msgstr "Kompressor" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Tjenerinfo" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Reduksjon" + +#, fuzzy +#~ msgid "Stereo Tools" +#~ msgstr "Stereomodus" + +#~ msgid "Average" +#~ msgstr "Gjennomsnitt" + +#~ msgid "Use Default" +#~ msgstr "Bruk forvalg" + +#~ msgid "Remove this plugin" +#~ msgstr "Fjern dette programtillegget" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktiv modell" + +#~ msgid "Add to Blocklist" +#~ msgstr "Legg til på svarteliste" + +#~ msgid "Blocklist" +#~ msgstr "Svarteliste" + +#~ msgid "Add Plugin" +#~ msgstr "Legg til programtillegg" + +#~ msgid "Speakers" +#~ msgstr "Høyttalere" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "Plugins" +#~ msgstr "Programtillegg" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Påskrudd" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Påskrudd" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Forsinkelse" + +#~ msgid "Faster" +#~ msgstr "Raskere" diff --git a/po/news/nl.po b/po/news/nl.po new file mode 100644 index 0000000..ba7ebbd --- /dev/null +++ b/po/news/nl.po @@ -0,0 +1,2855 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2021-07-14 14:30+0200\n" +"Last-Translator: Heimen Stoffels \n" +"Language-Team: \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "PulseEffecten" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Audio-effecten voor PipeWire-toepassingen" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +#, fuzzy +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects is een uitgebreid hulpmiddel waarmee u audio zeer gericht kunt " +"afstellen. Het bevat een equalizer, limiter, compressor, galmhulpmiddel en " +"een aantal andere hulpmiddelen. Verder bevat de toepassing een " +"spectrumanalyse-hulpmiddel." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"EasyEffects maakt gebruik van de PipeWire-geluidsserver en werkt daardoor " +"met nagenoeg alle, zo niet alle, toepassingen die u gebruikt. Alle " +"ondersteunde toepassingen worden getoond in het hoofdvenster, waar elke " +"toepassing op elk moment kan worden in- of uitgeschakeld." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Naast het aanpassen van geluidsuitvoer, past EasyEffects ook het geluid van " +"invoerapparaten, zoals microfoons, aan. Dit is onder meer nuttig bij het " +"opnemen van audio of voeren van audiogesprekken." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Na het opstarten toont EasyEffects de in de vorige sessie gebruikte " +"instellingen. Ook kunnen instellingen worden opgeslagen als profielen." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Banden" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Equalizer, compressor en overige audio-effecten" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limiter;compressor;galm;equalizer;autovolume;" + +#~ msgid "\"Presets\"" +#~ msgstr "‘Voorinstellingen’" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Inschakelen" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Toepassingen" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Toepassingen" + +#, fuzzy +#~ msgid "_Shortcuts" +#~ msgstr "Korte termijn" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Standaardwaarden herstellen" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "Over EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Voorinstellingen" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Voorinstellingen" + +#~ msgid "Global Bypass" +#~ msgstr "Globale omzeiling" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "PulseEffecten" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Toepassingen" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Kale muren" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Toepassingen" + +#~ msgid "Target" +#~ msgstr "Doel" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Maximale versterking" + +#~ msgid "Momentary" +#~ msgstr "Kortstondig" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Korte termijn" + +#~ msgid "Integrated" +#~ msgstr "Geïntegreerd" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Geometrisch gemiddelde gebruiken" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Geometrisch gemiddelde gebruiken" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Geometrisch gemiddelde gebruiken" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Geometrisch gemiddelde gebruiken" + +#~ msgid "Reset History" +#~ msgstr "Geschiedenis wissen" + +#~ msgid "Relative" +#~ msgstr "Relatief" + +#~ msgid "Range" +#~ msgstr "Bereik" + +#~ msgid "Loudness" +#~ msgstr "Hardheid" + +#~ msgid "Output Gain" +#~ msgstr "Uitvoerversterking" + +#~ msgid "Input" +#~ msgstr "Invoer" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Uitvoerversterking" + +#~ msgid "Output" +#~ msgstr "Uitvoer" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Uitvoerversterking" + +#~ msgid "Reset" +#~ msgstr "Standaardwaarden" + +#~ msgid "Using" +#~ msgstr "Gebruikmakend van" + +#~ msgid "Device" +#~ msgstr "Apparaat" + +#~ msgid "Name" +#~ msgstr "Naam" + +#~ msgid "Profile" +#~ msgstr "Profiel" + +#~ msgid "Preset" +#~ msgstr "Voorinstelling" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Voorinstellingen automatisch inladen" + +#~ msgid "Listen" +#~ msgstr "Beluisteren" + +#~ msgid "Blend Harmonics" +#~ msgstr "Harmonieën mengen" + +#~ msgid "3rd" +#~ msgstr "3e" + +#~ msgid "2nd" +#~ msgstr "2e" + +#~ msgid "Amount" +#~ msgstr "Hoeveelheid" + +#~ msgid "Harmonics" +#~ msgstr "Harmonieën" + +#~ msgid "Scope" +#~ msgstr "Bereik" + +#~ msgid "Floor" +#~ msgstr "Verdieping" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Verdieping" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Toepassingen" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Toepassingen op zwarte lijst tonen op hoofdtabblad" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Toepassingen" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Toepassingen op zwarte lijst tonen op hoofdtabblad" + +#~ msgid "Compressor" +#~ msgstr "Compressor" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Downward" +#~ msgstr "Omlaag" + +#~ msgid "Upward" +#~ msgstr "Omhoog" + +#~ msgid "Boosting" +#~ msgstr "Versterking" + +#~ msgid "Compression Mode" +#~ msgstr "Compressiemodus" + +#~ msgid "Boost Threshold" +#~ msgstr "Versterkingsdrempelwaarde" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Hoeveelheid" + +#~ msgid "Attack" +#~ msgstr "Aanval" + +#~ msgid "Time" +#~ msgstr "Duur" + +#~ msgid "Threshold" +#~ msgstr "Drempelwaarde" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Aanval" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Drempelwaarde" + +#~ msgid "Release" +#~ msgstr "Vrijgave" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Vrijgave" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Relatieve vrijgavedrempelwaarde" + +#~ msgid "Ratio" +#~ msgstr "Verhouding" + +#~ msgid "Knee" +#~ msgstr "Knie" + +#~ msgid "Makeup" +#~ msgstr "Make-up" + +#~ msgid "Sidechain" +#~ msgstr "Zijketen" + +#~ msgid "Peak" +#~ msgstr "Piek" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Low-pass" + +#~ msgid "Uniform" +#~ msgstr "Uniform" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Zijketen" + +#~ msgid "Source" +#~ msgstr "Brok" + +#~ msgid "Middle" +#~ msgstr "Midden" + +#~ msgid "Side" +#~ msgstr "Zijkant" + +#~ msgid "Left" +#~ msgstr "Links" + +#~ msgid "Right" +#~ msgstr "Rechts" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Zijketen" + +#~ msgid "Type" +#~ msgstr "Soort" + +#~ msgid "Feed-forward" +#~ msgstr "Vooruitgeven" + +#~ msgid "Feed-back" +#~ msgstr "Teruggeven" + +#~ msgid "External" +#~ msgstr "Extern" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Zijketen" + +#~ msgid "Input Device" +#~ msgstr "Invoerapparaat" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Voorversterking" + +#~ msgid "Reactivity" +#~ msgstr "Reactiviteit" + +#~ msgid "Lookahead" +#~ msgstr "Vooruitblik" + +#~ msgid "Sidechain Filters" +#~ msgstr "Zijketenfilters" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "High-pass" + +#~ msgid "Frequency" +#~ msgstr "Frequentie" + +#~ msgid "Off" +#~ msgstr "Uit" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "High-pass-filtermodus" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "High-pass-frequentie" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "High-pass-filtermodus" + +#~ msgid "Gain" +#~ msgstr "Versterking" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Stijging" + +#~ msgid "Curve" +#~ msgstr "Curve" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Kanaal" + +#~ msgid "R" +#~ msgstr "R" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Kanalen splitsen" + +#~ msgid "Impulses" +#~ msgstr "Impulsen" + +#~ msgid "Stereo Width" +#~ msgstr "Stereobreedte" + +#~ msgid "Spectrum" +#~ msgstr "Spectrum" + +#~ msgid "Autogain" +#~ msgstr "Automatisch versterken" + +#~ msgid "Rate" +#~ msgstr "Snelheid" + +#~ msgid "Samples" +#~ msgstr "Samples" + +#~ msgid "Duration" +#~ msgstr "Duur" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Impulse Response" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Uitvoervolume" + +#~ msgid "Import Impulse" +#~ msgstr "Impulse importeren" + +#~ msgid "Search" +#~ msgstr "Zoeken" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Impulse-bestand importeren" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Impulse-bestand importeren" + +#~ msgid "Default" +#~ msgstr "Standaard" + +#~ msgid "Cutoff" +#~ msgstr "Onderbreking" + +#~ msgid "Feed" +#~ msgstr "Aanvoer" + +#~ msgid "Bypass" +#~ msgstr "Omzeiling" + +#~ msgid "Mute" +#~ msgstr "Dempen" + +#~ msgid "Detection" +#~ msgstr "Detectie" + +#~ msgid "Wide" +#~ msgstr "Breed" + +#~ msgid "Split" +#~ msgstr "Splitsen" + +#~ msgid "F1 Split" +#~ msgstr "F1-splitsing" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frequentie" + +#~ msgid "F2 Peak" +#~ msgstr "F2-piek" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frequentie" + +#~ msgid "F1 Gain" +#~ msgstr "F1-versterking" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frequentie" + +#~ msgid "F2 Level" +#~ msgstr "F2-niveau" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frequentie" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2-piek Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frequentie" + +#~ msgid "Laxity" +#~ msgstr "Laxiteit" + +#~ msgid "Detected" +#~ msgstr "Gedetecteerd" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Verlaging" + +#~ msgid "Frame Size" +#~ msgstr "Framegrootte" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filter" + +#~ msgid "Bands" +#~ msgstr "Banden" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Kanalen splitsen" + +#~ msgid "Flat Response" +#~ msgstr "Platte respons" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Frequenties berekenen" + +#~ msgid "Load APO Preset" +#~ msgstr "APO-voorinstelling laden" + +#~ msgid "Bell" +#~ msgstr "Bel" + +#~ msgid "High Pass" +#~ msgstr "High-pass" + +#~ msgid "High Shelf" +#~ msgstr "High-shelf" + +#~ msgid "Low Pass" +#~ msgstr "Low-pass" + +#~ msgid "Low Shelf" +#~ msgstr "Low-shelf" + +#~ msgid "Notch" +#~ msgstr "Inkeping" + +#~ msgid "Resonance" +#~ msgstr "Resonantie" + +#~ msgid "All Pass" +#~ msgstr "All-pass" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Omzeiling" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Banden" + +#~ msgid "Slope" +#~ msgstr "Stijging" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Stijging" + +#~ msgid "Width" +#~ msgstr "Breedte" + +#~ msgid "Quality" +#~ msgstr "Kwaliteit" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Plafond" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Toegang" + +#~ msgid "Description" +#~ msgstr "Omschrijving" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Verwijder dit voorinstellingsbestand" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct low-pass" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct low-pass" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct low-pass" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct high-pass" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct high-pass" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct high-pass" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct band-pass" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct band-pass" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct band-pass" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct band-reject" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct band-reject" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct band-reject" + +#~ msgid "Inertia" +#~ msgstr "Traagheid" + +#~ msgid "Gate" +#~ msgstr "Dosering" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Vrijgave" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Extern" + +#~ msgid "Gating" +#~ msgstr "Dosering" + +#~ msgid "Oversampling" +#~ msgstr "Oversamplen" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Breed" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Breed" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Lijnbreedte" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Lijnbreedte" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Lijnbreedte" + +#~ msgid "None" +#~ msgstr "Geen" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Voorversterking" + +#, fuzzy +#~ msgid "Boost" +#~ msgstr "Versterking" + +#~ msgid "Stereo Link" +#~ msgstr "Stereo koppelen" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Zijketen" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Automatische niveau's" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Automatische niveau's" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Automatische niveau's" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Automatische niveau's" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Links" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Rechts" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Zijketen" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Zijketenfilters" + +#~ msgid "Standard" +#~ msgstr "Standaard" + +#~ msgid "Flat" +#~ msgstr "Plat" + +#~ msgid "FFT Size" +#~ msgstr "FFT-grootte" + +#~ msgid "Output Volume" +#~ msgstr "Uitvoervolume" + +#~ msgid "Ceiling" +#~ msgstr "Plafond" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Model importeren" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Modus" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Zijketen" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Compressiemodus" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Omzeiling" + +#, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Zijketenfilters" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Low-pass-filtermodus" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Low-pass-filtermodus" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "High-pass-filter" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "High-pass-filter" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "F1-versterking" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Curve" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Splitsen" + +#~ msgid "Split 1/2" +#~ msgstr "1/2 splitsen" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frequentie" + +#~ msgid "Split 2/3" +#~ msgstr "2/3 splitsen" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frequentie" + +#~ msgid "Split 3/4" +#~ msgstr "3/4 splitsen" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frequentie" + +#~ msgid "Sub Band" +#~ msgstr "Subband" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Omzeiling" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Versterkingsverlaging" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Aanval" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Vrijgave" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Drempelwaarde" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Make-up" + +#~ msgid "Max Reduction" +#~ msgstr "Verlaging" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Versterkingsverlaging" + +#~ msgid "Low Band" +#~ msgstr "Lage band" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Omzeiling" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Versterkingsverlaging" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Aanval" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Vrijgave" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Drempelwaarde" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Make-up" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Versterkingsverlaging" + +#~ msgid "Mid Band" +#~ msgstr "Middelste band" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Omzeiling" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Versterkingsverlaging" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Aanval" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Vrijgave" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Drempelwaarde" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Make-up" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Versterkingsverlaging" + +#~ msgid "High Band" +#~ msgstr "Hoge band" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Omzeiling" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Versterkingsverlaging" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Aanval" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Vrijgave" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Drempelwaarde" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Banden" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Make-up" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Versterkingsverlaging" + +#~ msgid "General" +#~ msgstr "Algemeen" + +#~ msgid "Use Default Input" +#~ msgstr "Standaardinvoer gebruiken" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Invoerapparaat" + +#~ msgid "Use Default Output" +#~ msgstr "Standaarduitvoer gebruiken" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Uitvoerapparaat" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Galm" + +#~ msgid "Header Version" +#~ msgstr "Kopversie" + +#~ msgid "Library Version" +#~ msgstr "Bibliotheekversie" + +#~ msgid "Sampling Rate" +#~ msgstr "Samplesnelheid" + +#~ msgid "Minimum Quantum" +#~ msgstr "Minimale quantum" + +#~ msgid "Maximum Quantum" +#~ msgstr "Maximale quantum" + +#~ msgid "Default Quantum" +#~ msgstr "Standaard quantum" + +#~ msgid "Presets Autoloading" +#~ msgstr "Voorinstellingen automatisch inladen" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Uitvoerapparaat" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Uitvoer-voorinstellingen: " + +#~ msgid "Create Association" +#~ msgstr "Toewijzing maken" + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Uitvoer-voorinstellingen: " + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Invoerapparaat" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Invoer-voorinstellingen: " + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Invoer-voorinstellingen: " + +#~ msgid "Modules" +#~ msgstr "Modules" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Modules" + +#~ msgid "Clients" +#~ msgstr "Clients" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Clients" + +#~ msgid "Test Signal" +#~ msgstr "Signaal testen" + +#~ msgid "State" +#~ msgstr "Status" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Inschakelen" + +#~ msgid "Channels" +#~ msgstr "Aantal kanalen" + +#~ msgid "Both" +#~ msgstr "Beide" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Aantal kanalen" + +#~ msgid "Sine Wave" +#~ msgstr "Sinusgolf" + +#~ msgid "White Noise" +#~ msgstr "Witte ruis" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "High-shelf" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Kwaliteit" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formaat" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Voorinstelling" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Scherpte" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detectie" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Compressie" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Softclip" + +#~ msgid "Cents" +#~ msgstr "Cents" + +#~ msgid "Semitones" +#~ msgstr "Halve tonen" + +#~ msgid "Octaves" +#~ msgstr "Octaven" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Verwijder dit voorinstellingsbestand" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Invoereffecten" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "PulseEffecten" + +#, fuzzy +#~ msgid "Search Plugin" +#~ msgstr "Zoeken" + +#, fuzzy +#~ msgid "Plugins List" +#~ msgstr "Plug-ins" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "Algemeen" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Apparaat" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Alle uitvoerbronnen gebruiken" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Alle invoerbronnen gebruiken" + +#, fuzzy +#~ msgid "Inactivity Timeout" +#~ msgstr "Activiteitstime-out" + +#~ msgid "Use Dark Theme" +#~ msgstr "Donker thema" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Spectrum" + +#~ msgid "Bars" +#~ msgstr "Balken" + +#~ msgid "Lines" +#~ msgstr "Lijnen" + +#~ msgid "Points" +#~ msgstr "Points" + +#~ msgid "Height" +#~ msgstr "Lengte" + +#~ msgid "Line Width" +#~ msgstr "Lijnbreedte" + +#~ msgid "Fill" +#~ msgstr "Opvullen" + +#, fuzzy +#~ msgid "Color" +#~ msgstr "Askleur" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frequentie" + +#~ msgid "Minimum" +#~ msgstr "Minimaal" + +#~ msgid "Maximum" +#~ msgstr "Maximaal" + +#~ msgid "Load" +#~ msgstr "Laden" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Sla de huidige instellingen op in dit voorinstellingsbestand" + +#~ msgid "Remove this preset file" +#~ msgstr "Verwijder dit voorinstellingsbestand" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Uitvoer-voorinstellingen: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Voorinstelling maken" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Voorinstelling importeren" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Uitvoer-voorinstellingen: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Uitvoer-voorinstellingen: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Invoer-voorinstellingen: " + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Invoer-voorinstellingen: " + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Invoer-voorinstellingen: " + +#~ msgid "High Frequency Damping" +#~ msgstr "Hoge frequentiedemping" + +#~ msgid "Room Size" +#~ msgstr "Kamergrootte" + +#~ msgid "Small" +#~ msgstr "Klein" + +#~ msgid "Medium" +#~ msgstr "Gemiddeld" + +#~ msgid "Large" +#~ msgstr "Groot" + +#~ msgid "Tunnel" +#~ msgstr "Tunnel" + +#~ msgid "Large/smooth" +#~ msgstr "Groot/Vloeiend" + +#~ msgid "Experimental" +#~ msgstr "Experimenteel" + +#~ msgid "Diffusion" +#~ msgstr "Verspreiding" + +#~ msgid "Pre Delay" +#~ msgstr "Vertraging vooraf" + +#~ msgid "Decay Time" +#~ msgstr "Vervaltijd" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Hoeveelheid" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Doelniveau" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Hoeveelheid" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "F2-niveau" + +#~ msgid "Bass Cut" +#~ msgstr "Bas onderdrukken" + +#~ msgid "Treble Cut" +#~ msgstr "Hoge tonen afsnijden" + +#~ msgid "Ambience" +#~ msgstr "Sfeer" + +#~ msgid "Empty Walls" +#~ msgstr "Kale muren" + +#~ msgid "Room" +#~ msgstr "Kamer" + +#~ msgid "Large Empty Hall" +#~ msgstr "Grote, lege zaal" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Grote, bezette zaal" + +#~ msgid "Import Model" +#~ msgstr "Model importeren" + +#~ msgid "Models" +#~ msgstr "Modellen" + +#, fuzzy +#~ msgid "Standard Model" +#~ msgstr "Standaard RNNoise-model" + +#, fuzzy +#~ msgid "RNNoise Models List" +#~ msgstr "Standaard RNNoise-model" + +#~ msgid "Active Model" +#~ msgstr "Huidig model" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Standaard RNNoise-model" + +#, fuzzy +#~ msgid "Overview" +#~ msgstr "Apparaat" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Zet PulseEffecten terug op de standaardwaarden." + +#, fuzzy +#~ msgid "Close the Window" +#~ msgstr "Verberg het venster." + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "Over EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balans" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Balans" + +#~ msgid "Softclip" +#~ msgstr "Softclip" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Softclip" + +#~ msgid "Stereo Matrix" +#~ msgstr "Stereomatrix" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (standaard stereo)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (stereo naar midden-zijkant)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (midden-zijkant naar stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (mono, linkerkanaal)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (mono, rechterkanaal)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (mono, sum L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (stereo, kanalen omwisselen)" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Stereobasis" + +#~ msgid "Invert Phase" +#~ msgstr "Fase omkeren" + +#~ msgid "Side Level" +#~ msgstr "Zijniveau" + +#~ msgid "Side Balance" +#~ msgstr "Zijbalans" + +#~ msgid "Middle Level" +#~ msgstr "Middelste niveau" + +#~ msgid "Middle Panorama" +#~ msgstr "Middelste panorama" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Uitvoerversterking" + +#~ msgid "Delay L/R" +#~ msgstr "L/R-vertraging" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "L/R-vertraging" + +#~ msgid "Stereo Base" +#~ msgstr "Stereobasis" + +#~ msgid "Stereo Phase" +#~ msgstr "Stereofase" + +#, fuzzy +#~ msgid "Running" +#~ msgstr "actief" + +#, fuzzy +#~ msgid "Suspended" +#~ msgstr "onderbroken" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "bezig met aanmaken" + +#, fuzzy +#~ msgid "Error" +#~ msgstr "foutmelding" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Aantal kanalen" + +#~ msgid "Output Presets: " +#~ msgstr "Uitvoer-voorinstellingen: " + +#~ msgid "Input Presets: " +#~ msgstr "Invoer-voorinstellingen: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Audio-effecten voor PipeWire-toepassingen" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Sluit PulseEffecten af - nuttig in dienstmodus." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Laad een voorinstelling. Voorbeeld: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Zet PulseEffecten terug op de standaardwaarden." + +#~ msgid "Hide the Window." +#~ msgstr "Verberg het venster." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Globale omzeiling: 1 = inschakelen, 2 = uitschakelen, 3 = status opvragen" + +#~ msgid "Show available presets." +#~ msgstr "Toon de beschikbare voorinstellingen." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Impulse-bestand importeren" + +#~ msgid "Import Impulse File" +#~ msgstr "Impulse-bestand importeren" + +#~ msgid "Open" +#~ msgstr "Openen" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Impulse Response" +#~ msgstr "Impulse Response" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Impulsen" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Impulse importeren" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Impulse-bestand importeren" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Het Impulse-bestand kan niet worden geladen" + +#~ msgid "Recorders" +#~ msgstr "Opname-apparaten" + +#~ msgid "Players" +#~ msgstr "Spelers" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "PulseEffecten" + +#~ msgid "infinity" +#~ msgstr "oneindig" + +#~ msgid "Import APO Preset File" +#~ msgstr "APO-voorinstellingsbestand importeren" + +#~ msgid "APO Presets" +#~ msgstr "APO-voorinstellingen" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Voorinstellingen automatisch inladen" + +#~ msgid "Remove" +#~ msgstr "Verwijderen" + +#~ msgid "Output Device" +#~ msgstr "Uitvoerapparaat" + +#~ msgid "Import Preset" +#~ msgstr "Voorinstelling importeren" + +#~ msgid "Import Model File" +#~ msgstr "Modelbestand importeren" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Standaard RNNoise-model" + +#~ msgid "Bass Enhancer" +#~ msgstr "Basversterker" + +#~ msgid "Bass Loudness" +#~ msgstr "Hardheid van bas" + +#~ msgid "Convolver" +#~ msgstr "Convolutie" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Kristalliseerder" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Vertraging" + +#~ msgid "Echo Canceller" +#~ msgstr "Echo-onderdrukking" + +#~ msgid "Equalizer" +#~ msgstr "Equalizer" + +#~ msgid "Exciter" +#~ msgstr "Exciter" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Limiter" +#~ msgstr "Limiter" + +#~ msgid "Maximizer" +#~ msgstr "Maximizer" + +#~ msgid "Multiband Compressor" +#~ msgstr "Multiband-compressie" + +#~ msgid "Multiband Gate" +#~ msgstr "Multiband-dosering" + +#~ msgid "Pitch" +#~ msgstr "Toonhoogte" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Galm" + +#~ msgid "Noise Reduction" +#~ msgstr "Ruisverlaging" + +#~ msgid "Stereo Tools" +#~ msgstr "Stereobediening" + +#~ msgid "Average" +#~ msgstr "Gemiddeld" + +#~ msgid "Failed" +#~ msgstr "Mislukt" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Standaardinvoer gebruiken" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Verwijder dit voorinstellingsbestand" + +#~ msgid "Import Presets" +#~ msgstr "Importeer voorinstellingen" + +#~ msgid "Start Service at Login" +#~ msgstr "Automatisch opstarten" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Huidig model" + +#~ msgid "Add to Blocklist" +#~ msgstr "Toevoegen aan zwarte lijst" + +#~ msgid "Blocklist" +#~ msgstr "Zwarte lijst" + +#~ msgid "Add Plugin" +#~ msgstr "Plug-in toevoegen" + +#~ msgid "Speakers" +#~ msgstr "Luidsprekers" + +#~ msgid "Microphone" +#~ msgstr "Microfoon" + +#~ msgid "Plugins" +#~ msgstr "Plug-ins" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Inschakelen" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Inschakelen" + +#~ msgid "Format" +#~ msgstr "Formaat" + +#~ msgid "Latency" +#~ msgstr "Vertraging" + +#~ msgid "idle" +#~ msgstr "inactief" + +#~ msgid "Faster" +#~ msgstr "Sneller" + +#~ msgid "Preserve Formant" +#~ msgstr "Formaat behouden" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Player Name" +#~ msgstr "Spelernaam" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Uitvoerversterking" + +#~ msgid "Channel" +#~ msgstr "Kanaal" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Verdieping" + +#~ msgid "Output Effects" +#~ msgstr "Uitvoereffecten" + +#~ msgid "Settings" +#~ msgstr "Instellingen" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Instellingen" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Duur" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Signaal testen" + +#~ msgid "Signal" +#~ msgstr "Signaal" + +#~ msgid "Show Spectrum" +#~ msgstr "Spectrum tonen" + +#~ msgid "Border" +#~ msgstr "Rand" + +#~ msgid "Spectrum Type" +#~ msgstr "Soort spectrum" + +#~ msgid "Spectrum Color" +#~ msgstr "Spectrumkleur" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Huidig model" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Maximale versterkingsverlaging" + +#~ msgid "Wet" +#~ msgstr "Nat" + +#~ msgid "Dry" +#~ msgstr "Droog" + +#~ msgid "S/C Level" +#~ msgstr "S/C-niveau" + +#~ msgid "Phase Correlation" +#~ msgstr "Fasecorrelatie" + +#~ msgid "Short Term" +#~ msgstr "Korte termijn" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Low-pass" +#~ msgstr "Low-pass" + +#~ msgid "Run in Background" +#~ msgstr "Uitvoeren op achtergrond" + +#~ msgid "ceil" +#~ msgstr "ceil" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Regel het volume en schakel effecten in/uit" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Bevat een equalizer met meegeleverde voorinstellingen" + +#~ msgid "Input Limiter" +#~ msgstr "Invoerbeperking" + +#~ msgid "Calibration" +#~ msgstr "Kalibratie" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatische afvlakking bedienen" + +#~ msgid "Limit" +#~ msgstr "Beperken" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Verzwakking" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Audio-effecten voor PulseAudio-toepassingen" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Audio-effecten voor PulseAudio-toepassingen" + +#~ msgid "Help" +#~ msgstr "Hulp" + +#~ msgid "Calibration Microphone" +#~ msgstr "Microfoon kalibreren" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Pas deze voorinstellingen automatisch toe zodra het huidige apparaat " +#~ "wordt aangekoppeld" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Versie" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Vierkant" + +#~ msgid "Saw" +#~ msgstr "Zaag" + +#~ msgid "Triangle" +#~ msgstr "Driehoek" + +#~ msgid "Silence" +#~ msgstr "Stilte" + +#~ msgid "Pink Noise" +#~ msgstr "Roze ruis" + +#~ msgid "Ticks" +#~ msgstr "Aantal tikken" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussiaanse ruis" + +#~ msgid "Red Noise" +#~ msgstr "Rode ruis" + +#~ msgid "Blue Noise" +#~ msgstr "Blauwe ruis" + +#~ msgid "Violet Noise" +#~ msgstr "Violet-ruis" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Venster" + +#~ msgid "Measure Noise" +#~ msgstr "Ruisniveau meten" + +#~ msgid "Subtract Noise" +#~ msgstr "Ruis verwijderen" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Provided by" +#~ msgstr "Geleverd door" + +#~ msgid "Extended Filter" +#~ msgstr "Uitgebreid filter" + +#~ msgid "Low" +#~ msgstr "Laag" + +#~ msgid "Moderate" +#~ msgstr "Gemiddeld" + +#~ msgid "High" +#~ msgstr "Hoog" + +#~ msgid "Suppression Level" +#~ msgstr "Onderdrukkingsniveau" + +#~ msgid "Delay Agnostic" +#~ msgstr "Agnostische vertraging" + +#~ msgid "Very High" +#~ msgstr "Erg hoog" + +#~ msgid "Noise Suppressor" +#~ msgstr "Ruisonderdrukking" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptief digitaal" + +#~ msgid "Fixed Digital" +#~ msgstr "Vastgesteld digitaal" + +#~ msgid "Gain Controller" +#~ msgstr "Versterkingsbediening" + +#~ msgid "Detection Likelihood" +#~ msgstr "Detectieniveau" + +#~ msgid "Very Low" +#~ msgstr "Erg laag" + +#~ msgid "Voice Detector" +#~ msgstr "Stemherkenning" + +#~ msgid "Use Custom Color" +#~ msgstr "Aangepaste kleur gebruiken" + +#~ msgid "Use Gradient" +#~ msgstr "Kleurverloop gebruiken" + +#~ msgid "Gradient Color" +#~ msgstr "Kleurverloop" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importeer een Impulse Response-bestand" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Kies een Impulse Response-bestand" + +#~ msgid "Aggressive Mode" +#~ msgstr "Agressieve modus" + +#~ msgid "Before" +#~ msgstr "Vóór" + +#~ msgid "After" +#~ msgstr "Na" + +#~ msgid "Loudness Range" +#~ msgstr "Bereik van geluidssterkte" + +#~ msgid "Loudness Compensator" +#~ msgstr "Geluidssterkte-compensatie" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "Based on" +#~ msgstr "Gebaseerd op" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Standaard samplesnelheid" + +#~ msgid "Default Source" +#~ msgstr "Standaardbron" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "File" +#~ msgstr "Bestand" + +#~ msgid "Configuration" +#~ msgstr "Instellingen" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Based on a" +#~ msgstr "Gebaseerd op" + +#~ msgid "Low-pass Frequency" +#~ msgstr "Low-pass-frequentie" + +#~ msgid "Advanced" +#~ msgstr "Geavanceerd" + +#~ msgid "Apply APO Preset" +#~ msgstr "APO-voorinstelling toepassen" + +#~ msgid "Detect Silence" +#~ msgstr "Stilte herkennen" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Plug de microfoon opnieuw in om de wijzigingen aan de zwarte lijst toe te " +#~ "passen" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Herstart de speler om de wijzigingen aan de zwarte lijst toe te passen" + +#~ msgid "Muted" +#~ msgstr "Gedempt" + +#~ msgid "Distant Headphones" +#~ msgstr "Koptelefoons veraf" + +#~ msgid "Niceness" +#~ msgstr "Niceness" + +#~ msgid "Priority Type" +#~ msgstr "Soort prioriteit" + +#~ msgid "Priority" +#~ msgstr "Prioriteit" + +#~ msgid "About" +#~ msgstr "Over" + +#~ msgid "Protocol" +#~ msgstr "Protocol" + +#~ msgid "Default Sample Format" +#~ msgstr "Standaard sampleformaat" + +#~ msgid "Channel Mapping" +#~ msgstr "Kanaaltoewijzing" + +#~ msgid "Resamplers" +#~ msgstr "Hersamplers" + +#~ msgid "Pipeline Input" +#~ msgstr "Invoerpijplijn" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Pipeline Output" +#~ msgstr "Uitvoerpijplijn" + +#~ msgid "Block Size" +#~ msgstr "Blokgrootte" + +#~ msgid "Maximum Frequency" +#~ msgstr "Maximale frequentie" diff --git a/po/news/pl.po b/po/news/pl.po new file mode 100644 index 0000000..593696d --- /dev/null +++ b/po/news/pl.po @@ -0,0 +1,2612 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the EasyEffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-18 18:11+0000\n" +"Last-Translator: Krzysztof Marcinek \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efekty dźwiękowe dla aplikacji PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects to zaawansowane narzędzie do manipulacji dźwiękiem. Zawiera " +"między innymi korektor, limiter, kompresor i narzędzie do generowania " +"pogłosu. Uzupełnieniem tego jest wbudowany analizator widma." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects jest następcą PulseEffects. EasyEffects wspiera jedynie serwer " +"audio PipeWire. Użytkownicy PulseAudio powinni zamiast tego użyć " +"PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Ponieważ EasyEffects używa domyślnego serwera dźwięku PipeWire, będzie on " +"działał z większością, jeśli nie wszystkimi używanymi programami. Wszystkie " +"obsługiwane programy są prezentowane w oknie głównym, gdzie każdy z nich " +"może być aktywowany indywidualnie." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Oprócz sterowania wyjściem dźwiękowym, EasyEffects jest w stanie zastosować " +"efekty do urządzenia wejściowego, takiego jak mikrofon. Jest to przydatne na " +"przykład przy nagrywaniu dźwięku, ale sprawdza się również podczas rozmów " +"głosowych." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Po uruchomieniu programu EasyEffects zapamiętuje on konfigurację użytą " +"podczas ostatniej sesji. Możliwe jest także zapisanie wszystkich bieżących " +"ustawień w postaci profili." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "Główna strona z widocznymi dwoma programami odtwarzającymi dźwięk" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "Strona wzmacniacza basów z widocznymi elementami sterowania dźwiękiem" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "Strona konwolwera przedstawiająca elementy sterujące dźwiękiem" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +#, fuzzy +msgid "Many translation updates" +msgstr "Uaktualnione tłumaczenia" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"Wtyczka automatycznej regulacji wzmocnienia umożliwia teraz użytkownikowi " +"wybór, która z trzech głośności jest używana do obliczania średniej" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"Wtyczka automatycznej regulacji wzmocnienia umożliwia teraz ustawienie " +"maksymalnej historii i nie używa już trybu histogramu `libebur128`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"Ikona EasyEffects została uaktualniona w taki sposób, że powinna być " +"widoczna w pulpitach QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"Opcja wiersza poleceń, która zwraca stan globalnego obejścia, działa " +"ponownie." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Filtr krzyżowy powinien lepiej radzić sobie z dynamicznymi przełącznikami " +"opóźnień w systemie PipeWire. W takich sytuacjach nie powinny już występować " +"skoki poziomu głośności." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Naprawiono błąd, który uniemożliwiał prawidłowe działanie mikrofonów " +"monofonicznych z EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Wsparcie dla następnej wersji PipeWire `0.3.44`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Filtr automatycznej regulacji wzmocnienia powinien lepiej radzić sobie z " +"dynamicznymi przełącznikami opóźnień w systemie PipeWire. W takich " +"sytuacjach nie powinny już występować skoki poziomu głośności." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Dodaliśmy opcję, która umożliwia zresetowanie głośności i stanu wyciszenia " +"naszych urządzeń wirtualnych podczas uruchamiania EasyEffects. Powinno to " +"pomóc w przypadkach, gdy z nieznanych przyczyn nasze urządzenia są wyciszane " +"przez serwer audio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Lepsza obsługa uśpienia komputera." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Uaktualnione tłumaczenia" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "W tym wydaniu dodano następujące funkcje:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Pasma" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Wprowadzono nowe ustawienie umożliwiające użytkownikowi wybranie limitu " +#~ "czasu bezczynności dla odtwarzaczy. Jeśli żaden klient nie odtwarza " +#~ "dźwięku" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "do lub nagrywanych z naszych urządzeń, których filtry zostaną usunięte po " +#~ "upływie limitu czasu. Ma to na celu zapewnienie" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "" +#~ "tego, że nie będziemy marnować mocy procesora na przetwarzanie ciszy." + +#~ msgid "mean." +#~ msgstr "geometrycznej." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Powinno to zapobiec przypadkom, gdy `Zintegrowana` głośność utknie na " +#~ "zawsze w tej samej wartości." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "To wydanie poprawia następujący błąd:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "W tym wydaniu dodano następującą funkcję:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Korektor, kompresor i inne efekty audio" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limiter;kompresor;pogłos;korektor;autogłośność;" + +#, fuzzy +#~ msgid "\"Presets\"" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Włącz" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Ustawienia" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Gołe ściany" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Programy" + +#~ msgid "Target" +#~ msgstr "Cel" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Maksymalne wzmocnienie" + +#, fuzzy +#~ msgid "Reset History" +#~ msgstr "Resetuj jakość" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Wzmocnienie wej." + +#~ msgid "Input" +#~ msgstr "Wejście" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Wzmocnienie wej." + +#~ msgid "Output" +#~ msgstr "Wyjście" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Wzmocnienie wej." + +#~ msgid "Reset" +#~ msgstr "Zresetuj" + +#, fuzzy +#~ msgid "Device" +#~ msgstr "Urządzenie wejściowe" + +#~ msgid "Name" +#~ msgstr "Nazwa" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Kompresor" + +#~ msgid "Listen" +#~ msgstr "Słuchaj" + +# Wpleć/wmieszaj/dodaj +#~ msgid "Blend Harmonics" +#~ msgstr "Wprowadź harmoniczne" + +#~ msgid "3rd" +#~ msgstr "Trzecie" + +#~ msgid "2nd" +#~ msgstr "Drugie" + +#~ msgid "Amount" +#~ msgstr "Ilość" + +#~ msgid "Harmonics" +#~ msgstr "Harmoniczne" + +#~ msgid "Scope" +#~ msgstr "Zakres" + +#~ msgid "Floor" +#~ msgstr "Podłoga" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Podłoga" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Programy" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Programy" + +#~ msgid "Compressor" +#~ msgstr "Kompresor" + +#~ msgid "Mode" +#~ msgstr "Tryb" + +#, fuzzy +#~ msgid "Downward" +#~ msgstr "Dół" + +#, fuzzy +#~ msgid "Compression Mode" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Próg" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Ilość" + +#~ msgid "Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Czas zaniku" + +#~ msgid "Threshold" +#~ msgstr "Próg" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Próg" + +#~ msgid "Release" +#~ msgstr "Wyzwolenie" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Wyzwolenie" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Próg" + +#~ msgid "Ratio" +#~ msgstr "Stosunek" + +#~ msgid "Knee" +#~ msgstr "Kolano" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#~ msgid "Makeup" +#~ msgstr "Wzmocnienie" + +#~ msgid "Sidechain" +#~ msgstr "Łańcuch boczny" + +#~ msgid "Peak" +#~ msgstr "Szczyt" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#, fuzzy +#~ msgid "Low-Pass" +#~ msgstr "Dolnoprzepustowy" + +#~ msgid "Uniform" +#~ msgstr "Równomierny" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Łańcuch boczny" + +#~ msgid "Source" +#~ msgstr "Źródło" + +#, fuzzy +#~ msgid "Middle" +#~ msgstr "Środek" + +#~ msgid "Side" +#~ msgstr "Strona" + +#~ msgid "Left" +#~ msgstr "Lewy" + +#~ msgid "Right" +#~ msgstr "Prawy" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Łańcuch boczny" + +# Wejście? +#, fuzzy +#~ msgid "Feed-back" +#~ msgstr "Feed" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Łańcuch boczny" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Urządzenie wejściowe" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Programy" + +#~ msgid "Reactivity" +#~ msgstr "Reaktywność" + +# Podgląd, albo "patrz w przód", zapas +#~ msgid "Lookahead" +#~ msgstr "Lookahead" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Łańcuch boczny" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Filtr górnoprzepustowy" + +#~ msgid "Frequency" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "12 dB/oct" +#~ msgstr "12dB/okt dolnoprzepustowy" + +#, fuzzy +#~ msgid "24 dB/oct" +#~ msgstr "24dB/okt dolnoprzepustowy" + +#, fuzzy +#~ msgid "36 dB/oct" +#~ msgstr "36dB/okt dolnoprzepustowy" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Filtr górnoprzepustowy" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Tłumienie wysokich tonów" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Filtr górnoprzepustowy" + +#~ msgid "Gain" +#~ msgstr "Wzmocnienie" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Kanały" + +#~ msgid "R" +#~ msgstr "P" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Płaska odpowiedź" + +#, fuzzy +#~ msgid "Stereo Width" +#~ msgstr "Powiązanie stereo" + +#~ msgid "Spectrum" +#~ msgstr "Widmo" + +#~ msgid "Autogain" +#~ msgstr "Autowzmocnienie" + +# Próbkowanie? +#~ msgid "Rate" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Samples" +#~ msgstr "Resampler" + +#, fuzzy +#~ msgid "Duration" +#~ msgstr "Kalibracja" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Płaska odpowiedź" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Wyjście" + +#, fuzzy +#~ msgid "Import Impulse" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Płaska odpowiedź" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Płaska odpowiedź" + +#~ msgid "Default" +#~ msgstr "Domyślne" + +#~ msgid "Cutoff" +#~ msgstr "Odcięcie" + +# Wejście? +#~ msgid "Feed" +#~ msgstr "Feed" + +#~ msgid "Mute" +#~ msgstr "Wycisz" + +#~ msgid "Detection" +#~ msgstr "Wykrycie" + +#~ msgid "Wide" +#~ msgstr "Szeroki" + +#~ msgid "Split" +#~ msgstr "Podzielony" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Podzielony" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Szczyt" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Wzmocnienie" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Poziom" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Szczyt Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Częstotliwość" + +#~ msgid "Laxity" +#~ msgstr "Swoboda" + +#~ msgid "Detected" +#~ msgstr "Wykryto" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Redukcja" + +#~ msgid "Frame Size" +#~ msgstr "Rozmiar ramki" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filtr" + +#~ msgid "Bands" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Split Channels" +#~ msgstr "Kanały" + +#~ msgid "Flat Response" +#~ msgstr "Płaska odpowiedź" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Przelicz częstotliwości" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "High Pass" +#~ msgstr "Filtr górnoprzepustowy" + +#~ msgid "High Shelf" +#~ msgstr "Górna wartość" + +#, fuzzy +#~ msgid "Low Pass" +#~ msgstr "Dolnoprzepustowy" + +#~ msgid "Low Shelf" +#~ msgstr "Dolna Wartość" + +#~ msgid "Resonance" +#~ msgstr "Rezonans" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Dolnoprzepustowy" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Pasma" + +#~ msgid "Width" +#~ msgstr "Szerokość" + +#~ msgid "Quality" +#~ msgstr "Jakość" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Sufit" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Wykrycie" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Kompresor" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/okt dolnoprzepustowy" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/okt dolnoprzepustowy" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/okt dolnoprzepustowy" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/okt górnoprzepustowy" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/okt górnoprzepustowy" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/okt górnoprzepustowy" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/okt środkowoprzepustowy" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/okt środkowoprzepustowy" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/okt środkowoprzepustowy" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/okt Środkowozaporowy" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/okt środkowozaporowy" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/okt środkowozaporowy" + +#~ msgid "Inertia" +#~ msgstr "Inercja" + +#~ msgid "Gate" +#~ msgstr "Bramka" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Wyzwolenie" + +#~ msgid "Oversampling" +#~ msgstr "Nadpróbkowanie" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Szeroki" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Szeroki" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Szerokość" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Szerokość" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Szerokość" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Programy" + +#~ msgid "Stereo Link" +#~ msgstr "Powiązanie stereo" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Łańcuch boczny" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Lewy" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Prawy" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Łańcuch boczny" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Łańcuch boczny" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Rozmiar ramki" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Wyjście" + +#~ msgid "Ceiling" +#~ msgstr "Sufit" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Tryb" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Łańcuch boczny" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Łańcuch boczny" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtr" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Filtr" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filtr górnoprzepustowy" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Filtr górnoprzepustowy" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Podzielony" + +#, fuzzy +#~ msgid "Split 1/2" +#~ msgstr "Podzielony" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Split 2/3" +#~ msgstr "Podzielony" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Split 3/4" +#~ msgstr "Podzielony" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Sub Band" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Wyzwolenie" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Próg" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Wzmocnienie" + +#~ msgid "Max Reduction" +#~ msgstr "Redukcja" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Low Band" +#~ msgstr "Dolnoprzepustowy" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Wyzwolenie" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Próg" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Wzmocnienie" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Mid Band" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Wyzwolenie" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Próg" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Wzmocnienie" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "High Band" +#~ msgstr "Górnoprzepustowy" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Wyzwolenie" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Próg" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Wzmocnienie" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Redukcja wzmocnienia" + +#~ msgid "General" +#~ msgstr "Ogólne" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Użyj domyślnych" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Urządzenie wejściowe" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Użyj domyślnych" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Pogłos" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Nadpróbkowanie" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Maksymalne wzmocnienie" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Domyślne" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Profile: " + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Profile: " + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Urządzenie wejściowe" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Clients" +#~ msgstr "Centy" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Centy" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Sygnały testowe" + +#~ msgid "State" +#~ msgstr "Stan" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Włącz" + +#~ msgid "Channels" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Sinus tabl." + +#~ msgid "White Noise" +#~ msgstr "Biały szum" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Górna wartość" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Jakość" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Format" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Czystość" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Wykrycie" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Kompresor" + +#~ msgid "Cents" +#~ msgstr "Centy" + +#~ msgid "Semitones" +#~ msgstr "Półtony" + +#~ msgid "Octaves" +#~ msgstr "Oktawy" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Efekty wejściowe" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "Ogólne" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Urządzenie wejściowe" + +#~ msgid "Use Dark Theme" +#~ msgstr "Używaj ciemnego motywu" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Widmo" + +#~ msgid "Points" +#~ msgstr "Punkty" + +#~ msgid "Height" +#~ msgstr "Wysokość" + +#, fuzzy +#~ msgid "Line Width" +#~ msgstr "Szerokość" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Maksimum" + +#~ msgid "Maximum" +#~ msgstr "Maksimum" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Profile: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Utwórz profil" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Profile: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Profile: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Importuj profile" + +#~ msgid "High Frequency Damping" +#~ msgstr "Tłumienie wysokich tonów" + +#~ msgid "Room Size" +#~ msgstr "Rozmiar pomieszczenia" + +#~ msgid "Small" +#~ msgstr "Mały" + +#~ msgid "Medium" +#~ msgstr "Średni" + +#~ msgid "Large" +#~ msgstr "Duży" + +#~ msgid "Tunnel" +#~ msgstr "Tunel" + +#~ msgid "Large/smooth" +#~ msgstr "Duży/gładki" + +#~ msgid "Experimental" +#~ msgstr "Experymentalne" + +#~ msgid "Diffusion" +#~ msgstr "Rozproszenie" + +#~ msgid "Pre Delay" +#~ msgstr "Przedopóźnienie" + +#~ msgid "Decay Time" +#~ msgstr "Czas zaniku" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Ilość" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Poziom docelowy" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Ilość" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Poziom" + +#~ msgid "Bass Cut" +#~ msgstr "Odcięcie basu" + +#~ msgid "Treble Cut" +#~ msgstr "Odcięcie sopranu" + +#~ msgid "Ambience" +#~ msgstr "Otoczenie" + +#~ msgid "Empty Walls" +#~ msgstr "Gołe ściany" + +#~ msgid "Room" +#~ msgstr "Pokój" + +#~ msgid "Large Empty Hall" +#~ msgstr "Duża pusta sala" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Duża pełna sala" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Models" +#~ msgstr "Tryb" + +#, fuzzy +#~ msgid "Active Model" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Overview" +#~ msgstr "Urządzenie wejściowe" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balans" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Balans" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Poziom" + +#, fuzzy +#~ msgid "Stereo Matrix" +#~ msgstr "Powiązanie stereo" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Wzmacniacz stereo" + +#~ msgid "Invert Phase" +#~ msgstr "Odwróć fazę" + +#, fuzzy +#~ msgid "Side Level" +#~ msgstr "Poziom" + +#, fuzzy +#~ msgid "Side Balance" +#~ msgstr "Balans" + +#, fuzzy +#~ msgid "Middle Level" +#~ msgstr "Środek" + +#, fuzzy +#~ msgid "Middle Panorama" +#~ msgstr "Panorama" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Delay L/R" +#~ msgstr "Opóźnienie" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Opóźnienie" + +#, fuzzy +#~ msgid "Stereo Base" +#~ msgstr "Wzmacniacz stereo" + +#, fuzzy +#~ msgid "Stereo Phase" +#~ msgstr "Wzmacniacz stereo" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "Ustawienia" + +#, fuzzy +#~ msgid "Unknown" +#~ msgstr "nieznany" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Output Presets: " +#~ msgstr "Presety wyjściowe: " + +#, fuzzy +#~ msgid "Input Presets: " +#~ msgstr "Presety wejściowe: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efekty dźwiękowe dla aplikacji PipeWire" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Wyłącz EasyEffects. Przydatne przy pracy w trybie usługi." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Załaduj profil. Przykład: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Resetuj EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Schowaj okno." + +#~ msgid "Show available presets." +#~ msgstr "Pokaż dostępne profile." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Płaska odpowiedź" + +#~ msgid "Import Impulse File" +#~ msgstr "Importuj plik Impulse" + +#~ msgid "Open" +#~ msgstr "Otwórz" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#, fuzzy +#~ msgid "Impulse Response" +#~ msgstr "Płaska odpowiedź" + +#~ msgid "Load Impulse" +#~ msgstr "Wczytaj Impuls" + +#~ msgid "Remove Impulse" +#~ msgstr "Usuń Impuls" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Płaska odpowiedź" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Nie można załadować pliku Impulse" + +#~ msgid "Recorders" +#~ msgstr "Rejestratory" + +#~ msgid "Players" +#~ msgstr "Odtwarzacze" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "nieskończoność" + +#~ msgid "Import APO Preset File" +#~ msgstr "Importuj plik profilu APO" + +#~ msgid "APO Presets" +#~ msgstr "Profile APO" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Wzmocnienie wej." + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Modele RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Wzmacniacz basów" + +#~ msgid "Bass Loudness" +#~ msgstr "Głośność basu" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Krystalizator" + +#~ msgid "Deesser" +#~ msgstr "De-Esser" + +#~ msgid "Delay" +#~ msgstr "Opóźnienie" + +#~ msgid "Echo Canceller" +#~ msgstr "Usuwanie echa" + +#~ msgid "Equalizer" +#~ msgstr "Korektor" + +#~ msgid "Exciter" +#~ msgstr "Exciter" + +#~ msgid "Filter" +#~ msgstr "Filtr" + +#~ msgid "Limiter" +#~ msgstr "Limiter" + +#~ msgid "Maximizer" +#~ msgstr "Maximizer" + +#, fuzzy +#~ msgid "Multiband Compressor" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Multiband Gate" +#~ msgstr "Kompresor" + +#~ msgid "Pitch" +#~ msgstr "Wysokość" + +#~ msgid "Reverberation" +#~ msgstr "Pogłos" + +#~ msgid "Noise Reduction" +#~ msgstr "Redukcja szumu" + +#~ msgid "Stereo Tools" +#~ msgstr "Narzędzia stereo" + +#~ msgid "Average" +#~ msgstr "Średnia" + +#~ msgid "Failed" +#~ msgstr "Niepowodzenie" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Użyj domyślnych" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Kompresor" + +#~ msgid "Import Presets" +#~ msgstr "Importuj profile" + +#~ msgid "Start Service at Login" +#~ msgstr "Uruchom usługę przy logowaniu" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibracja mikrofonu" + +#~ msgid "Plugins" +#~ msgstr "Wtyczki" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Włącz" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Włącz" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Oczekiwanie" + +#~ msgid "Faster" +#~ msgstr "Szybszy" + +#~ msgid "Preserve Formant" +#~ msgstr "Zachowaj formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Podłoga" + +#~ msgid "Output Effects" +#~ msgstr "Efekty wyjściowe" + +#~ msgid "Settings" +#~ msgstr "Ustawienia" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Ustawienia" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Kalibracja" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Sygnały testowe" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Sygnały testowe" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Widmo" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Widmo" + +#~ msgid "Spectrum Color" +#~ msgstr "Kolor widma" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Wysokość" + +#~ msgid "Dry" +#~ msgstr "Suchy" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "Poziom" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Dolnoprzepustowy" + +#~ msgid "Input Limiter" +#~ msgstr "Limiter wejścia" + +#~ msgid "Calibration" +#~ msgstr "Kalibracja" + +#~ msgid "Limit" +#~ msgstr "Limit" + +#~ msgid "ASC" +#~ msgstr "ASC" + +# Tłumienie? +#~ msgid "Attenuation" +#~ msgstr "Tłumienie" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Efekty dźwiękowe dla programu Pulseaudio" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Efekty dźwiękowe dla programu Pulseaudio" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibracja mikrofonu" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Prostokąt" + +#~ msgid "Saw" +#~ msgstr "Piła" + +#~ msgid "Triangle" +#~ msgstr "Trójkąt" + +#~ msgid "Silence" +#~ msgstr "Cisza" + +#~ msgid "Pink Noise" +#~ msgstr "Różowy szum" + +# tyknięcia, kliknięcia +#~ msgid "Ticks" +#~ msgstr "Działki" + +#~ msgid "Gaussian Noise" +#~ msgstr "Szum Gaussa" + +#~ msgid "Red Noise" +#~ msgstr "Szum czerwony" + +#~ msgid "Blue Noise" +#~ msgstr "Szum niebieski" + +#~ msgid "Violet Noise" +#~ msgstr " Szum fioletowy" + +#~ msgid "Volume" +#~ msgstr "Głośność" + +#~ msgid "Window" +#~ msgstr "Okno" + +#~ msgid "Measure Noise" +#~ msgstr "Mierz szum" + +#~ msgid "Subtract Noise" +#~ msgstr "Odejmij szum" + +#~ msgid "Extended Filter" +#~ msgstr "Rozszerzony Filtr" + +#~ msgid "Low" +#~ msgstr "Nisko" + +#~ msgid "Moderate" +#~ msgstr "Średni" + +#~ msgid "High" +#~ msgstr "Wysoki" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Poziom tłumienia" + +#~ msgid "Delay Agnostic" +#~ msgstr "Niezależny od opóźnienia" + +#~ msgid "Very High" +#~ msgstr "Bardzo wysokie" + +#~ msgid "Noise Suppressor" +#~ msgstr "Tłumienie szumu" + +#~ msgid "Adaptive Digital" +#~ msgstr "Cyfrowy adaptacyjny" + +#~ msgid "Fixed Digital" +#~ msgstr "Cyfrowy ustalony" + +#~ msgid "Gain Controller" +#~ msgstr "Kontroler wzmocnienia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Szansa wykrycia" + +#~ msgid "Very Low" +#~ msgstr "Bardzo niskie" + +#~ msgid "Voice Detector" +#~ msgstr "Wykrywanie głosu" + +#~ msgid "Use Custom Color" +#~ msgstr "Użyj własnego koloru" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Domyślne" + +#, fuzzy +#~ msgid "Default Source" +#~ msgstr "Domyślne" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Kalibracja" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Przelicz częstotliwości" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Ustawienia zaawansowane" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Wykrycie" + +#~ msgid "Muted" +#~ msgstr "Wyciszony" + +#~ msgid "Distant Headphones" +#~ msgstr "Odległe słuchawki" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Resampler" + +#~ msgid "Buffer" +#~ msgstr "Bufor" + +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Rozmiar pomieszczenia" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#~ msgid "paused" +#~ msgstr "zatrzymany" + +#~ msgid "playing" +#~ msgstr "gra" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Redukcja wzmocnienia" diff --git a/po/news/pt_BR.po b/po/news/pt_BR.po new file mode 100644 index 0000000..f4bb891 --- /dev/null +++ b/po/news/pt_BR.po @@ -0,0 +1,2990 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# Wellington Wallace Miguel Melo , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-06-27 22:36+0000\n" +"Last-Translator: Vander \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.13.1-dev\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efeitos de áudio para aplicativos que utilizam PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects é uma ferramenta avançada de edição de áudio. Ele inclui " +"equalizador, limitador, compressor e um plugin de reverberação. Estas " +"ferramentas são complementadas por um analisador de espectro." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects é o sucessor do PulseEffects. EasyEffects suporta apenas o " +"PipeWire como servidor de áudio. Os usuários do PulseAudio devem usar o " +"PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Como o EasyEffects usa o servidor de som PipeWire, ele funcionará com a " +"maioria, se não todos os aplicativos que você usa. Todos os aplicativos " +"suportados são apresentados na janela principal, onde cada um pode ser " +"ativado individualmente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Além de manipular a saída de som, o EasyEffects é capaz de aplicar efeitos a " +"um dispositivo de entrada, como um microfone. Isso é, por exemplo, útil na " +"gravação de áudio, mas também funciona bem durante conversas de voz." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Quando o EasyEffects for iniciado, ele lembrará convenientemente a " +"configuração usada na última sessão. Também é possível salvar todas as " +"configurações atuais como perfis." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "A página principal mostrando dois aplicativos de saída de áudio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "A página do aprimoramento de graves mostrando controles de áudio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "A página de convolução mostrando os controles de áudio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "A interface do plugin de tom foi melhorada" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" +"O ícone do nosso aplicativo é agora compatível com ambientes que usam QT" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" +"Nosso código de lista de bloqueio usará a tag `application.id` se o fluxo a " +"definir" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +#, fuzzy +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" +"Para evitar problemas com mouse, role as entradas na lista de aplicativos " +"mostrada em nossos `Reprodutores/Gravadores`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" +"Quando nenhum aplicativo estiver disponível para exibição em `Reprodutores/" +"Gravadores` uma mensagem será mostrada ao usuário" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "Muitas atualizações de tradução" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +#, fuzzy +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" +"Corrigido um bug em que o EasyEffects travava quando o número de pontos " +"exibidos no espectro era alterado enquanto" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" +"O valor de latência do pipeline exibido em nossa janela pode estar errado em " +"algumas situações. Isso foi corrigido." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +#, fuzzy +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"O plugin de ganho automático agora permite que o usuário selecione quais dos " +"três tipos de sonoridade são usados para calcular a" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +#, fuzzy +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"O plugin de ganho automático agora permite que o histórico máximo seja " +"definido e não usa mais o modo de histograma `libebur128`." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"O ícone do EasyEffects foi atualizado de uma forma que deve torná-lo visível " +"nos desktops QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"A opção de linha de comando que retorna o estado de desvio global está " +"funcionando novamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"O filtro de alimentação cruzada deve lidar melhor com os interruptores de " +"latência dinâmica PipeWire's. Os saltos no nível de volume não devem mais " +"acontecer nestas situações." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Corrigido um bug que impedia que os microfones mono funcionassem " +"corretamente com o EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Suporte à próxima versão do PipeWire `0.3.44`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"O filtro de ganho automático deve lidar melhor com as opções de latência " +"dinâmica do PipeWire. Saltos no nível de volume não devem mais acontecer " +"nessas situações." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Adicionamos uma opção que permite os estados de volume e mudo de nossos " +"dispositivos virtuais serem reiniciados quando EasyEffects inicia. Isto deve " +"ajudar nos casos em que nossos dispositivos são silenciados pelo servidor de " +"áudio por razões desconhecidas." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Melhor suporte para suspensão do computador." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Traduções atualizadas" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Corrigido um bug em que tentar criar um perfil de carregamento automático " +"sem ter predefinições causava o travamento do aplicativo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"Corrigido um bug em que definir uma banda de equalizador `qualidade` para " +"`zero` levaria a uma falha do aplicativo." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita é usado para criar algumas partes de nossa janela e para lidar " +"com a alternância entre temas claros e escuros." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "O menu de configurações foi redesenhado usando widgets LibAdwaita." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +#, fuzzy +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"O recurso de importação predefinida do equalizador APO foi aprimorado para " +"aplicar não apenas o filtro Bell, mas também outros suportados" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"A função `Redefinir todas as configurações` em nosso menu deve funcionar no " +"Flatpak agora." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"Temos uma nova opção que permite ao usuário desabilitar nossos menus `auto-" +"ocultar`. Isso pode ajudar a solucionar alguns bugs que os menus popover têm " +"atualmente no gtk4." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"Análise mais robusta para importar predefinições de APO salvas com vírgula " +"como separador de milhares na banda de frequência central." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"A biblioteca fmt é uma nova dependência, pelo menos enquanto os compiladores " +"c++ não implementarem seus recursos. A expectativa é que isso aconteça nos " +"próximos anos." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM e GLIBMM não são mais uma dependência. Agora usamos gtk4 diretamente." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"Agora é possível combinar respostas de impulso na interface Convolução. Um " +"novo arquivo de impulso é gerado e deve estar visível na lista de impulsos." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"Aprimorados os desenhos de `eixo x` aprimorados em nossas plotagens. Agora o " +"número de rótulos é ajustado dinamicamente dependendo da largura da nossa " +"janela." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"A documentação foi atualizada refletindo os novos recursos do EasyEffects. " +"Referências antigas sobre PulseEffects foram removidas. O botão de " +"documentação foi adicionado na seção de menu." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"Quando um botão giratório é preenchido com um valor fora do intervalo, agora " +"ele é atualizado com o valor mais baixo/mais alto em vez de redefinir para o " +"anterior." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" +"A janela do aplicativo agora lembra o estado maximizado e o restaura no " +"próximo evento de abertura." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "A biblioteca `tbb` é uma nova dependência" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" +"Os plugins limitador e compressor multibanda agora podem usar uma cadeia " +"lateral externa opcional." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" +"O plugin Ganho Automático agora permite que o usuário selecione qual volume " +"que é utilizado como referência para a correção do volume." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "O Volume Cúbico opcional pode ser ativado em Configurações Gerais." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "Impediu um caso em que o Spectrum estava travando." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"O Pavucontrol não é mais adicionado à lista de aplicativos de entrada em " +"sistemas com localização diferente do inglês." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +#, fuzzy +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" +"O menu de resposta ao impulso de convolução foi aprimorado para solucionar " +"um problema em que os arquivos de impulso não eram carregados quando apenas " +"um estava disponível no menu" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta versão adiciona os seguintes recursos:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Este lançamento corrige os seguintes bugs:" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "Tab não mostram mais uma escala de volume. Mais detalhes sobre o problema " +#~ "e a solução para ele podem ser encontrados em #1211" + +#~ msgid "and #1427" +#~ msgstr "e #1427" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "nosso pipeline estava ativo e o widget de espectro estava visível" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Há uma nova configuração que permite ao usuário selecionar um tempo " +#~ "limite de inatividade para o pipeline. Quando nenhum cliente está " +#~ "reproduzindo" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "ou gravando de nossos dispositivos, os filtros serão desconectados após o " +#~ "tempo limite ser alcançado. Isso é feito para garantir que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "não desperdiçamos energia da CPU processando silêncio." + +#~ msgid "mean." +#~ msgstr "média geométrica." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Isto deve evitar os casos em que o ruído \"Integrado\" fica preso para " +#~ "sempre no mesmo valor." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta versão corrige o seguinte bug:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esse lançamento adiciona o seguinte recurso:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Equalizador, Compressor e Outros Efeitos de Áudio" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limitador;compressor;reverberação;equalizador;autovolume;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Predefinições\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Habilitar" + +#~ msgid "Exclude" +#~ msgstr "Excluir" + +#~ msgid "Mute Application" +#~ msgstr "Silenciar o Aplicativo" + +#~ msgid "Application Volume" +#~ msgstr "Volume do Aplicativo" + +#~ msgid "_Preferences" +#~ msgstr "_Preferências" + +#~ msgid "_Manual" +#~ msgstr "_Manual" + +#~ msgid "_Shortcuts" +#~ msgstr "_Atalhos" + +#~ msgid "_Reset Settings" +#~ msgstr "_Redefinir as Configurações" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Sobre EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Predefinições" + +#~ msgid "Presets Menu" +#~ msgstr "Menu de Predefinições" + +#~ msgid "Global Bypass" +#~ msgstr "Bypass Global" + +#~ msgid "Primary Menu" +#~ msgstr "Menu Principal" + +#~ msgid "EasyEffects Window" +#~ msgstr "Janela do EasyEffects" + +#~ msgid "Applications List" +#~ msgstr "Lista de Aplicativos" + +#~ msgid "Empty List" +#~ msgstr "Lista vazia" + +#~ msgid "No Audio Application Available" +#~ msgstr "Nenhum aplicativo de áudio disponível" + +#~ msgid "Target" +#~ msgstr "Alvo" + +#~ msgid "Maximum History" +#~ msgstr "Histórico máximo" + +#~ msgid "Reference" +#~ msgstr "Referência" + +#~ msgid "Momentary" +#~ msgstr "Momentâneo" + +#~ msgid "Short-Term" +#~ msgstr "Curto Prazo" + +#~ msgid "Integrated" +#~ msgstr "Integrada" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Média Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Média Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Média Geométrica" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Média Geométrica" + +#~ msgid "Reset History" +#~ msgstr "Redefinir Histórico" + +#~ msgid "Relative" +#~ msgstr "Relativo" + +#~ msgid "Range" +#~ msgstr "Alcance" + +#~ msgid "Loudness" +#~ msgstr "Sonoridade" + +#~ msgid "Output Gain" +#~ msgstr "Ganho de Saída" + +#~ msgid "Input" +#~ msgstr "Entrada" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Ganho de Entrada do Plugin" + +#~ msgid "Output" +#~ msgstr "Saída" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Ganho de Saída do Plugin" + +#~ msgid "Reset" +#~ msgstr "Resetar" + +#~ msgid "Using" +#~ msgstr "Usando" + +#~ msgid "Device" +#~ msgstr "Dispositivo" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Profile" +#~ msgstr "Perfil" + +#~ msgid "Preset" +#~ msgstr "Predefinição" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Remover este arquivo de predefinição" + +#~ msgid "Listen" +#~ msgstr "Escutar" + +#~ msgid "Blend Harmonics" +#~ msgstr "Mistura de Harmônicos" + +#~ msgid "3rd" +#~ msgstr "3°" + +#~ msgid "2nd" +#~ msgstr "2°" + +#~ msgid "Amount" +#~ msgstr "Quantidade" + +#~ msgid "Harmonics" +#~ msgstr "Harmônico" + +#~ msgid "Scope" +#~ msgstr "Escopo" + +#~ msgid "Floor" +#~ msgstr "Piso" + +#~ msgid "Floor Value" +#~ msgstr "Valor do piso" + +#~ msgid "Link" +#~ msgstr "Ligação" + +#~ msgid "Application Name" +#~ msgstr "Nome do Aplicativo" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Mostrar aplicativos bloqueados" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Lista de aplicativos bloqueados" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Mostrar aplicativos bloqueados" + +#~ msgid "Compressor" +#~ msgstr "Compressor" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Downward" +#~ msgstr "Para Baixo" + +#~ msgid "Upward" +#~ msgstr "Para Cima" + +#~ msgid "Boosting" +#~ msgstr "Impulsionando" + +#~ msgid "Compression Mode" +#~ msgstr "Modo de Compressão" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Limiar de Impulso" + +#~ msgid "Boost Amount" +#~ msgstr "Valor do reforço" + +#~ msgid "Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Tempo de Ataque" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Limiar de Ataque" + +#~ msgid "Release" +#~ msgstr "Liberação" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Tempo de liberação" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Limiar de liberação" + +#~ msgid "Ratio" +#~ msgstr "Razão" + +#~ msgid "Knee" +#~ msgstr "Joelho" + +#~ msgid "Makeup" +#~ msgstr "Ganho de Saída" + +#~ msgid "Sidechain" +#~ msgstr "Cadeia Lateral" + +#~ msgid "Peak" +#~ msgstr "Pico" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Passa-Baixa" + +#~ msgid "Uniform" +#~ msgstr "Uniforme" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Modo de cadeia lateral" + +#~ msgid "Source" +#~ msgstr "Fonte" + +#~ msgid "Middle" +#~ msgstr "Meio" + +#~ msgid "Side" +#~ msgstr "Lado" + +#~ msgid "Left" +#~ msgstr "Esquerda" + +#~ msgid "Right" +#~ msgstr "Direita" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Fonte da cadeia lateral" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Feed-forward" +#~ msgstr "Avanço de alimentação" + +#~ msgid "Feed-back" +#~ msgstr "Retorno" + +#, fuzzy +#~ msgid "External" +#~ msgstr "Externo" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Tipo de cadeia lateral" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Dispositivo de Entrada" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Pré-Amplificação" + +#~ msgid "Reactivity" +#~ msgstr "Reatividade" + +#~ msgid "Lookahead" +#~ msgstr "Antevisão" + +#~ msgid "Sidechain Filters" +#~ msgstr "Filtros da cadeia lateral" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Passa-alta" + +#~ msgid "Frequency" +#~ msgstr "Frequência" + +#~ msgid "Off" +#~ msgstr "Desligado" + +#~ msgid "12 dB/oct" +#~ msgstr "12dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36dB/oct" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Filtro Passa-Alta" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Frequências Mais Altas" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Filtro Passa-Alta" + +#~ msgid "Gain" +#~ msgstr "Ganho" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Inclinação" + +#~ msgid "Curve" +#~ msgstr "Curva" + +#~ msgid "L" +#~ msgstr "L" + +#~ msgid "Left Channel" +#~ msgstr "Canal esquerdo" + +#~ msgid "R" +#~ msgstr "R" + +#~ msgid "Right Channel" +#~ msgstr "Canal direito" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Resposta de Impulso" + +#~ msgid "Combine" +#~ msgstr "Combinar" + +#~ msgid "Stereo Width" +#~ msgstr "Largura do Stereo" + +#~ msgid "Spectrum" +#~ msgstr "Espectro" + +#~ msgid "Log Scale" +#~ msgstr "Escala logarítmica" + +#~ msgid "Autogain" +#~ msgstr "Ganho Automático" + +#~ msgid "Rate" +#~ msgstr "Taxa" + +#~ msgid "Samples" +#~ msgstr "Amostras" + +#~ msgid "Duration" +#~ msgstr "Duração" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Resposta de Impulso" + +#~ msgid "First Kernel" +#~ msgstr "Primeiro Núcleo" + +#~ msgid "Second Kernel" +#~ msgstr "Segundo Núcleo" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Saída" + +#~ msgid "Combined Kernel Name" +#~ msgstr "Nome do Núcleo Combinado" + +#~ msgid "Import Impulse" +#~ msgstr "Importar Impulso" + +#~ msgid "Search" +#~ msgstr "Buscar" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Importar Arquivo com a Resposta de Impulso" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Importar Arquivo com a Resposta de Impulso" + +#~ msgid "Default" +#~ msgstr "Padrão" + +#~ msgid "Cutoff" +#~ msgstr "Corte" + +#~ msgid "Feed" +#~ msgstr "Alimentação" + +#~ msgid "Bypass" +#~ msgstr "Ignorar" + +#~ msgid "Mute" +#~ msgstr "Mudo" + +#~ msgid "Detection" +#~ msgstr "Detecção" + +#~ msgid "Wide" +#~ msgstr "Amplo" + +#~ msgid "Split" +#~ msgstr "Separado" + +#~ msgid "F1 Split" +#~ msgstr "Divisão F1" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frequência" + +#~ msgid "F2 Peak" +#~ msgstr "Pico F2" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frequência" + +#~ msgid "F1 Gain" +#~ msgstr "Ganho F1" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frequência" + +#~ msgid "F2 Level" +#~ msgstr "Nível F2" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frequência" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Pico Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frequência" + +#~ msgid "Laxity" +#~ msgstr "Frouxidão" + +#~ msgid "Detected" +#~ msgstr "Detectado" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Redução" + +#~ msgid "Frame Size" +#~ msgstr "Tamanho do Quadro" + +#~ msgid "Filter Length" +#~ msgstr "Comprimento do filtro" + +#~ msgid "Excluded Apps" +#~ msgstr "Aplicativos excluídos" + +#~ msgid "Bands" +#~ msgstr "Bandas" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#, fuzzy +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Canais Separados" + +#~ msgid "Flat Response" +#~ msgstr "Resposta Plana" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calcular Frequências" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "Predefinições" + +#~ msgid "Bell" +#~ msgstr "Sino" + +#~ msgid "High Pass" +#~ msgstr "Passa Altas" + +#~ msgid "High Shelf" +#~ msgstr "High Shelf" + +#~ msgid "Low Pass" +#~ msgstr "Passa-Baixa" + +#~ msgid "Low Shelf" +#~ msgstr "Low Shelf" + +#~ msgid "Notch" +#~ msgstr "Rejeita-faixa" + +#~ msgid "Resonance" +#~ msgstr "Ressonância" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Passa-Baixa" + +#~ msgid "Band Type" +#~ msgstr "Tipo de banda" + +#~ msgid "Band Mode" +#~ msgstr "Modo Banda" + +#~ msgid "Slope" +#~ msgstr "Inclinação" + +#~ msgid "Band Slope" +#~ msgstr "Inclinação da banda" + +#~ msgid "Width" +#~ msgstr "Largura" + +#~ msgid "Quality" +#~ msgstr "Qualidade" + +#~ msgid "Solo" +#~ msgstr "Sozinho" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Teto" + +#, fuzzy +#~ msgid "Ceil Value" +#~ msgstr "Valor do Teto" + +#~ msgid "API" +#~ msgstr "API" + +#, fuzzy +#~ msgid "Access" +#~ msgstr "Acesso" + +#~ msgid "Description" +#~ msgstr "Descrição" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Remover este arquivo de predefinição" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Passa-Baixa" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Passa-Baixa" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Passa-Baixa" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Passa-Alta" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Passa-Alta" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Passa-Alta" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Passa-Banda" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Passa-Banda" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Passa-Banda" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Rejeita-Faixa" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Rejeita-Faixa" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct Rejeita-Faixa" + +#~ msgid "Inertia" +#~ msgstr "Inércia" + +#~ msgid "Gate" +#~ msgstr "Portão" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Tempo de liberação" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Externo" + +#~ msgid "Gating" +#~ msgstr "Gating" + +#~ msgid "Oversampling" +#~ msgstr "Sobreamostragem" + +#, fuzzy +#~ msgid "Dither" +#~ msgstr "Dither" + +#, fuzzy +#~ msgid "Herm Thin" +#~ msgstr "Herm Fino" + +#~ msgid "Herm Wide" +#~ msgstr "Herm Amplo" + +#, fuzzy +#~ msgid "Herm Tail" +#~ msgstr "Cauda de Herm" + +#~ msgid "Exp Wide" +#~ msgstr "Exp Amplo" + +#~ msgid "Exp Tail" +#~ msgstr "Cauda de Exp" + +#~ msgid "Line Thin" +#~ msgstr "Linha Fina" + +#~ msgid "Line Wide" +#~ msgstr "Linha Larga" + +#~ msgid "Line Tail" +#~ msgstr "Cauda da Linha" + +#~ msgid "None" +#~ msgstr "Nenhuma" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Pré-amplificação de cadeia lateral" + +#~ msgid "Boost" +#~ msgstr "Impulso" + +#~ msgid "Stereo Link" +#~ msgstr "Elo Stereo" + +#~ msgid "External Sidechain" +#~ msgstr "Cadeia Lateral Externa" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Ganho Automático" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Ganho Automático" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Ganho Automático" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Ganho Automático" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Esquerda" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Direita" + +#~ msgid "Sidechain Left" +#~ msgstr "Cadeia Lateral Esquerda" + +#~ msgid "Sidechain Right" +#~ msgstr "Cadeia Lateral Direita" + +#~ msgid "Standard" +#~ msgstr "Padrão" + +#~ msgid "Flat" +#~ msgstr "Plano" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Tamanho do Quadro" + +#~ msgid "Output Volume" +#~ msgstr "Volume de Saída" + +#~ msgid "Ceiling" +#~ msgstr "Teto" + +#~ msgid "Operating Mode" +#~ msgstr "Modo operacional" + +#~ msgid "Classic" +#~ msgstr "Clássico" + +#~ msgid "Modern" +#~ msgstr "Moderno" + +#~ msgid "Sidechain Boost" +#~ msgstr "Impulso de Cadeia Lateral" + +#~ msgid "Bands List" +#~ msgstr "Lista de Bandas" + +#~ msgid "Band 1" +#~ msgstr "Banda 1" + +#~ msgid "Band 2" +#~ msgstr "Banda 2" + +#~ msgid "Band 3" +#~ msgstr "Banda 3" + +#~ msgid "Band 4" +#~ msgstr "Banda 4" + +#~ msgid "Band 5" +#~ msgstr "Banda 5" + +#~ msgid "Band 6" +#~ msgstr "Banda 6" + +#~ msgid "Band 7" +#~ msgstr "Banda 7" + +#~ msgid "Band 8" +#~ msgstr "Banda 8" + +#~ msgid "Band Start" +#~ msgstr "Início da Banda" + +#~ msgid "Band End" +#~ msgstr "Fim da Banda" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Modo de Compressão" + +#~ msgid "Band Bypass" +#~ msgstr "Ignorar a Banda" + +#, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Cadeia Lateral" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Filtro" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Filtro" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filtro Passa-Alta" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Filtro Passa-Alta" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Ganho de Entrada" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Curva" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Separado" + +#~ msgid "Split 1/2" +#~ msgstr "Disivão 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frequência" + +#~ msgid "Split 2/3" +#~ msgstr "Disivão 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frequência" + +#~ msgid "Split 3/4" +#~ msgstr "Disivão 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frequência" + +#~ msgid "Sub Band" +#~ msgstr "Banda" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Ignorar" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Redução de Ganho" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Liberação" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Ganho de Saída" + +#~ msgid "Max Reduction" +#~ msgstr "Redução" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Redução de Ganho" + +#~ msgid "Low Band" +#~ msgstr "Banda Baixa" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Ignorar" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Redução de Ganho" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Liberação" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Ganho de Saída" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Redução de Ganho" + +#~ msgid "Mid Band" +#~ msgstr "Banda Média" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Ignorar" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Redução de Ganho" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Liberação" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Ganho de Saída" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Redução de Ganho" + +#~ msgid "High Band" +#~ msgstr "Banda Alta" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Ignorar" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Redução de Ganho" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Ataque" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Liberação" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Limiar" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Bandas" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Ganho de Saída" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Redução de Ganho" + +#~ msgid "General" +#~ msgstr "Geral" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Usar Padrão" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Dispositivo de Entrada" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Usar Padrão" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Ganho de Entrada" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Reverberação" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Versão" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Versão" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Amostragem" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Frequência" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Ganho Máximo" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Saída Padrão" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Ganho de Entrada" + +#~ msgid "Output Presets" +#~ msgstr "Predefinições de Saída" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Lista de Predefinições de Saída" + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Dispositivo de Entrada" + +#~ msgid "Input Presets" +#~ msgstr "Predefinições de Entrada" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Lista de Predefinições de Entrada" + +#~ msgid "Modules" +#~ msgstr "Módulos" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Módulos" + +#~ msgid "Clients" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Clientes" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Sinais de Teste" + +#~ msgid "State" +#~ msgstr "Estado" + +#~ msgid "Enabled" +#~ msgstr "Habilitado" + +#~ msgid "Properties" +#~ msgstr "Propriedades" + +#~ msgid "Channels" +#~ msgstr "Canais" + +#~ msgid "Both" +#~ msgstr "Ambos" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Canais" + +#~ msgid "Waveform" +#~ msgstr "Forma de onda" + +#~ msgid "Sine Wave" +#~ msgstr "Onda senoidal" + +#~ msgid "White Noise" +#~ msgstr "Ruído Branco" + +#~ msgid "High Speed" +#~ msgstr "Alta velocidade" + +#~ msgid "High Quality" +#~ msgstr "Alta qualidade" + +#~ msgid "High Consistency" +#~ msgstr "Alta consistência" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formato" + +#~ msgid "Shifted" +#~ msgstr "Deslocado" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Predefinição" + +#~ msgid "Transients" +#~ msgstr "Transientes" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Clareza" + +#~ msgid "Mixed" +#~ msgstr "Misturado" + +#~ msgid "Smooth" +#~ msgstr "Suave" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detecção" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Compressão" + +#~ msgid "Percussive" +#~ msgstr "Percussivo" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Clipe Macio" + +#~ msgid "Phase" +#~ msgstr "Estágio" + +#~ msgid "Independent" +#~ msgstr "Independente" + +#~ msgid "Cents" +#~ msgstr "Centavos" + +#~ msgid "Semitones" +#~ msgstr "Semitons" + +#~ msgid "Octaves" +#~ msgstr "Oitavas" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Remover este arquivo de predefinição" + +#~ msgid "Add Effect" +#~ msgstr "Adicionar efeito" + +#~ msgid "No Effects" +#~ msgstr "Sem efeitos" + +#~ msgid "_General" +#~ msgstr "_Geral" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Dispositivo de Entrada" + +#~ msgid "Audio" +#~ msgstr "Áudio" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Processar Todas as Saídas" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Processar Todas as Entradas" + +#~ msgid "Style" +#~ msgstr "Estilo" + +#~ msgid "Use Dark Theme" +#~ msgstr "Usar Tema Escuro" + +#~ msgid "_Spectrum" +#~ msgstr "_Espectro" + +#~ msgid "Shape" +#~ msgstr "Forma" + +#~ msgid "Bars" +#~ msgstr "Barras" + +#~ msgid "Lines" +#~ msgstr "Linhas" + +#~ msgid "Dots" +#~ msgstr "Pontos" + +#~ msgid "Points" +#~ msgstr "Pontos" + +#~ msgid "Height" +#~ msgstr "Altura" + +#~ msgid "Line Width" +#~ msgstr "Largura da Linha" + +#~ msgid "Fill" +#~ msgstr "Preencher" + +#~ msgid "Color" +#~ msgstr "Cor" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frequência" + +#~ msgid "Minimum" +#~ msgstr "Mínimo" + +#~ msgid "Maximum" +#~ msgstr "Máximo" + +#~ msgid "Load" +#~ msgstr "Carregar" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Salvar Configurações atuais para este arquivo de predefinição" + +#~ msgid "Remove this preset file" +#~ msgstr "Remover este arquivo de predefinição" + +#~ msgid "New Output Preset Name" +#~ msgstr "Novo Nome de Predefinição de Saída" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Criar Predefinição" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importar Predefinições" + +#~ msgid "Search Output Preset" +#~ msgstr "Pesquisa de Predefinições de Saída" + +#~ msgid "Output Presets List" +#~ msgstr "Lista de Predefinições de Saída" + +#~ msgid "New Input Preset Name" +#~ msgstr "Novo Nome de Predefinição de Entrada" + +#~ msgid "Search Input Preset" +#~ msgstr "Pesquisar Predefinições de Entrada" + +#~ msgid "Input Presets List" +#~ msgstr "Lista de Predefinições de Entrada" + +#~ msgid "High Frequency Damping" +#~ msgstr "Amortecimento de Alta Frequência" + +#~ msgid "Room Size" +#~ msgstr "Tamanho do quarto" + +#~ msgid "Small" +#~ msgstr "Pequeno" + +#~ msgid "Medium" +#~ msgstr "Médio" + +#~ msgid "Large" +#~ msgstr "Grande" + +#~ msgid "Tunnel" +#~ msgstr "Túnel" + +#~ msgid "Large/smooth" +#~ msgstr "Grande/Suave" + +#~ msgid "Experimental" +#~ msgstr "Experimental" + +#~ msgid "Diffusion" +#~ msgstr "Difusão" + +#~ msgid "Pre Delay" +#~ msgstr "Pré Atraso" + +#~ msgid "Decay Time" +#~ msgstr "Tempo de Decaimento" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Quantidade" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Nível Alvo" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Quantidade" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Nível" + +#~ msgid "Bass Cut" +#~ msgstr "Corte de Grave" + +#~ msgid "Treble Cut" +#~ msgstr "Corte de Agudo" + +#~ msgid "Ambience" +#~ msgstr "Ambiente" + +#~ msgid "Empty Walls" +#~ msgstr "Paredes Vazias" + +#~ msgid "Room" +#~ msgstr "Quarto" + +#~ msgid "Large Empty Hall" +#~ msgstr "Grande Salão Vazio" + +#~ msgid "Disco" +#~ msgstr "Discoteca" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Grande Salão Ocupado" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Importar Impulso" + +#~ msgid "Models" +#~ msgstr "Modelos" + +#, fuzzy +#~ msgid "Active Model" +#~ msgstr "Modo Agressivo" + +#~ msgid "Overview" +#~ msgstr "Visão geral" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Abrir o Manual do EasyEffects" + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balanço" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Balanço" + +#~ msgid "Softclip" +#~ msgstr "Clipe Macio" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Clipe Macio" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matriz Stereo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "ED > ED (Stereo Padrão)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "ED > ML (Stereo para Meio-Lado)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "ML > ED (Meio-Lado para Stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "ED > EE (Canal Esquerdo Mono)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "ED > DD (Canal Direito Mono)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "ED > E+D (Soma Mono E+D)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "ED > DL (Alternar Canais Stereo)" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Base Stereo" + +#~ msgid "Invert Phase" +#~ msgstr "Inverter Fase" + +#~ msgid "Side Level" +#~ msgstr "Nível Lateral" + +#~ msgid "Side Balance" +#~ msgstr "Balanço Lateral" + +#~ msgid "Middle Level" +#~ msgstr "Nível do Meio" + +#~ msgid "Middle Panorama" +#~ msgstr "Panorama do Meio" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Ganho de Entrada" + +#~ msgid "Delay L/R" +#~ msgstr "Atraso E/D" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Atraso E/D" + +#~ msgid "Stereo Base" +#~ msgstr "Base Stereo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fase Stereo" + +#~ msgid "Running" +#~ msgstr "Correndo" + +#~ msgid "Suspended" +#~ msgstr "Suspenso" + +#~ msgid "Idle" +#~ msgstr "Parado" + +#~ msgid "Creating" +#~ msgstr "Criando" + +#~ msgid "Error" +#~ msgstr "Erro" + +#~ msgid "Unknown" +#~ msgstr "Desconhecido" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Canais" + +#~ msgid "Output Presets: " +#~ msgstr "Predefinições de Saída: " + +#~ msgid "Input Presets: " +#~ msgstr "Predefinições de Entrada: " + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efeitos de Áudio para Programas que Utilizam Pulseaudio" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Sair do EasyEffects. Útil quando executando em modo de serviço." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Carregar uma predefinição. Exemplo: easyeffects -l musica" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Redefinir o EasyEffects." + +#~ msgid "Show available presets." +#~ msgstr "Mostrar predefinições disponíveis." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Importar Arquivo com a Resposta de Impulso" + +#~ msgid "Import Impulse File" +#~ msgstr "Importar Arquivo com a Resposta de Impulso" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Impulse Response" +#~ msgstr "Resposta de Impulso" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Resposta de Impulso" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Importar Impulso" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Importar Arquivo com a Resposta de Impulso" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Não Foi Possível Carregar o Arquivo com o Impulso" + +#~ msgid "Recorders" +#~ msgstr "Gravadores" + +#~ msgid "Players" +#~ msgstr "Reprodutores" + +#~ msgid "Effects" +#~ msgstr "Efeitos" + +#~ msgid "infinity" +#~ msgstr "infinito" + +#, fuzzy +#~ msgid "Import APO Preset File" +#~ msgstr "Importar Predefinições" + +#, fuzzy +#~ msgid "APO Presets" +#~ msgstr "Predefinições" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Remover este arquivo de predefinição" + +#~ msgid "Remove" +#~ msgstr "Remover" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Ganho de Entrada" + +#, fuzzy +#~ msgid "Add" +#~ msgstr "Adicionar" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Importar Predefinições" + +#~ msgid "Import Model File" +#~ msgstr "Importar Arquivo de Modelo" + +#~ msgid "RNNoise Models" +#~ msgstr "Modelos RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Reforçador de Graves" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Volume do baixo" + +#~ msgid "Convolver" +#~ msgstr "Convolução" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Cristalizador" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Atraso" + +#~ msgid "Echo Canceller" +#~ msgstr "Cancelador de Eco" + +#~ msgid "Equalizer" +#~ msgstr "Equalizador" + +#~ msgid "Exciter" +#~ msgstr "Excitador" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Limiter" +#~ msgstr "Limitador" + +#~ msgid "Maximizer" +#~ msgstr "Maximizador" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compressor Multibandas" + +#~ msgid "Multiband Gate" +#~ msgstr "Gate Multibandas" + +#~ msgid "Pitch" +#~ msgstr "Altura" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Reverberação" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Redução de Ruído" + +#~ msgid "Stereo Tools" +#~ msgstr "Ferramentas Stereo" + +#~ msgid "Average" +#~ msgstr "Médio" + +#~ msgid "Failed" +#~ msgstr "Falhou" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Usar Padrão" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Remover este arquivo de predefinição" + +#~ msgid "Import Presets" +#~ msgstr "Importar Predefinições" + +#~ msgid "Start Service at Login" +#~ msgstr "Inicializar Serviço no Login" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agressivo" + +#~ msgid "Add to Blocklist" +#~ msgstr "Adicionar à Lista de Bloqueio" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Microfone de Calibração" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latência" + +#~ msgid "Faster" +#~ msgstr "Mais Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Preservar Formante" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Ganho de Entrada" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Canais" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Piso" + +#~ msgid "Output Effects" +#~ msgstr "Efeitos de Saída" + +#~ msgid "Settings" +#~ msgstr "Configurações" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Configurações" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Duração" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Sinais de Teste" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Sinais de Teste" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Border" +#~ msgstr "Borda" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Spectrum Color" +#~ msgstr "Cor do Espectro" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Modo Agressivo" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Redução de Ganho" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Pesos" + +#~ msgid "Dry" +#~ msgstr "Seco" + +#~ msgid "S/C Level" +#~ msgstr "Nível de S/C" + +#~ msgid "Short Term" +#~ msgstr "Curto Prazo" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Passa-Baixa" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Definir o volume e ligar / desligar efeitos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Inclui um equalizador com predefinições incorporadas" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibração" + +#~ msgid "Limit" +#~ msgstr "Limite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuação" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Efeitos de Áudio para Programas que Utilizam Pulseaudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Efeitos de áudio para programas que Utilizam Pulseaudio" + +#~ msgid "Help" +#~ msgstr "Ajuda" + +#~ msgid "Calibration Microphone" +#~ msgstr "Microfone de Calibração" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Aplique automaticamente esta predefinição sempre que o dispositivo usado " +#~ "atualmente for conectado no sistema" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Versão" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Quadrada" + +#~ msgid "Saw" +#~ msgstr "Serra" + +#~ msgid "Triangle" +#~ msgstr "Triângulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruído Rosa" + +#~ msgid "Ticks" +#~ msgstr "Tique-Taque" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruído Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruído Vermelho" + +#~ msgid "Blue Noise" +#~ msgstr "Ruído Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruído Violeta" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Janela" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruído" + +#~ msgid "Subtract Noise" +#~ msgstr "Subtrair Ruído" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Estendido" + +#~ msgid "Low" +#~ msgstr "Baixo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Nível de Supressão" + +#~ msgid "Delay Agnostic" +#~ msgstr "Atraso Agnóstico" + +#~ msgid "Very High" +#~ msgstr "Muito Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supressor de Ruído" + +#~ msgid "Adaptive Digital" +#~ msgstr "Digital Adaptativo" + +#~ msgid "Fixed Digital" +#~ msgstr "Digital Fixo" + +#~ msgid "Gain Controller" +#~ msgstr "Controlador de Ganho" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidade de Detecção" + +#~ msgid "Very Low" +#~ msgstr "Muito Baixo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Cor Customizada" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Gradiente" + +#~ msgid "Gradient Color" +#~ msgstr "Cor do Gradiente" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Arquivo da Resposta de Impulso" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Selecione o Arquivo com a Resposta de Impulso" + +#~ msgid "Aggressive Mode" +#~ msgstr "Modo Agressivo" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Depois" + +#~ msgid "Loudness Range" +#~ msgstr "Faixa de Sonoridade" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Taxa de Amostragem Padrão" + +#~ msgid "Default Source" +#~ msgstr "Entrada Padrão" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "File" +#~ msgstr "Arquivo" + +#~ msgid "Configuration" +#~ msgstr "Configuração" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Servidor" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Frequências Mais Baixas" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Configurações Avançadas" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Predefinições" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silêncio" + +#~ msgid "Muted" +#~ msgstr "Mudo" + +#~ msgid "Distant Headphones" +#~ msgstr "Fones de Ouvido Distantes" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridade" + +#~ msgid "Niceness" +#~ msgstr "Gentileza" + +#~ msgid "Priority" +#~ msgstr "Prioridade" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frequência" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frequência" + +#~ msgid "About" +#~ msgstr "Sobre" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Amostra Padrão" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapeamento de Canal" + +#~ msgid "Resamplers" +#~ msgstr "Resamplers" + +#~ msgid "Pipeline Input" +#~ msgstr "Entrada da Pipeline" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Pipeline Output" +#~ msgstr "Saída da Pipeline" + +#~ msgid "Block Size" +#~ msgstr "Tamanho do Bloco" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "tocando" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Importar Predefinições" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Redução de Ganho" + +#~ msgid "Exponent" +#~ msgstr "Expoente" diff --git a/po/news/ro.po b/po/news/ro.po new file mode 100644 index 0000000..c73c714 --- /dev/null +++ b/po/news/ro.po @@ -0,0 +1,2664 @@ +# Romanian translation for EasyEffects +# Copyright (C) 2021 +# This file is distributed under the same license as the easyeffects package. +# Andrei Dobrete , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2021-03-02 23:30+0200\n" +"Last-Translator: Andrei Dobrete \n" +"Language-Team: \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && " +"n%100<=19) ? 1 : 2);\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Efecte Audio pentru Aplicații PulseAudio" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +#, fuzzy +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects este un set avansat de unelte pentru manipularea audio. Numind " +"doar câteva din uneltele din acesta, sunt incluse un egalizator, limitator, " +"compresor și o unealtă pentru reverberație." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +#, fuzzy +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Pentru că EasyEffects utilizează serverul de sunet prestabilit PulseAudio, " +"acesta va funcționa cu majoritatea, dacă nu cumva chiar toate programele pe " +"care le folosiți. Toate programele suportate sunt prezentate în fereastra " +"principală, unde fiecare poate fi activată individual." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Pe lângă faptul că EasyEffects poate manipula output-ul de sunet, se poate " +"folosi și pentru a aplica efecte pe un dispozitiv de input, ca un microfon. " +"Acest lucru este util, spre exemplu, în înregistrarea audio, dar " +"funcționează bine și în timpul conversațiilor voce." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Când EasyEffects este pornit, acesta va reține configurația din sesiunea " +"anterioară. Este de asemenea posibil să salvați setările curente ca și " +"profile." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Benzi" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Egalizator, compresor și Alte Efecte Audio" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "limitator;compresor;reverberație;egalizator;autovolum" + +#~ msgid "\"Presets\"" +#~ msgstr "”Presetări”" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Activează" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplicații" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplicații" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Setări" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Presetări" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Presetări" + +#~ msgid "Global Bypass" +#~ msgstr "Evitare Globală" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Aplicații" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Pereți Goi" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplicații" + +#~ msgid "Target" +#~ msgstr "Țintă" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Maxim" + +#~ msgid "Momentary" +#~ msgstr "Momentar" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Pe Termen Scurt" + +#~ msgid "Integrated" +#~ msgstr "Integrat" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Utilizarea Mijlocului Geometric" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Utilizarea Mijlocului Geometric" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Utilizarea Mijlocului Geometric" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Utilizarea Mijlocului Geometric" + +#~ msgid "Reset History" +#~ msgstr "Resetare Istoric" + +#~ msgid "Relative" +#~ msgstr "Relativ" + +#~ msgid "Range" +#~ msgstr "Gamă" + +#~ msgid "Loudness" +#~ msgstr "Intensitate" + +#, fuzzy +#~ msgid "Output Gain" +#~ msgstr "Output" + +#~ msgid "Input" +#~ msgstr "Input" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Input Pipeline" + +#~ msgid "Output" +#~ msgstr "Output" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Output Pipeline" + +#~ msgid "Reset" +#~ msgstr "Resetare" + +#~ msgid "Name" +#~ msgstr "Nume" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Presetări" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Șterge fișierul de presetări" + +#~ msgid "Listen" +#~ msgstr "Ascultă" + +#~ msgid "Blend Harmonics" +#~ msgstr "Blend Harmonics" + +#~ msgid "3rd" +#~ msgstr "Al treilea" + +#~ msgid "2nd" +#~ msgstr "Al doilea" + +#~ msgid "Amount" +#~ msgstr "Cantitate" + +#~ msgid "Harmonics" +#~ msgstr "Harmonics" + +#~ msgid "Scope" +#~ msgstr "Scop" + +#~ msgid "Floor" +#~ msgstr "Podea" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Podea" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplicații" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Arată programele din Lista de Blocare în Fila Principală" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Arată programele din Lista de Blocare în Fila Principală" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Arată programele din Lista de Blocare în Fila Principală" + +#~ msgid "Compressor" +#~ msgstr "Compresor" + +#~ msgid "Mode" +#~ msgstr "Mod" + +#~ msgid "Downward" +#~ msgstr "În Jos" + +#~ msgid "Upward" +#~ msgstr "În Sus" + +#~ msgid "Compression Mode" +#~ msgstr "Mod de Compresie" + +#~ msgid "Boost Threshold" +#~ msgstr "Prag de Boost" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Cantitate" + +#~ msgid "Attack" +#~ msgstr "Atac" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "În Timp Real" + +#~ msgid "Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Atac" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Prag" + +#~ msgid "Release" +#~ msgstr "Eliberare" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "În Timp Real" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Prag Relativ de Eliberare" + +#~ msgid "Ratio" +#~ msgstr "Raport" + +#~ msgid "Knee" +#~ msgstr "Genunchi" + +#~ msgid "Makeup" +#~ msgstr "Compoziție" + +#~ msgid "Sidechain" +#~ msgstr "Lanț Lateral" + +#~ msgid "Peak" +#~ msgstr "Vârf" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Low-Pass" + +#~ msgid "Uniform" +#~ msgstr "Uniform" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Lanț Lateral" + +#~ msgid "Source" +#~ msgstr "Sursă" + +#~ msgid "Middle" +#~ msgstr "Mijloc" + +#~ msgid "Side" +#~ msgstr "Parte" + +#~ msgid "Left" +#~ msgstr "Stânga" + +#~ msgid "Right" +#~ msgstr "Dreapta" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Lanț Lateral" + +#~ msgid "Type" +#~ msgstr "Scrie" + +#~ msgid "Feed-forward" +#~ msgstr "Feed-forward" + +#~ msgid "Feed-back" +#~ msgstr "Feed-back" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Lanț Lateral" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Nivel Input" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Preamplificare" + +#~ msgid "Reactivity" +#~ msgstr "Reactivitate" + +#~ msgid "Lookahead" +#~ msgstr "Privire Înainte" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Lanț Lateral" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "High Pass" + +#~ msgid "Frequency" +#~ msgstr "Frecvență" + +#~ msgid "Off" +#~ msgstr "Oprit" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Mod Filtru High-pass" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Frecvență High-pass" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Mod Filtru Low-pass" + +#~ msgid "Gain" +#~ msgstr "Gain" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Pantă" + +#~ msgid "Curve" +#~ msgstr "Curbă" + +#~ msgid "L" +#~ msgstr "L" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Canale" + +#~ msgid "R" +#~ msgstr "R" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Despică Canalele" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Răspuns Impuls" + +#~ msgid "Stereo Width" +#~ msgstr "Lățime Stereo" + +#~ msgid "Spectrum" +#~ msgstr "Spectru " + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Auto Gain" + +#~ msgid "Rate" +#~ msgstr "Rată" + +#~ msgid "Samples" +#~ msgstr "Probe" + +#~ msgid "Duration" +#~ msgstr "Durație" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Răspuns Impuls" + +#~ msgid "Import Impulse" +#~ msgstr "Importă Impuls" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Importă Fișier Impulse" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Importă Fișier Impulse" + +#~ msgid "Default" +#~ msgstr "Prestablilt" + +#~ msgid "Cutoff" +#~ msgstr "Cutoff" + +#~ msgid "Feed" +#~ msgstr "Feed" + +#~ msgid "Bypass" +#~ msgstr "Evitare" + +#~ msgid "Mute" +#~ msgstr "Mut" + +#~ msgid "Detection" +#~ msgstr "Detectare" + +#~ msgid "Wide" +#~ msgstr "Lat" + +#~ msgid "Split" +#~ msgstr "Despică" + +#~ msgid "F1 Split" +#~ msgstr "F1 Despică" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frecvență" + +#~ msgid "F2 Peak" +#~ msgstr "F2 Vârf" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frecvență" + +#~ msgid "F1 Gain" +#~ msgstr "F1 Gain" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frecvență" + +#~ msgid "F2 Level" +#~ msgstr "F2 Nivel" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frecvență" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2 Vârf Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frecvență" + +#~ msgid "Laxity" +#~ msgstr "Laxitate" + +#~ msgid "Detected" +#~ msgstr "Detectat" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Reducere" + +#~ msgid "Frame Size" +#~ msgstr "Dimensiune Cadru" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filtru" + +#~ msgid "Bands" +#~ msgstr "Benzi" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "Split Channels" +#~ msgstr "Despică Canalele" + +#~ msgid "Flat Response" +#~ msgstr "Răspuns Plat" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Calculează Frecvențele" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "Presetări APO" + +#~ msgid "Bell" +#~ msgstr "Clopot" + +#~ msgid "High Pass" +#~ msgstr "High Pass" + +#~ msgid "High Shelf" +#~ msgstr "High Shelf" + +#~ msgid "Low Pass" +#~ msgstr "Low Pass" + +#~ msgid "Low Shelf" +#~ msgstr "Low Shelf" + +#~ msgid "Notch" +#~ msgstr "Crestătură" + +#~ msgid "Resonance" +#~ msgstr "Rezonanță" + +#~ msgid "All Pass" +#~ msgstr "All Pass" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Scrie" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Mod" + +#~ msgid "Slope" +#~ msgstr "Pantă" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Pantă" + +#~ msgid "Width" +#~ msgstr "Lățime" + +#~ msgid "Quality" +#~ msgstr "Calitate" + +#~ msgid "Solo" +#~ msgstr "Solo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Tavan" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Detectare" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Șterge fișierul de presetări" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Lowpass" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Lowpass" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Lowpass" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Highpass" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Highpass" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Highpass" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Bandpass" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Bandpass" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Bandpass" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Bandreject" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Bandreject" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18dB/oct Bandreject" + +#~ msgid "Inertia" +#~ msgstr "Inerție" + +#~ msgid "Gate" +#~ msgstr "Gate" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "În Timp Real" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Integrat" + +#~ msgid "Gating" +#~ msgstr "Gating" + +#~ msgid "Oversampling" +#~ msgstr "Supraprelevare" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Lat" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Lat" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Lățime Linie" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Lățime Linie" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Masă Sinusoidală" + +#~ msgid "None" +#~ msgstr "Niciunul" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Preamplificare" + +#~ msgid "Stereo Link" +#~ msgstr "Link Stereo" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Lanț Lateral" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Nivelare Automată" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Nivelare Automată" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Nivelare Automată" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Nivelare Automată" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Gain" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Dreapta" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Lanț Lateral" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Lanț Lateral" + +#~ msgid "Standard" +#~ msgstr "Standard" + +#~ msgid "Flat" +#~ msgstr "Plat" + +#~ msgid "FFT Size" +#~ msgstr "Dimensiune FFT" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Output" + +#~ msgid "Ceiling" +#~ msgstr "Tavan" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Importă Model" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Mod" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Lanț Lateral" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Benzi" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Mod de Compresie" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Evitare" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Mod Filtru Low-pass" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Frecvență Low-pass" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Filtru High Pass" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Frecvență High-pass" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "F1 Gain" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Curbă" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Despică" + +#~ msgid "Split 1/2" +#~ msgstr "Despicare 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frecvență" + +#~ msgid "Split 2/3" +#~ msgstr "Despicare 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frecvență" + +#~ msgid "Split 3/4" +#~ msgstr "Despicare 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frecvență" + +#~ msgid "Sub Band" +#~ msgstr "Sub Band" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Evitare" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Detectare" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Atac" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Eliberare" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Compoziție" + +#~ msgid "Max Reduction" +#~ msgstr "Reducere" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Reducere" + +#~ msgid "Low Band" +#~ msgstr "Low Band" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Evitare" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Detectare" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Atac" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Eliberare" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Compoziție" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Reducere" + +#~ msgid "Mid Band" +#~ msgstr "Mid Band" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Evitare" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Detectare" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Atac" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Eliberare" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Compoziție" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Reducere" + +#~ msgid "High Band" +#~ msgstr "High Band" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Evitare" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Detectare" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Atac" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Eliberare" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Prag" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Compoziție" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Reducere" + +#~ msgid "General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Folosește Prestabilit" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Nivel Input" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Folosește Prestabilit" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Reverberație" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Versiune" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Versiune" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Rata de Sample Prestabilită" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Frecvență Minimă" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Gain-ul Maxim" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Sink-ul Prestabilit" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Efecte Output" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Presetări pentru Output:" + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Presetări pentru Output:" + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Nivel Input" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Presetări pentru Input:" + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Presetări pentru Input:" + +#~ msgid "Modules" +#~ msgstr "Module" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Module" + +#~ msgid "Clients" +#~ msgstr "Clienți" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Clienți" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Semnale de Testare" + +#~ msgid "State" +#~ msgstr "Stare" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Activează" + +#~ msgid "Channels" +#~ msgstr "Canale" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Canale" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Masă Sinusoidală" + +#~ msgid "White Noise" +#~ msgstr "Zgomot Alb" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "High Shelf" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Calitate" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Format" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Presetări" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Claritate" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detectare" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Compresie" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Softclip" + +#~ msgid "Cents" +#~ msgstr "Cents" + +#~ msgid "Semitones" +#~ msgstr "Semitonuri" + +#~ msgid "Octaves" +#~ msgstr "Octave" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Șterge fișierul de presetări" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Efecte Input" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "General" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Procesează Toate Output-urile" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Procesează Toate Input-urile" + +#, fuzzy +#~ msgid "Inactivity Timeout" +#~ msgstr "Expirarea Activității" + +#~ msgid "Use Dark Theme" +#~ msgstr "Folosește Tema Întunecată" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Spectru " + +#~ msgid "Bars" +#~ msgstr "Bări " + +#~ msgid "Lines" +#~ msgstr "Linii" + +#~ msgid "Points" +#~ msgstr "Puncte" + +#~ msgid "Height" +#~ msgstr "Înălțime" + +#~ msgid "Line Width" +#~ msgstr "Lățime Linie" + +#~ msgid "Fill" +#~ msgstr "Umple" + +#, fuzzy +#~ msgid "Color" +#~ msgstr "Culoare Axă" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frecvență" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Maxim" + +#~ msgid "Maximum" +#~ msgstr "Maxim" + +#~ msgid "Load" +#~ msgstr "Încarcă" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Salvează setările curente în acest fișier cu presetări" + +#~ msgid "Remove this preset file" +#~ msgstr "Șterge fișierul de presetări" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Presetări pentru Output:" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Creează Presetare" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Importă Presetări" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Presetări pentru Output:" + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Presetări pentru Output:" + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Presetări pentru Input:" + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Presetări pentru Input:" + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Presetări pentru Input:" + +#~ msgid "High Frequency Damping" +#~ msgstr "Amortizare Frecvențe Înalte" + +#~ msgid "Room Size" +#~ msgstr "Dimensiunea Camerei" + +#~ msgid "Small" +#~ msgstr "Mic" + +#~ msgid "Medium" +#~ msgstr "Mediu" + +#~ msgid "Large" +#~ msgstr "Mare" + +#~ msgid "Tunnel" +#~ msgstr "Tunel" + +#~ msgid "Large/smooth" +#~ msgstr "Mare/neted" + +#~ msgid "Experimental" +#~ msgstr "Experimental" + +#~ msgid "Diffusion" +#~ msgstr "Difuzie" + +#~ msgid "Pre Delay" +#~ msgstr "Pre Întârziere" + +#~ msgid "Decay Time" +#~ msgstr "Timp Decay" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Cantitate" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Nivelul Țintă" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Cantitate" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "F2 Nivel" + +#~ msgid "Bass Cut" +#~ msgstr "Bass Tăiat" + +#~ msgid "Treble Cut" +#~ msgstr "Treble Tăiat" + +#~ msgid "Ambience" +#~ msgstr "Ambianță" + +#~ msgid "Empty Walls" +#~ msgstr "Pereți Goi" + +#~ msgid "Room" +#~ msgstr "Cameră" + +#~ msgid "Large Empty Hall" +#~ msgstr "Hol Gol Mare" + +#~ msgid "Disco" +#~ msgstr "Disco" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Hol Plin Mare" + +#~ msgid "Import Model" +#~ msgstr "Importă Model" + +#, fuzzy +#~ msgid "Models" +#~ msgstr "Mod" + +#, fuzzy +#~ msgid "Standard Model" +#~ msgstr "Model Standard RNNoise" + +#, fuzzy +#~ msgid "RNNoise Models List" +#~ msgstr "Model Standard RNNoise" + +#~ msgid "Active Model" +#~ msgstr "Model Activ" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Model Standard RNNoise" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Resetează EasyEffects." + +#, fuzzy +#~ msgid "Close the Window" +#~ msgstr "Ascunde Fereastra." + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Balans" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Balans" + +#~ msgid "Softclip" +#~ msgstr "Softclip" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Softclip" + +#~ msgid "Stereo Matrix" +#~ msgstr "Matrice Stereo" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Prestabilit Stereo)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Stereo către Mijloc)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Mijloc către Stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (Mono Canal Stânga)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Mono Canal Dreapta)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Mono L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Canalele Stereo Inversate)" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Bază Stereo" + +#~ msgid "Invert Phase" +#~ msgstr "Inversează Faza" + +#~ msgid "Side Level" +#~ msgstr "Nivel Lateral" + +#~ msgid "Side Balance" +#~ msgstr "Balans Lateral" + +#~ msgid "Middle Level" +#~ msgstr "Nivel Mijloc" + +#~ msgid "Middle Panorama" +#~ msgstr "Panoramă Mijloc" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Balans" + +#~ msgid "Delay L/R" +#~ msgstr "Întârziere L/R" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Întârziere L/R" + +#~ msgid "Stereo Base" +#~ msgstr "Bază Stereo" + +#~ msgid "Stereo Phase" +#~ msgstr "Fază Stereo" + +#, fuzzy +#~ msgid "Running" +#~ msgstr "rulează" + +#, fuzzy +#~ msgid "Suspended" +#~ msgstr "suspendat" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "se creează" + +#, fuzzy +#~ msgid "Error" +#~ msgstr "eroare" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Canale" + +#~ msgid "Output Presets: " +#~ msgstr "Presetări pentru Output:" + +#~ msgid "Input Presets: " +#~ msgstr "Presetări pentru Input:" + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Efecte audio pentru aplicații PulseAudio" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "" +#~ "Închideți EasyEffects. Folositor când este folosit în modul de serviciu." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Încarcă o presetare. Exemplu: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Resetează EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Ascunde Fereastra." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Ocolire Globală. 1 pentru a activa, 2 pentru a dezactiva și 3 pentru a " +#~ "afla statusul" + +#~ msgid "Show available presets." +#~ msgstr "Arată presetările valabile." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Importă Fișier Impulse" + +#~ msgid "Import Impulse File" +#~ msgstr "Importă Fișier Impulse" + +#~ msgid "Open" +#~ msgstr "Deschide" + +#~ msgid "Cancel" +#~ msgstr "Anulare" + +#~ msgid "Impulse Response" +#~ msgstr "Răspuns Impuls" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Importă Impuls" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Importă Impuls" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Importă Fișier Impulse" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Nu s-a putut Încărca Fișierul Impulse" + +#, fuzzy +#~ msgid "Recorders" +#~ msgstr "Bordură" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "infinit" + +#~ msgid "Import APO Preset File" +#~ msgstr "Importă Fișierul de Presetare APO" + +#~ msgid "APO Presets" +#~ msgstr "Presetări APO" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Șterge fișierul de presetări" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Efecte Output" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Importă Presetări" + +#~ msgid "Import Model File" +#~ msgstr "Importă Fișier de Model" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Model Standard RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Amplificator Bass" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Intensitate" + +#~ msgid "Convolver" +#~ msgstr "Convolver" + +#~ msgid "Crossfeed" +#~ msgstr "Crossfeed" + +#~ msgid "Crystalizer" +#~ msgstr "Cristalizator" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Întârziere" + +#~ msgid "Echo Canceller" +#~ msgstr "Anulator de Ecou" + +#~ msgid "Equalizer" +#~ msgstr "Egalizator" + +#~ msgid "Exciter" +#~ msgstr "Excitator" + +#~ msgid "Filter" +#~ msgstr "Filtru" + +#~ msgid "Limiter" +#~ msgstr "Limitator" + +#~ msgid "Maximizer" +#~ msgstr "Maximizator" + +#~ msgid "Multiband Compressor" +#~ msgstr "Compresor Multiband" + +#~ msgid "Multiband Gate" +#~ msgstr "Multiband Gate" + +#~ msgid "Pitch" +#~ msgstr "Pitch" + +#~ msgid "Reverberation" +#~ msgstr "Reverberație" + +#~ msgid "Noise Reduction" +#~ msgstr "Reducere Zgomot" + +#~ msgid "Stereo Tools" +#~ msgstr "Unelte Stereo" + +#~ msgid "Average" +#~ msgstr "În Medie" + +#~ msgid "Failed" +#~ msgstr "A Eșuat" + +#~ msgid "Use Default" +#~ msgstr "Folosește Prestabilit" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Șterge fișierul de presetări" + +#~ msgid "Import Presets" +#~ msgstr "Importă Presetări" + +#~ msgid "Start Service at Login" +#~ msgstr "Începe Serviciul la Login" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Model Activ" + +#~ msgid "Add to Blocklist" +#~ msgstr "Adaugă la Lista de Blocare" + +#~ msgid "Blocklist" +#~ msgstr "Lista de Blocare" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrare Microfon" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Activează" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Activează" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latență" + +#~ msgid "idle" +#~ msgstr "inactiv" + +#~ msgid "Faster" +#~ msgstr "Mai Repede " + +#~ msgid "Preserve Formant" +#~ msgstr "Păstrează Formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Setează volumul și pornește/oprește efectele" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Include un egalizator cu presetări încorporate." + +#~ msgid "Input Limiter" +#~ msgstr "Limitator de Input" + +#~ msgid "Calibration" +#~ msgstr "Calibrare" + +#~ msgid "Help" +#~ msgstr "Ajutor" + +#~ msgid "Based on" +#~ msgstr "Bazat pe" + +#~ msgid "Detect Silence" +#~ msgstr "Detectează Tăcerea" + +#~ msgid "Weights" +#~ msgstr "Greutăți" + +#~ msgid "Provided by" +#~ msgstr "Furnizat de" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Reconectați microfonul pentru a aplica noile schimbări la Lista de Blocare" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Reporniți playerul pentru a aplica schimbările noi la Lista de Blocare" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Pătrat" + +#~ msgid "Saw" +#~ msgstr "Ferăstrău" + +#~ msgid "Triangle" +#~ msgstr "Triunghi" + +#~ msgid "Silence" +#~ msgstr "Liniște" + +#~ msgid "Pink Noise" +#~ msgstr "Zgomot Roz" + +#~ msgid "Ticks" +#~ msgstr "Ticăituri" + +#~ msgid "Gaussian Noise" +#~ msgstr "Zgomot Gaussian" + +#~ msgid "Red Noise" +#~ msgstr "Zgomot Roșu" + +#~ msgid "Blue Noise" +#~ msgstr "Zgomot Albastru" + +#~ msgid "Violet Noise" +#~ msgstr "Zgomot Violet" + +#~ msgid "Volume" +#~ msgstr "Volum" + +#~ msgid "Window" +#~ msgstr "Fereastră" + +#~ msgid "Measure Noise" +#~ msgstr "Măsoară Zgomotul" + +#~ msgid "Subtract Noise" +#~ msgstr "Scade Zgomotul" + +#~ msgid "Advanced" +#~ msgstr "Avansat" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importă Fișier de Răspuns Impuls" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Selectează Fișierul de Răspuns Impuls" + +#~ msgid "Aggressive Mode" +#~ msgstr "Mod Agresiv" + +#~ msgid "Before" +#~ msgstr "Înainte" + +#~ msgid "After" +#~ msgstr "După" + +#~ msgid "Loudness Range" +#~ msgstr "Gama de Sunet" + +#~ msgid "Apply APO Preset" +#~ msgstr "Aplică Presetare APO" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "Apply" +#~ msgstr "Aplică" + +#~ msgid "Muted" +#~ msgstr "Mut" + +#~ msgid "Distant Headphones" +#~ msgstr "Căști Departe" + +#~ msgid "Niceness" +#~ msgstr "Niceness" + +#~ msgid "Priority Type" +#~ msgstr "Tipul Priorității" + +#~ msgid "Priority" +#~ msgstr "Prioritate" + +#~ msgid "About" +#~ msgstr "Despre" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Reducere Maximă a Gain-ului" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Control Automatic de Smoothing" + +#~ msgid "Limit" +#~ msgstr "Limită" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuare" + +#~ msgid "Loudness Compensator" +#~ msgstr "Compensator de Intensitate" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Gain Reduction" +#~ msgstr "Reducere Gain" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Aplică automat această presetare oricând dispozitivul folosit acum este " +#~ "conectat la sistem" + +#~ msgid "Default Source" +#~ msgstr "Sursa Prestabilită" + +#~ msgid "Protocol" +#~ msgstr "Protocol" + +#~ msgid "Default Sample Format" +#~ msgstr "Formatul de Sample Prestabilit" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapping-ul Canalelor" + +#~ msgid "File" +#~ msgstr "Fișier" + +#~ msgid "Configuration" +#~ msgstr "Configurare" + +#~ msgid "Resamplers" +#~ msgstr "Resampleri" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Block Size" +#~ msgstr "Dimensiune Bloc" + +#~ msgid "Dry" +#~ msgstr "Uscat" + +#~ msgid "Show Spectrum" +#~ msgstr "Arată Spectrul" + +#~ msgid "Use Custom Color" +#~ msgstr "Folosește Culoare Personalizată" + +#~ msgid "Use Gradient" +#~ msgstr "Folosește Gradient" + +#~ msgid "Sampling" +#~ msgstr "Sampling" + +#~ msgid "Maximum Frequency" +#~ msgstr "Frecvență Maximă" + +#~ msgid "Spectrum Type" +#~ msgstr "Tip Spectru" + +#~ msgid "Spectrum Color" +#~ msgstr "Culoare Spectru" + +#~ msgid "Gradient Color" +#~ msgstr "Culoare Gradient" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Extended Filter" +#~ msgstr "Filtru Extins" + +#~ msgid "Low" +#~ msgstr "Jos" + +#~ msgid "Moderate" +#~ msgstr "Moderat" + +#~ msgid "High" +#~ msgstr "Înalt" + +#~ msgid "Suppression Level" +#~ msgstr "Nivel de Suprimare" + +#~ msgid "Delay Agnostic" +#~ msgstr "Întârziere Agnostică" + +#~ msgid "Very High" +#~ msgstr "Foarte Înalt" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Zgomot" + +#~ msgid "Adaptive Digital" +#~ msgstr "Digital Adaptiv" + +#~ msgid "Fixed Digital" +#~ msgstr "Digital Fix" + +#~ msgid "Gain Controller" +#~ msgstr "Controlor de Gain" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilitatea Detecției" + +#~ msgid "Very Low" +#~ msgstr "Foarte Jos" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voce" diff --git a/po/news/ru.po b/po/news/ru.po new file mode 100644 index 0000000..3c5f051 --- /dev/null +++ b/po/news/ru.po @@ -0,0 +1,3188 @@ +# EasyEffects Russian translation +# This file is distributed under the same license as the EasyEffects package. +# ⓒ Mikhail Novosyolov [mikhailnov] , 2017-2019 +# ⓒ Georgiy Starodubtsov [Mewsimka] , 2018 +# ⓒ Denis Goncharov, 2018 +# ⓒ Vladimir Penchikov , 2018 +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-22 16:18+0000\n" +"Last-Translator: IDeathByte \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Звуковые эффекты для приложений PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Веллингтон Уоллис" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects — это продвинутый набор инструментов для работы со звуком. " +"Приложение включает в себя эквалайзер, ограничитель (лимитер), компрессор, " +"утилиту для реверберации и многое другое. Более того, имеется встроенный " +"анализатор аудиоспектра." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects является наследником PulseEffects. EasyEffects поддерживает " +"только PipeWire в качестве аудио-сервера. Пользователи PulseAudio должны " +"продолжать использовать PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Так как EasyEffects использует стандартный сервер PipeWire, программа будет " +"работать с большинством используемых вами приложений. Все поддерживаемые " +"приложения представлены в главном окне, где каждое может быть настроено " +"индивидуально." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Помимо изменения звука на выходе, EasyEffects также может использовать " +"звуковые эффекты для входных аудио-потоков, таких как микрофон. К примеру, " +"это может быть полезно во время аудиозаписи или голосовой конференции." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"При запуске, EasyEffects автоматически подгрузит ваши настройки из " +"предыдущей сессии. Также вы можете сохранить ваши текущие настройки в " +"качестве загружаемого профиля." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "Главная страница отображает приложения с выходными аудио-потоками" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "Страница усиления басов отображает настройки аудио" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "Страница конвольвера отображает настройки аудио" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "Возможности:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" +"Состояние обхода может быть сохранено в файл предустановок. Причины данного " +"решения можно посмотреть в ошибке 1039" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" +"Была улучшена кодовая база автозагрузки предустановок для лучшей " +"совместимости с USB-устройствами." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" +"Пользователю выводится сообщение, если загрузка предустановки не удалась, " +"или предустановку/файл импульса не удалось импортировать." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" +"Теперь плагин SideChain Gate используется из набора Linux Studio Plugins " +"взамен Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "Исправление ошибок:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" +"EasyEffects больше не должен падать, если язык пользователя не был правильно " +"настроен." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" +"Был реализован обходной механизм для отображения иконки, необходимый из-за " +"посредственной поддержки SVG в QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "Другие изменения:" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" +"Когда для приложения отключены эффекты, мы устанавливаем значение его " +"метаданных равным null. Это позволяет менеджеру медиа (wireplumber) " +"корректно переместить аудиопоток на новое устройство." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" +"Были добавили новые настройки конфигурации. Они позволят EasyEffects " +"игнорировать потоки, которые он создает сам. Это должно исправить некоторые " +"проблемы, которые возникали у пользователей при использовании OBS." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "Был улучшен код, ответственный за отображение потока" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" +"Теперь использование библиотеки rnnoise является опциональным. Это должно " +"помочь мейнтейнерам в сборке пакетов для Debian. Подробности в ошибке 1000." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" +"Теперь в наших отчетах отображается строка кода, ответственная за вывод " +"сообщения" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" +"Флаг \"включить эффекты\" в нашем окне не обновлялся, когда сторонние " +"приложения вроде pavucontrol перемещали поток с наших виртуальных устройств. " +"Теперь должно работать корректно." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "Исправлен вылет, происходивший при изменении максимума автогейна." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "Предотвращены вылеты, когда запущен pw-mididump" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "Улучшен интерфейс плагина высоты тона" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" +"Значок нашего приложения теперь совместим с рабочими столами, использующими " +"QT" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" +"Наш код чёрного списка будет использовать тег `application.id`, если поток " +"укажет его" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" +"Во избежание проблем с прокруткой списка `Проигрыватели/Рекордеры`, в этой " +"вкладке больше не отображается шкала громкости. Больше информации о проблеме " +"и возможные решения можно посмотреть в ошибках 1211 и 1427" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" +"Когда ни одно приложение не доступно для отображения в `Проигрывателях/" +"Рекордерах`, пользователю будет показано сообщение" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "Крупное обновление переводов" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" +"Исправлена ошибка, при которой EasyEffeects аварийно завершал работу, когда " +"изменялось количество точек, отображаемых в спектре, в то время как виджет " +"отображения спектра был видим и канал обработки был активен" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" +"Значение задержки канала обработки, отображаемое в нашем окне, могло быть " +"неверным в некоторых ситуациях. Это было исправлено." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" +"Добавлена новая настройка, позволяющая пользователю установить время простоя " +"для канала обработки. Когда ни один из клиентов не проигрывает или не " +"записывает поток с наших устройств, фильтры будут отключены по истечению " +"указанного периода. Это сделано для того, чтобы CPU не тратил время впустую " +"на обработку тишины." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" +"Плагин нормализации громкости теперь позволяет пользователю выбрать один из " +"трёх уровней для расчета среднего." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" +"Плагин нормализации громкости теперь позволяет устанавливать максимальную " +"историю и больше не использует режим гистограммы «libebur128». Это должно " +"решить проблему, когда громкость застревала одном уровне." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"Значок EasyEffects был обновлён таким образом, чтобы сделать его видимым на " +"рабочих столах QT." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" +"Параметр командной строки, возвращающий состояние глобального обхода, снова " +"работает." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Фильтр перекрестной подачи должен лучше работать с динамическим изменением " +"задержек PipeWire. Больше не должны возникать ситуации, приводящие к скачкам " +"громкости." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" +"Исправлена ошибка, не дававшая моно-микрофонам корректно работать с " +"EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "Поддержка PipeWire версии `0.3.44`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" +"Фильтр автогейн должен лучше работать с динамическим изменением задержек " +"PipeWire. Теперь ситуации со скачками уровня громкости больше не должны " +"возникать." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" +"Мы добавили опцию, позволяющую сбрасывать уровень громкости и заглушение " +"устройства во время запуска EasyEffects. Это должно помочь в случае, когда " +"ваши устройства по неизвестным причинам заглушаются аудио-сервером." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Улучшена поддержка спящего режима." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Обновление перевода" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" +"Исправлена ошибка, при которой попытка создать профиль для автозагрузки, не " +"имеющий предустановок, приводила к вылету приложения." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" +"Исправлена ошибка, при которой установка полосы эквалайзера в \"ноль\" " +"приводила к аварийному завершению приложения." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita используется для создания некоторых частей окна приложения и " +"управления переключением между тёмной и светлой темами." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" +"Дизайн меню настроек приложения был изменен с использованием виджетов " +"LibAdwaita." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" +"Функция импорта предустановок для Equalizer APO была улучшена: теперь " +"возможно применить не только \"Bell\", но и другие поддерживаемые фильтры " +"(На текущий момент, из плагинов LSP не доступен только фильтр Bandpass)." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" +"Функция «Сброс всех настроек» в меню теперь должна работать и с Flatpak." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" +"Теперь у нас есть новая опция, которая позволяет пользователю отключить " +"\"автоскрытие\" меню. Это должно помочь обойти некоторые ошибки наложения, " +"имеющиеся в gtk4." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" +"Большинство сложных для обработки при импорте предустановок APO, сохранены с " +"использованием запятой в качестве разделителя в центральный полосе частот." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" +"Библиотека fmt является новой зависимостью, поскольку компилятор C++ на " +"данный момент не может реализовать ее возможности. Поддержка ожидается в " +"ближайшие несколько лет." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM и GLIBMM больше не являются зависимостями. Теперь мы используем gtk4 " +"напрямую." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" +"Теперь вы можете объединять характеристики импульсов в интерфейсе " +"Конвольвера. Новые файлы импульсов созданы и должны быть видны в списке." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" +"Улучшена горизонтальная отрисовка внутри окна приложения. Теперь количество " +"элементов изменяется динамически в зависимости от ширины окна." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" +"Была обновлена пользовательская документация в связи с добавлением в " +"EasyEffects новых возможностей. Старые отсылки к PulseEffects были удалены. " +"Кнопка для вызова документации была добавлена в качестве секции Меню." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" +"Когда регулятор установлен в положение, превышающее возможное значение, он " +"будет обновлен до наименьшего/высшего значения, наиболее соответствующего " +"предыдущему." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" +"Окно приложения теперь запоминает свое состояние, и будет восстановлено при " +"его следующем открытии." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "Библиотека tbb теперь является новой зависимостью" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" +"Плагины Лимитер и Многополосный компрессор теперь могут использоваться в " +"качестве опционального внешнего сайдчейна." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" +"Плагин Автогейн теперь позволяет пользователям выбрать, какая громкость " +"будет использоваться в качестве значения для коррекции её уровня." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" +"Функция импорта предустановок APO для плагина Эквалайзера, теперь считывает " +"параметры Предусиления." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" +"Теперь в главных настройках можно выбрать Кубический Уровень в качестве " +"опции." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" +"Плагин спектра должен осуществлять проброс, когда он станет не видимым, но " +"это произойдет только после закрытия окна." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "Улучшена поддержка Assistive Technology." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" +"Монитор источников PipeWire был исключён и удалён из списка приложений." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +#, fuzzy +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" +"Надеемся, что ошибки вылета приложения, указанные в отчете [1172] были " +"исправлены." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" +"Предотвращена ошибка, связанная со Спектром, приводящая к аварийному " +"завершению приложения." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"Pavucontrol больше не указывается в списке приложений с источниками " +"аудиопотоков в системах, локализация которых отличается от английской." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +#, fuzzy +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" +"Улучшена совместимость с WirePlumber, необходимая для работы в системах, " +"использующих го в качестве основного" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" +"При попытке добавить профиль для автозагрузки для устройства, находящегося в " +"списке, его цель будет обновлена. С помощью этого, мы сможем изменять " +"предустановки профиля без необходимости удалять и пересоздавать его заново." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +#, fuzzy +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" +"Реализация поддержки автозагрузки профилей была заново переписана. Теперь " +"она должна работать с большим количеством оборудования. Более детальная " +"информация в отчете [1051]" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" +"Лимитер и Максимизатор теперь устанавливаются в последнюю позицию цепочки " +"плагинов. Новые плагины добавляются в предыдущую секцию с целью " +"предотвращения порчи оборудования чрезмерным выходным уровнем громкости." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" +"При удалении приложения из черного списка, его предшествующее состояние " +"будет восстановлено." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" +"Иногда, во время удаления импортированной модели в плагине шумоподавления, " +"текущая используемая модель не обновлялась корректно. Теперь должно работать " +"как положено." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" +"Во время правки файла предустановок во внешнем редакторе, повторяющиеся " +"параметры не будут отображаться в меню." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" +"Теперь чёрный список правильно устанавливается при смене предустановок." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" +"Теперь статус при нажатии на кнопку глобального обхода корректно " +"отображается при смене набора плагинов." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" +"Некоторые значки, которые не отображались в окружении рабочего стола Plasma " +"с темой Breeze, теперь должны отображаться." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "Обновлен Китайский перевод." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "Обновлен перевод на Итальянский." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "В компрессор добавлена поддержка параметра `Boost Amount`" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" +"Плагин многополосного компрессора теперь использует плагин стерео " +"многополосного компрессора из набора плагинов Linux Studio Plugins взамен " +"Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" +"Плагин лимитера теперь использует стерео плагин лимитера из набора Linux " +"Studio Plugins взамен Calf Studio." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" +"Наборы LV2 фильтров отображаются в графе PipeWire только во время первой " +"загрузки. Однажды загруженные, они останутся включёнными до тех пор пока " +"EasyEffects продолжает работу." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "Теперь для модуля эхоподавления возможно установить частотный спектр." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" +"Уровень порогового значения в плагине антишипения (деэссера) теперь " +"сохраняется в файле предустановки." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" +"Улучшено полосное разделение для кристаллизатора с новыми значениями " +"интенсивности по умолчанию." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" +"Зависимости во входных и выходных уровнях громкости теперь коррелируют со " +"значениями регулятора, которые ранее нельзя было выровнять." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" +"При добавлении новых полос в эквалайзер их значение равно «Bell» вместо " +"«Отключено»." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" +"Предустановки для Эквалайзера APO теперь работают корректно с языками, " +"отличными от С." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" +"Улучшено взаимодействие между точками пересечения портов фильтров в PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" +"Ранее, усиление сигнала в плагине кристаллизатора было слишком высоким. " +"Установлены более адекватные значения." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "Улучшена работа ресемлера с некоторыми плагинами (rnnoise и пр.)" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" +"Установка множества предустановок для автозагрузки теперь должно работать " +"корректно" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" +"Временные окна для взаимодействия с некоторыми плагинами теперь работают " +"корректно" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +#, fuzzy +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" +"Была исправлена ошибка меню конвольвера, при которой файлы импульсов не " +"подгружались, если на выбор доступна только одна опция" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" +"Исправлена ошибка, при которой плагин высоты тона не мог правильно " +"инициализироваться" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" +"Предупреждение о переполнении больше не должно менять расположение соседних " +"виджетов" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "Исправлен перевод некоторых виджетов" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "Исправлено неправильное выравнивание некоторых виджетов" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +#, fuzzy +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" +"По указаным выше причинам, лагин работы с громкостью теперь снова доступен. " +"Это значит, что он снова добавлен в список опциональных зависимостей." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" +"Исправлена ошибка сегментирования, возникавшая в случае, когда опциональные " +"зависимости не были установлены" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "Улучшен интерфейс эквалайзера." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" +"Теперь используется компрессор LSP, что позволяет пользователю выбрать " +"внешний источник в качестве входного сайдчейна." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "Теперь компрессор LSP поддерживает режим 'Усиление'." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" +"Когда 'смещение каналов' активировано в эквалайзере, предустановки " +"импортированные из APO будут применены только к каналу, отображаемому в " +"окне. Это позволяет применять различные предустановки для каждого канала " +"вместо установки одинакового значения в обоих каналах." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" +"Исправлены ошибки сегментирования, возникавшие при создании или удалении " +"предустановок, используемых для автозагрузки" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" +"Этот выпуск является одним из самых крупных, что мы делали за всё время. " +"Объём изменений обширен, поэтому очень трудно описать их все." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +#, fuzzy +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" +"Перечисленные изменения являются самыми важными на наш взгляд. Если вам " +"интересны возможности, предоставляемые приложением, просто возьмите" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "Приложение и его репозиторий были переименованы в 'EasyEffects'" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "gtkmm3 был заменен на gtkmm4" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "Фильтры GStreamer были заменены на собственные фильтры PipeWire." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" +"Множество возможностей былы переписаны с нуля. Например предустановки для " +"автозагрузки. Другие изменения, которые стоит упомянуть, можно увидеть в " +"меню выбора плагинов. Теперь пользователь может отобразить в окне только те " +"плагины, которые посчитает необходимыми." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" +"Библиотека Boost более не является зависимостью. Ценой данного решения " +"является небольшое изменение структуры предустановок. Имея немного терпения, " +"можно отредактировать предустановки PulseEffects в любом текстовом " +"редакторе, чтобы сделать их совместимыми с EasyEffects. Надеемся, кто нибудь " +"создаст скрипт для автоматизации данной возможности." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" +"Наличие некоторых новых библиотек, ранее считавшиеся опциональными, теперь " +"является обязательным" + +#~ msgid "This release adds the following features:" +#~ msgstr "Этот выпуск привносит следующие возможности:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Этот выпуск исправляет следующие ошибки:" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "вкладка больше не показывает шкалу громкости. Подробнее о проблеме и её " +#~ "решении можно узнать в #1211" + +#~ msgid "and #1427" +#~ msgstr "и #1427" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "наш канал обработки был активен, и виджет спектра отображался" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Появился новый параметр, позволяющая пользователю выбирать тайм-аут " +#~ "бездействия для канала обработки. Когда ни один клиент не играет" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "или записывает с наших устройств, фильтры будут отключены после " +#~ "достижения тайм-аута. Это делается для уверенности в том, что" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "не тратится мощность процессора на обработку тишины." + +#~ msgid "mean." +#~ msgstr "геометрического." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Это поможет избегать случаев, когда «встроенная» громкость навсегда " +#~ "застревает на одном и том же значении." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "В этом выпуске исправлены следующие ошибки:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Этот выпуск добавляет следующие возможности:" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "менеджера управления сессиями PipeWire. Больше информации в отчете [1144]" + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Потерянные системные значки теперь не должны отображаться внутри " +#~ "пользовательского интерфейса приложения" + +#~ msgid "a look at and" +#~ msgstr "и опробуйте их" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Эквалайзер, компрессор и прочие звуковые эффекты" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "лимитер;компрессор;ребербатор;эквалайзер;автогромкость;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Предустановки\"" + +#~ msgid "Enable" +#~ msgstr "Включить" + +#~ msgid "Exclude" +#~ msgstr "Исключить" + +#~ msgid "Mute Application" +#~ msgstr "Заглушить Приложение" + +#~ msgid "Application Volume" +#~ msgstr "Громкость Приложения" + +#~ msgid "_Preferences" +#~ msgstr "_Настройки" + +#~ msgid "_Manual" +#~ msgstr "_Руководство" + +#~ msgid "_Shortcuts" +#~ msgstr "_Горячие клавиши" + +#~ msgid "_Reset Settings" +#~ msgstr "_Сброс настроек" + +#~ msgid "_About EasyEffects" +#~ msgstr "_О программе EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Предустановки" + +#~ msgid "Presets Menu" +#~ msgstr "Меню предустановок" + +#~ msgid "Global Bypass" +#~ msgstr "Общий обход" + +#~ msgid "Primary Menu" +#~ msgstr "Главное меню" + +#~ msgid "EasyEffects Window" +#~ msgstr "Окно EasyEffects" + +#~ msgid "Applications List" +#~ msgstr "Список приложений" + +#~ msgid "Empty List" +#~ msgstr "Пустой список" + +#~ msgid "No Audio Application Available" +#~ msgstr "Нет доступных приложений аудио" + +#~ msgid "Target" +#~ msgstr "Целевая громкость" + +#~ msgid "Maximum History" +#~ msgstr "Исторически максимальный" + +#~ msgid "Reference" +#~ msgstr "База" + +#~ msgid "Momentary" +#~ msgstr "Моментальные измерения" + +#~ msgid "Short-Term" +#~ msgstr "Краткосрочные измерения" + +# Время интеграции — это величина, характеризующая быстродействие измерителя. +# https://tech.ebu.ch/docs/factsheets/Factsheet-R128-2011-RUS.pdf +# В документе выше переводчик перевел 'Integrated' как 'Интегрированные', +# хотя сам же написал, что это "измерения от начала до конца" +# Яндекс.Переводчик перевел лучше — "Комплексные измерения" +#~ msgid "Integrated" +#~ msgstr "Комплексные измерения" + +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Среднее геометрическое (MSI)" + +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Среднее геометрическое (MS)" + +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Среднее геометрическое (MI)" + +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Среднее геометрическое (SI)" + +# #, fuzzy +#~ msgid "Reset History" +#~ msgstr "Сброс истории" + +#~ msgid "Relative" +#~ msgstr "Относительное значение" + +# ??? Не уверен в переводе +#~ msgid "Range" +#~ msgstr "Диапазон" + +#~ msgid "Loudness" +#~ msgstr "Громкость" + +#~ msgid "Output Gain" +#~ msgstr "Усиление выхода" + +# ############################################### +# https://github.com/wwmm/easyeffects/pull/289 +# Left here for future thinking +# msgid "Influence of measurements with momentary integration time" +# msgstr "Влияние измерений с моментальным временем интеграции" +# msgid "Influence of measurements with short integration time" +# msgstr "Влияние измерений с малым временем интеграции" +# msgid "Influence of integrated measurements" +# msgstr "Влияние комплексных измерений" +# ############################################### +#~ msgid "Input" +#~ msgstr "Вход" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Усиление входа" + +#~ msgid "Output" +#~ msgstr "Выход" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Усиление выхода" + +#~ msgid "Reset" +#~ msgstr "Сброс" + +#~ msgid "Using" +#~ msgstr "Используется" + +# #, fuzzy +#~ msgid "Device" +#~ msgstr "Устройство" + +#~ msgid "Name" +#~ msgstr "Название" + +#~ msgid "Profile" +#~ msgstr "Профиль" + +#~ msgid "Preset" +#~ msgstr "Предустановка" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Удалить автозагрузку предустановки" + +#~ msgid "Listen" +#~ msgstr "Прослушать" + +#~ msgid "Blend Harmonics" +#~ msgstr "Смешение гармоник" + +#~ msgid "3rd" +#~ msgstr "3-ий" + +#~ msgid "2nd" +#~ msgstr "2-ой" + +#~ msgid "Amount" +#~ msgstr "Величина" + +#~ msgid "Harmonics" +#~ msgstr "Гармоники" + +#~ msgid "Scope" +#~ msgstr "Диапазон частот" + +#~ msgid "Floor" +#~ msgstr "Нижний порог" + +#~ msgid "Floor Value" +#~ msgstr "Величина нижнего порога" + +#~ msgid "Link" +#~ msgstr "Указатель" + +#~ msgid "Application Name" +#~ msgstr "Название приложения" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "Добавить в чёрный список приложений" + +#~ msgid "Excluded Applications List" +#~ msgstr "Чёрный список приложений" + +#~ msgid "Show Excluded Applications" +#~ msgstr "Отобразить чёрный список приложений" + +#~ msgid "Compressor" +#~ msgstr "Компрессор" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Downward" +#~ msgstr "Нисходящий" + +#~ msgid "Upward" +#~ msgstr "Восходящий" + +#~ msgid "Boosting" +#~ msgstr "Усиление" + +#~ msgid "Compression Mode" +#~ msgstr "Режим сжатия" + +#~ msgid "Boost Threshold" +#~ msgstr "Порог усиления" + +#~ msgid "Boost Amount" +#~ msgstr "Величина Усиления" + +#~ msgid "Attack" +#~ msgstr "Атака" + +#~ msgid "Time" +#~ msgstr "Время" + +#~ msgid "Threshold" +#~ msgstr "Порог срабатывания" + +#~ msgid "Attack Time" +#~ msgstr "Время атаки" + +#~ msgid "Attack Threshold" +#~ msgstr "Порог атаки" + +#~ msgid "Release" +#~ msgstr "Восстановление" + +#~ msgid "Release Time" +#~ msgstr "Время восстановления" + +#~ msgid "Release Threshold" +#~ msgstr "Порог восстановления" + +#~ msgid "Ratio" +#~ msgstr "Степень сжатия" + +#~ msgid "Knee" +#~ msgstr "Колено (излом)" + +#~ msgid "Makeup" +#~ msgstr "Усиление вверх" + +# #, fuzzy +#~ msgid "Sidechain" +#~ msgstr "Сайдчейн" + +#~ msgid "Peak" +#~ msgstr "Пик" + +#~ msgid "RMS" +#~ msgstr "RMS (среднеквадратичный уровень сигнала)" + +#~ msgid "Low-Pass" +#~ msgstr "Фильтр НЧ" + +#~ msgid "Uniform" +#~ msgstr "Равномерно" + +# #, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Режим сайдчейна" + +# #, fuzzy +#~ msgid "Source" +#~ msgstr "Источник" + +#~ msgid "Middle" +#~ msgstr "Средний" + +# #, fuzzy +#~ msgid "Side" +#~ msgstr "Боковой" + +#~ msgid "Left" +#~ msgstr "Левый" + +#~ msgid "Right" +#~ msgstr "Правый" + +# #, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Источник сайдчейна" + +#~ msgid "Type" +#~ msgstr "Тип" + +#~ msgid "Feed-forward" +#~ msgstr "Прямая связь" + +#~ msgid "Feed-back" +#~ msgstr "Обратная связь" + +#~ msgid "External" +#~ msgstr "Внешний" + +# #, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Тип сайдчейна" + +# #, fuzzy +#~ msgid "Input Device" +#~ msgstr "Устройство ввода" + +#~ msgid "PreAmplification" +#~ msgstr "Предусиление" + +#~ msgid "Reactivity" +#~ msgstr "Скорость реакции" + +#~ msgid "Lookahead" +#~ msgstr "Задержка (lookahead)" + +# #, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Фильтры сайдчейна" + +#~ msgid "High-Pass" +#~ msgstr "Фильтр ВЧ" + +#~ msgid "Frequency" +#~ msgstr "Частота" + +#~ msgid "Off" +#~ msgstr "Откл" + +#~ msgid "12 dB/oct" +#~ msgstr "12 Дб/окт" + +#~ msgid "24 dB/oct" +#~ msgstr "24 Дб/окт" + +#~ msgid "36 dB/oct" +#~ msgstr "36 Дб/окт" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Режим высокочастотного фильтра" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Частота высокочастотного фильтра" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Режим низкочастотного фильтра" + +#~ msgid "Gain" +#~ msgstr "Усиление" + +#~ msgid "Envelope" +#~ msgstr "Огибающая" + +#~ msgid "Curve" +#~ msgstr "Кривая" + +#~ msgid "L" +#~ msgstr "Л" + +#~ msgid "Left Channel" +#~ msgstr "Левый Канал" + +#~ msgid "R" +#~ msgstr "П" + +#~ msgid "Right Channel" +#~ msgstr "Правый Канал" + +#~ msgid "Impulses" +#~ msgstr "Импульсы" + +#~ msgid "Combine" +#~ msgstr "Объединить" + +#~ msgid "Stereo Width" +#~ msgstr "Ширина стерео" + +#~ msgid "Spectrum" +#~ msgstr "Спектр" + +#~ msgid "Log Scale" +#~ msgstr "Логарифмическая шкала" + +#~ msgid "Autogain" +#~ msgstr "Нормализация громкости" + +#~ msgid "Rate" +#~ msgstr "Частота" + +#~ msgid "Samples" +#~ msgstr "Образцы" + +#~ msgid "Duration" +#~ msgstr "Длительность" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "Объединить импульсные характеристики" + +#~ msgid "First Kernel" +#~ msgstr "Первое ядро" + +#~ msgid "Second Kernel" +#~ msgstr "Второе ядро" + +#~ msgid "Output File Name" +#~ msgstr "Имя файла на выходе" + +#~ msgid "Combined Kernel Name" +#~ msgstr "Имя суммарного ядра" + +#~ msgid "Import Impulse" +#~ msgstr "Импортировать импульс" + +#~ msgid "Search" +#~ msgstr "Поиск" + +#~ msgid "Search Impulse File" +#~ msgstr "Поиск файла импульса" + +#~ msgid "Impulse Files List" +#~ msgstr "Список файлов импульса" + +#~ msgid "Default" +#~ msgstr "По умолчанию" + +#~ msgid "Cutoff" +#~ msgstr "Усечение" + +#~ msgid "Feed" +#~ msgstr "Подача" + +#~ msgid "Bypass" +#~ msgstr "Обход" + +#~ msgid "Mute" +#~ msgstr "Приглушить" + +#~ msgid "Detection" +#~ msgstr "Определение" + +#~ msgid "Wide" +#~ msgstr "Ширина" + +#~ msgid "Split" +#~ msgstr "Частота раздела" + +#~ msgid "F1 Split" +#~ msgstr "Ч1 раздела" + +#~ msgid "Frequency 1 Split" +#~ msgstr "Частота 1 раздела" + +#~ msgid "F2 Peak" +#~ msgstr "Ч1 пик" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "Частота 2 пик" + +#~ msgid "F1 Gain" +#~ msgstr "Ч1 усиление" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "Частота 1 усиление" + +#~ msgid "F2 Level" +#~ msgstr "Ч2 уровень" + +#~ msgid "Frequency 2 Level" +#~ msgstr "Частота 2 уровень" + +#~ msgid "F2 Peak Q" +#~ msgstr "Ч2 пик добротности" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Частота 2 пик добротности" + +#~ msgid "Laxity" +#~ msgstr "Допуск на срабатывание" + +#~ msgid "Detected" +#~ msgstr "Определено" + +#~ msgid "Reduction" +#~ msgstr "Ослабление" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Frame Size" +#~ msgstr "Размер кадра" + +#~ msgid "Filter Length" +#~ msgstr "Длина фильтра" + +#~ msgid "Excluded Apps" +#~ msgstr "Приложения чёрного списка" + +#~ msgid "Bands" +#~ msgstr "Число полос" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Разделить каналы" + +#~ msgid "Flat Response" +#~ msgstr "Плоская АЧХ" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Подсчитать частоты" + +#~ msgid "Load APO Preset" +#~ msgstr "Загрузить предустановку APO" + +#~ msgid "Bell" +#~ msgstr "Колокол" + +#~ msgid "High Pass" +#~ msgstr "Высокочастотный фильтр" + +#~ msgid "High Shelf" +#~ msgstr "Высокочастотный полочный фильтр" + +#~ msgid "Low Pass" +#~ msgstr "Фильтр низких частот" + +#~ msgid "Low Shelf" +#~ msgstr "Низкочастотный полочный фильтр" + +#~ msgid "Notch" +#~ msgstr "Вырез" + +#~ msgid "Resonance" +#~ msgstr "Резонансы" + +#~ msgid "All Pass" +#~ msgstr "Фазовый" + +#~ msgid "Band Type" +#~ msgstr "Тип полосы" + +#~ msgid "Band Mode" +#~ msgstr "Режим полосы" + +#~ msgid "Slope" +#~ msgstr "Наклон" + +#~ msgid "Band Slope" +#~ msgstr "Наклон полосы" + +#~ msgid "Width" +#~ msgstr "Ширина" + +#~ msgid "Quality" +#~ msgstr "Качество" + +#~ msgid "Solo" +#~ msgstr "Соло" + +#~ msgid "Ceil" +#~ msgstr "Потолок" + +#~ msgid "Ceil Value" +#~ msgstr "Величина потолка" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "Доступ" + +#~ msgid "Description" +#~ msgstr "Описание" + +#~ msgid "Remove this model file" +#~ msgstr "Удалить этот файл модели" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12 дБ/окт фильтр НЧ" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24 дБ/окт фильтр НЧ" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36 дБ/окт фильтр НЧ" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12 дБ/окт фильтр ВЧ" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24 дБ/окт фильтр ВЧ" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36 дБ/окт фильтр ВЧ" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6 дБ/окт полосовой" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12 дБ/окт полосовой" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18 дБ/окт полосовой" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6 дБ/окт полосно-заграждающий" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12 дБ/окт полосно-заграждающий" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "18 дБ/окт полосно-заграждающий" + +#~ msgid "Inertia" +#~ msgstr "Инертность" + +# http://wikisound.org/Гейт: шумовой гейт или просто гейт — это электронное устройство или плагин динамической обработки, который используется для контроля уровня звукового сигнала. Гейт пропускает или глушит сигнал в зависимости от установленного порогового значения. Он очень часто используется для подавления шума в паузах. +#~ msgid "Gate" +#~ msgstr "Шумовые ворота (гейт)" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Время восстановления" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Внешний" + +#~ msgid "Gating" +#~ msgstr "Гейтинг" + +#~ msgid "Oversampling" +#~ msgstr "Передискретизация" + +#~ msgid "Dither" +#~ msgstr "Подмешивание шума" + +#~ msgid "Herm Thin" +#~ msgstr "Эрмит узкий" + +#~ msgid "Herm Wide" +#~ msgstr "Эрмит широкий" + +#~ msgid "Herm Tail" +#~ msgstr "Эрмит хвост" + +#~ msgid "Herm Duck" +#~ msgstr "Эрмит нос" + +#~ msgid "Exp Thin" +#~ msgstr "Эксп. узкий" + +#~ msgid "Exp Wide" +#~ msgstr "Эксп. широкий" + +#~ msgid "Exp Tail" +#~ msgstr "Эксп. хвост" + +#~ msgid "Exp Duck" +#~ msgstr "Эксп. нос" + +#~ msgid "Line Thin" +#~ msgstr "Лин. узкий" + +#~ msgid "Line Wide" +#~ msgstr "Лин. широкий" + +#~ msgid "Line Tail" +#~ msgstr "Лин. хвост" + +#~ msgid "Line Duck" +#~ msgstr "Лин. нос" + +#~ msgid "None" +#~ msgstr "Нет" + +#~ msgid "Half x2(2L)" +#~ msgstr "Половинный x2(2L)" + +#~ msgid "Half x2(3L)" +#~ msgstr "Половинный x2(3L)" + +#~ msgid "Half x3(2L)" +#~ msgstr "Половинный x3(2L)" + +#~ msgid "Half x3(3L)" +#~ msgstr "Половинный x3(3L)" + +#~ msgid "Half x4(2L)" +#~ msgstr "Половинный x4(2L)" + +#~ msgid "Half x4(3L)" +#~ msgstr "Половинный x4(3L)" + +#~ msgid "Half x6(2L)" +#~ msgstr "Половинный x6(2L)" + +#~ msgid "Half x6(3L)" +#~ msgstr "Половинный x6(3L)" + +#~ msgid "Half x8(2L)" +#~ msgstr "Половинный x8(2L)" + +#~ msgid "Half x8(3L)" +#~ msgstr "Половинный x8(3L)" + +#~ msgid "Full x2(2L)" +#~ msgstr "Полный x2(2L)" + +#~ msgid "Full x2(3L)" +#~ msgstr "Полный x2(3L)" + +#~ msgid "Full x3(2L)" +#~ msgstr "Полный x3(2L)" + +#~ msgid "Full x3(3L)" +#~ msgstr "Полный x3(3L)" + +#~ msgid "Full x4(2L)" +#~ msgstr "Полный x4(2L)" + +#~ msgid "Full x4(3L)" +#~ msgstr "Полный x4(3L)" + +#~ msgid "Full x6(2L)" +#~ msgstr "Полный x6(2L)" + +#~ msgid "Full x6(3L)" +#~ msgstr "Полный x6(3L)" + +#~ msgid "Full x8(2L)" +#~ msgstr "Полный x8(2L)" + +#~ msgid "Full x8(3L)" +#~ msgstr "Полный x8(3L)" + +#~ msgid "SC PreAmp" +#~ msgstr "Усиление сайдчейна" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Предусиление сайдчейна" + +#~ msgid "Boost" +#~ msgstr "Усиление" + +# В данном режиме «Компрессор» обрабатывает сигналы сразу двух каналов (стерео), уравнивая их уровни. +#~ msgid "Stereo Link" +#~ msgstr "Стереосвязка" + +# #, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Внешняя Цепочка" + +#~ msgid "External Sidechain Source" +#~ msgstr "Источник Внешней Цепочки" + +#~ msgid "Auto Leveling" +#~ msgstr "Автовыравнивание" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "Атака автовыравнивания" + +#~ msgid "Auto Leveling Release" +#~ msgstr "Восстановление автовыравнивания" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "Колено автовыравнивания" + +#~ msgid "Gain Left" +#~ msgstr "Усиление левого" + +#~ msgid "Gain Right" +#~ msgstr "Усиление правого" + +# #, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Левый сайдчейн" + +# #, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Правый сайдчейн" + +#~ msgid "Standard" +#~ msgstr "Стандартный" + +#~ msgid "Flat" +#~ msgstr "Плоский" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "FFT Size" +#~ msgstr "Размер FFT" + +#~ msgid "Fast Fourier Transform Size" +#~ msgstr "Размер быстрого преобразования Фурье" + +#~ msgid "Output Volume" +#~ msgstr "Громкость на выходе" + +#~ msgid "Ceiling" +#~ msgstr "Верхний порог" + +#~ msgid "Operating Mode" +#~ msgstr "Режим работы" + +#~ msgid "Classic" +#~ msgstr "Классический" + +#~ msgid "Modern" +#~ msgstr "Современный" + +# #, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Усиление сайдчейна" + +#~ msgid "Pink BT" +#~ msgstr "БП розового" + +#~ msgid "Pink MT" +#~ msgstr "СП розового" + +#~ msgid "Brown BT" +#~ msgstr "БП коричневого" + +#~ msgid "Brown MT" +#~ msgstr "СП коричневого" + +#~ msgid "Bands List" +#~ msgstr "Полосы" + +#~ msgid "Band 1" +#~ msgstr "Полоса 1" + +#~ msgid "Band 2" +#~ msgstr "Полоса 2" + +#~ msgid "Band 3" +#~ msgstr "Полоса 3" + +#~ msgid "Band 4" +#~ msgstr "Полоса 4" + +#~ msgid "Band 5" +#~ msgstr "Полоса 5" + +#~ msgid "Band 6" +#~ msgstr "Полоса 6" + +#~ msgid "Band 7" +#~ msgstr "Полоса 7" + +#~ msgid "Band 8" +#~ msgstr "Полоса 8" + +#~ msgid "Band Start" +#~ msgstr "Начало полосы" + +#~ msgid "Band End" +#~ msgstr "Конец полосы" + +#~ msgid "Band Compression Mode" +#~ msgstr "Режим компрессии полосы" + +#~ msgid "Band Bypass" +#~ msgstr "Обход полосы" + +# #, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Параметры сайдчейна полосы" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Фильтр среза НЧ" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Частота фильтра среза НЧ" + +#~ msgid "High-Cut Filter" +#~ msgstr "Фильтр среза ВЧ" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Частота фильтра среза ВЧ" + +#~ msgid "PreAmp" +#~ msgstr "Предусиление" + +#~ msgid "Band Gain" +#~ msgstr "Усиление полосы" + +#~ msgid "Band Envelope" +#~ msgstr "Огибающая полосы" + +#~ msgid "Band Curve" +#~ msgstr "Кривая полосы" + +#~ msgid "Split Mode" +#~ msgstr "Режим раздела" + +#~ msgid "Split 1/2" +#~ msgstr "Разделение 1/2" + +#~ msgid "Split Frequency 1" +#~ msgstr "Частота раздела 1" + +#~ msgid "Split 2/3" +#~ msgstr "Разделение 2/3" + +#~ msgid "Split Frequency 2" +#~ msgstr "Частота раздела 2" + +#~ msgid "Split 3/4" +#~ msgstr "Разделение 3/4" + +#~ msgid "Split Frequency 3" +#~ msgstr "Частота раздела 3" + +#~ msgid "Sub Band" +#~ msgstr "Подполоса" + +#~ msgid "Band 1 Bypass" +#~ msgstr "Полоса 1 обход" + +#~ msgid "Band 1 Solo" +#~ msgstr "Полоса 1 соло" + +#~ msgid "Band 1 Detection" +#~ msgstr "Полоса 1 обнаружение" + +#~ msgid "Band 1 Attack" +#~ msgstr "Полоса 1 атака" + +#~ msgid "Band 1 Release" +#~ msgstr "Полоса 1 восстановление" + +#~ msgid "Band 1 Threshold" +#~ msgstr "Полоса 1 порог" + +#~ msgid "Band 1 Ratio" +#~ msgstr "Полоса 1 соотношение" + +#~ msgid "Band 1 Knee" +#~ msgstr "Полоса 1 колено" + +#~ msgid "Band 1 Makeup" +#~ msgstr "Полоса 1 усиление вверх" + +#~ msgid "Max Reduction" +#~ msgstr "Максимум подавления" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Полоса 1 макс. подавление" + +#~ msgid "Low Band" +#~ msgstr "Низкие частоты" + +#~ msgid "Band 2 Bypass" +#~ msgstr "Полоса 2 обход" + +#~ msgid "Band 2 Solo" +#~ msgstr "Полоса 2 соло" + +#~ msgid "Band 2 Detection" +#~ msgstr "Полоса 2 обнаружение" + +#~ msgid "Band 2 Attack" +#~ msgstr "Полоса 2 атака" + +#~ msgid "Band 2 Release" +#~ msgstr "Полоса 2 восстановление" + +#~ msgid "Band 2 Threshold" +#~ msgstr "Полоса 2 порог" + +#~ msgid "Band 2 Ratio" +#~ msgstr "Полоса 2 соотношение" + +#~ msgid "Band 2 Knee" +#~ msgstr "Полоса 2 колено" + +#~ msgid "Band 2 Makeup" +#~ msgstr "Полоса 2 усиление вверх" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Полоса 2 макс. подавление" + +#~ msgid "Mid Band" +#~ msgstr "Средние частоты" + +#~ msgid "Band 3 Bypass" +#~ msgstr "Полоса 3 обход" + +#~ msgid "Band 3 Solo" +#~ msgstr "Полоса 3 соло" + +#~ msgid "Band 3 Detection" +#~ msgstr "Полоса 3 обнаружение" + +#~ msgid "Band 3 Attack" +#~ msgstr "Полоса 3 атака" + +#~ msgid "Band 3 Release" +#~ msgstr "Полоса 3 восстановление" + +#~ msgid "Band 3 Threshold" +#~ msgstr "Полоса 3 порог" + +#~ msgid "Band 3 Ratio" +#~ msgstr "Полоса 3 соотношение" + +#~ msgid "Band 3 Knee" +#~ msgstr "Полоса 3 колено" + +#~ msgid "Band 3 Makeup" +#~ msgstr "Полоса 3 усиление вверх" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Полоса 3 макс. подавление" + +#~ msgid "High Band" +#~ msgstr "Высокие частоты" + +#~ msgid "Band 4 Bypass" +#~ msgstr "Полоса 4 обход" + +#~ msgid "Band 4 Solo" +#~ msgstr "Полоса 4 соло" + +#~ msgid "Band 4 Detection" +#~ msgstr "Полоса 4 обнаружение" + +#~ msgid "Band 4 Attack" +#~ msgstr "Полоса 4 атака" + +#~ msgid "Band 4 Release" +#~ msgstr "Полоса 4 восстановление" + +#~ msgid "Band 4 Threshold" +#~ msgstr "Полоса 4 порог" + +#~ msgid "Band 4 Ratio" +#~ msgstr "Полоса 4 соотношение" + +#~ msgid "Band 4 Knee" +#~ msgstr "Полоса 4 колено" + +#~ msgid "Band 4 Makeup" +#~ msgstr "Полоса 4 усиление вверх" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Полоса 4 макс. подавление" + +#~ msgid "General" +#~ msgstr "Общие" + +#~ msgid "Use Default Input" +#~ msgstr "Использовать стандартный вход" + +# #, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Выбрать устройство ввода" + +#~ msgid "Use Default Output" +#~ msgstr "Использовать стандартный выход" + +#~ msgid "Custom Output Device" +#~ msgstr "Выбрать устройство вывода" + +#~ msgid "Server Information" +#~ msgstr "Информация о сервере" + +#~ msgid "Header Version" +#~ msgstr "Версия оболочки" + +#~ msgid "Library Version" +#~ msgstr "Версия библиотеки" + +#~ msgid "Sampling Rate" +#~ msgstr "Частота дискретизации" + +#~ msgid "Minimum Quantum" +#~ msgstr "Минимальное квантование" + +#~ msgid "Maximum Quantum" +#~ msgstr "Максимальное квантование" + +#~ msgid "Default Quantum" +#~ msgstr "Стандартное квантование" + +#~ msgid "Presets Autoloading" +#~ msgstr "Автозагрузка предустановок" + +#~ msgid "Output Devices" +#~ msgstr "Устройства вывода" + +#~ msgid "Output Presets" +#~ msgstr "Предустановки выхода" + +#~ msgid "Create Association" +#~ msgstr "Создать ассоциацию" + +#~ msgid "Add Autoloading Output Preset" +#~ msgstr "Добавить в автозагрузку предустановку выхода" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Список автозагружаемых предустановок выхода" + +# #, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Устройства ввода" + +#~ msgid "Input Presets" +#~ msgstr "Предустановки входа" + +#~ msgid "Add Autoloading Input Preset" +#~ msgstr "Добавить в автозагрузку предустановку входа" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Список автозагружаемых предустановок входа" + +#~ msgid "Modules" +#~ msgstr "Модули" + +#~ msgid "Modules List" +#~ msgstr "Список модулей" + +#~ msgid "Clients" +#~ msgstr "Клиенты" + +#~ msgid "Clients List" +#~ msgstr "Список клиентов" + +#~ msgid "Test Signal" +#~ msgstr "Проверочный сигнал" + +#~ msgid "State" +#~ msgstr "Состояние" + +#~ msgid "Enabled" +#~ msgstr "Включено" + +#~ msgid "Properties" +#~ msgstr "Свойства" + +#~ msgid "Channels" +#~ msgstr "Каналы" + +#~ msgid "Both" +#~ msgstr "Оба" + +#~ msgid "Both Channels" +#~ msgstr "Оба канала" + +#~ msgid "Waveform" +#~ msgstr "Форма волны" + +#~ msgid "Sine Wave" +#~ msgstr "Синусоида" + +#~ msgid "White Noise" +#~ msgstr "Белый шум" + +#~ msgid "High Speed" +#~ msgstr "Высокая скорость" + +#~ msgid "High Quality" +#~ msgstr "Высокое качество" + +#~ msgid "High Consistency" +#~ msgstr "Высокая согласованность" + +#~ msgid "Formant" +#~ msgstr "Форманта" + +#~ msgid "Shifted" +#~ msgstr "Смещённый" + +#~ msgid "Preserved" +#~ msgstr "Сохраняемый" + +#~ msgid "Transients" +#~ msgstr "Переходные звуки" + +#~ msgid "Crisp" +#~ msgstr "Чёткость" + +#~ msgid "Mixed" +#~ msgstr "Смешанный" + +#~ msgid "Smooth" +#~ msgstr "Гладкий" + +#~ msgid "Detector" +#~ msgstr "Детектор" + +#~ msgid "Compound" +#~ msgstr "Составной" + +#~ msgid "Percussive" +#~ msgstr "Ударный" + +#~ msgid "Soft" +#~ msgstr "Мягкий" + +#~ msgid "Phase" +#~ msgstr "Фаза" + +#~ msgid "Laminar" +#~ msgstr "Ламинарный" + +#~ msgid "Independent" +#~ msgstr "Независимый" + +#~ msgid "Cents" +#~ msgstr "Центы" + +#~ msgid "Semitones" +#~ msgstr "Полутона" + +#~ msgid "Octaves" +#~ msgstr "Октавы" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Удалить этот файл модели" + +#~ msgid "Add Effect" +#~ msgstr "Добавить эффект" + +#~ msgid "Used Plugins List" +#~ msgstr "Список используемых плагинов" + +#~ msgid "No Effects" +#~ msgstr "Без эффектов" + +#~ msgid "Audio Stream Not Modified" +#~ msgstr "Аудиопоток не изменён" + +#~ msgid "Search Plugin" +#~ msgstr "Найти плагин" + +#~ msgid "Plugins List" +#~ msgstr "Список плагинов" + +#~ msgid "_General" +#~ msgstr "_Общие" + +# #, fuzzy +#~ msgid "Service" +#~ msgstr "Служба" + +#~ msgid "Launch Service at System Startup" +#~ msgstr "Запускать службу при старте системы" + +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Завершать работу при закрытии окна" + +#~ msgid "Audio" +#~ msgstr "Аудио" + +#~ msgid "Process All Output Streams" +#~ msgstr "Обрабатывать все выходные потоки" + +#~ msgid "Process All Input Streams" +#~ msgstr "Обрабатывать все входные потоки" + +#~ msgid "Ignore Streams from Monitor of Devices" +#~ msgstr "Игнорировать потоки с монитора устройств" + +#~ msgid "Use Cubic Volume" +#~ msgstr "Использовать кубическую громкость" + +#~ msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +#~ msgstr "Сбрасывать громкость виртуальных устройств EasyEffects при запуске" + +#~ msgid "Inactivity Timeout" +#~ msgstr "Тайм-аут бездействия" + +#~ msgid "Style" +#~ msgstr "Стиль" + +#~ msgid "Use Dark Theme" +#~ msgstr "Использовать тёмную тему" + +#~ msgid "Hide Menus on Outside Clicks" +#~ msgstr "Скрывать меню по щелчку вне фокуса" + +#~ msgid "_Spectrum" +#~ msgstr "_Спектр" + +#~ msgid "Shape" +#~ msgstr "Форма" + +#~ msgid "Bars" +#~ msgstr "Полосы" + +#~ msgid "Lines" +#~ msgstr "Линии" + +#~ msgid "Dots" +#~ msgstr "Точки" + +#~ msgid "Points" +#~ msgstr "Пункты" + +#~ msgid "Height" +#~ msgstr "Высота" + +#~ msgid "Line Width" +#~ msgstr "Ширина линии" + +#~ msgid "Fill" +#~ msgstr "Заполнять" + +#~ msgid "Show Bars Border" +#~ msgstr "Отобразить границы полос" + +#~ msgid "Rounded Corners" +#~ msgstr "Скруглённые углы" + +#~ msgid "Color" +#~ msgstr "Цвет" + +#~ msgid "Lines and Bars" +#~ msgstr "Линии и полосы" + +#~ msgid "Axis Labels" +#~ msgstr "Разметка осей" + +#~ msgid "Frequency Range" +#~ msgstr "Диапазон частот" + +#~ msgid "Minimum" +#~ msgstr "Минимум" + +#~ msgid "Maximum" +#~ msgstr "Максимум" + +#~ msgid "Load" +#~ msgstr "Загрузить" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Сохранить текущие настройки в этот файл предустановки" + +#~ msgid "Remove this preset file" +#~ msgstr "Удалить этот файл с предустановками" + +#~ msgid "New Output Preset Name" +#~ msgstr "Имя новой предустановки выхода" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Создать предустановку" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Импорт предустановки" + +#~ msgid "Search Output Preset" +#~ msgstr "Поиск предустановки выхода" + +#~ msgid "Output Presets List" +#~ msgstr "Список предустановок выхода" + +#~ msgid "New Input Preset Name" +#~ msgstr "Имя новой предустановки входа" + +#~ msgid "Search Input Preset" +#~ msgstr "Поиск предустановки входа" + +#~ msgid "Input Presets List" +#~ msgstr "Список предустановок входа" + +#~ msgid "High Frequency Damping" +#~ msgstr "Высокочастотное демпфирование" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Room Size" +#~ msgstr "Размер комнаты" + +#~ msgid "Small" +#~ msgstr "Маленькая" + +#~ msgid "Medium" +#~ msgstr "Средняя" + +#~ msgid "Large" +#~ msgstr "Огромная" + +#~ msgid "Tunnel" +#~ msgstr "Туннель" + +#~ msgid "Large/smooth" +#~ msgstr "Большой/плавный" + +#~ msgid "Experimental" +#~ msgstr "Экспериментальный" + +#~ msgid "Diffusion" +#~ msgstr "Диффузия" + +#~ msgid "Pre Delay" +#~ msgstr "Предзадержка" + +#~ msgid "Decay Time" +#~ msgstr "Время распада" + +#~ msgid "Wet Amount" +#~ msgstr "Влажность" + +#~ msgid "Wet Level" +#~ msgstr "Уровень влаж." + +#~ msgid "Dry Amount" +#~ msgstr "Сухость" + +#~ msgid "Dry Level" +#~ msgstr "Уровень сух." + +#~ msgid "Bass Cut" +#~ msgstr "Срез басов" + +#~ msgid "Treble Cut" +#~ msgstr "Срез тембра" + +#~ msgid "Ambience" +#~ msgstr "Окр. среда" + +#~ msgid "Empty Walls" +#~ msgstr "Пустые стены" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Room" +#~ msgstr "Комната" + +#~ msgid "Large Empty Hall" +#~ msgstr "Большой пустой зал" + +#~ msgid "Disco" +#~ msgstr "Диско" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Большой занятый чем-то зал" + +#~ msgid "Import Model" +#~ msgstr "Импортировать модель" + +#~ msgid "Models" +#~ msgstr "Модели" + +#~ msgid "Standard Model" +#~ msgstr "Стандартная модель" + +#~ msgid "RNNoise Models List" +#~ msgstr "Список моделей RNNoise" + +#~ msgid "Active Model" +#~ msgstr "Активная модель" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Стандартная модель RNNoise" + +# #, fuzzy +#~ msgid "Overview" +#~ msgstr "Обзор" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Открыть руководство EasyEffects" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Полноэкраный режим / выйти из полного экрана" + +#~ msgid "Close the Window" +#~ msgstr "Закрыть окно" + +#~ msgid "Quit EasyEffects" +#~ msgstr "Выход из EasyEffects" + +#~ msgid "Balance" +#~ msgstr "Баланс" + +#~ msgid "Input Balance" +#~ msgstr "Баланс входа" + +#~ msgid "Softclip" +#~ msgstr "Софтклиппер" + +#~ msgid "Softclip Level" +#~ msgstr "Уровень софтклипа" + +#~ msgid "Stereo Matrix" +#~ msgstr "Матрица стерео" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "ЛП > ЛП (стерео по умолчанию)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "Стерео > Моно-Раздельно" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "Моно-Раздельно > Стерео" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "Стерео > Моно левый канал" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "Стерео > Моно правый канал" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "Стерео > Моно левый+правый каналы" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "Стерео > Поменять каналы местами" + +#~ msgid "Stereo Mode" +#~ msgstr "Режим стерео" + +#~ msgid "Invert Phase" +#~ msgstr "Инвертировать фазу" + +#~ msgid "Side Level" +#~ msgstr "Боковой уровень" + +#~ msgid "Side Balance" +#~ msgstr "Боковой баланс" + +#~ msgid "Middle Level" +#~ msgstr "Средний уровень" + +#~ msgid "Middle Panorama" +#~ msgstr "Срединная панорама" + +#~ msgid "Output Balance" +#~ msgstr "Баланс выхода" + +#~ msgid "Delay L/R" +#~ msgstr "Задержка Л/П" + +#~ msgid "Delay Left Right" +#~ msgstr "Задержка левый правый" + +#~ msgid "Stereo Base" +#~ msgstr "Стерео база" + +#~ msgid "Stereo Phase" +#~ msgstr "Стерео фаза" + +#~ msgid "Running" +#~ msgstr "Выполняется" + +#~ msgid "Suspended" +#~ msgstr "Приостановлено" + +#~ msgid "Idle" +#~ msgstr "Простаивает" + +#~ msgid "Creating" +#~ msgstr "Создание" + +#~ msgid "Error" +#~ msgstr "Ошибка" + +#~ msgid "Unknown" +#~ msgstr "Неизвестно" + +#~ msgid "channels" +#~ msgstr "каналы" + +#~ msgid "Output Presets: " +#~ msgstr "Предустановки выхода: " + +#~ msgid "Input Presets: " +#~ msgstr "Предустановки входа: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Звуковые эффекты для приложений PipeWire" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Выход из EasyEffects. Полезно при запуске в режиме службы." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Загрузить предустановку. Пример: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Сброс настроек EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Скрыть окно." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Глобальный обход. 1 — включить, 2 — отключить, 3 — получение статуса" + +#~ msgid "Show available presets." +#~ msgstr "Показать доступные предустановки." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Список файлов импульса" + +#~ msgid "Import Impulse File" +#~ msgstr "Импортировать файл импульса" + +#~ msgid "Open" +#~ msgstr "Открыть" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Impulse Response" +#~ msgstr "Импульсная реакция" + +#~ msgid "Load Impulse" +#~ msgstr "Загрузить импульс" + +#~ msgid "Remove Impulse" +#~ msgstr "Удалить Импульс" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Список файлов импульса" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Не удалось загрузить файл импульса" + +#~ msgid "Recorders" +#~ msgstr "Рекордеры" + +#~ msgid "Players" +#~ msgstr "Проигрыватели" + +#~ msgid "Effects" +#~ msgstr "Эффекты" + +#~ msgid "infinity" +#~ msgstr "бесконечно" + +#~ msgid "Import APO Preset File" +#~ msgstr "Импортировать файл предустановки APO" + +#~ msgid "APO Presets" +#~ msgstr "Предустановки APO" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Удалить автозагрузку предустановки" + +#~ msgid "Remove" +#~ msgstr "Удалить" + +#~ msgid "Output Device" +#~ msgstr "Устройство вывода" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Import Preset" +#~ msgstr "Импорт предустановки" + +#~ msgid "Import Model File" +#~ msgstr "Импорт файла модели" + +#~ msgid "RNNoise Models" +#~ msgstr "Модели RNNoise" + +# Энхансер (он же Эксайтер) — это прибор, который генерирует высшие гармоники низких частот, благодаря чему повышается локализация низких частот и их «читаемость». +# «Бас-Энхансер» или «Глубокий бас» +#~ msgid "Bass Enhancer" +#~ msgstr "Усиление басов (бас-энхансер)" + +#~ msgid "Bass Loudness" +#~ msgstr "Громкость баса" + +#~ msgid "Convolver" +#~ msgstr "Конвольвер" + +#~ msgid "Crossfeed" +#~ msgstr "Перекрёстная подача" + +#~ msgid "Crystalizer" +#~ msgstr "Кристаллизатор" + +# http://wikisound.org/Деэссер; предназначен для уменьшения или устранения избыточно шипящих звуков в записи человеческого голоса +#~ msgid "Deesser" +#~ msgstr "Антишипение (деэссер)" + +#~ msgid "Delay" +#~ msgstr "Задержка" + +#~ msgid "Echo Canceller" +#~ msgstr "Эхоподавление" + +#~ msgid "Equalizer" +#~ msgstr "Эквалайзер" + +#~ msgid "Exciter" +#~ msgstr "Эксайтер" + +#~ msgid "Filter" +#~ msgstr "Фильтр" + +#~ msgid "Limiter" +#~ msgstr "Ограничитель уровня звука (лимитер)" + +#~ msgid "Maximizer" +#~ msgstr "Максимизатор" + +#~ msgid "Multiband Compressor" +#~ msgstr "Многополосный компрессор" + +#~ msgid "Multiband Gate" +#~ msgstr "Многополосные шумовые ворота" + +#~ msgid "Pitch" +#~ msgstr "Высота тона" + +#~ msgid "Reverberation" +#~ msgstr "Реверберация" + +#~ msgid "Noise Reduction" +#~ msgstr "Подавление шума" + +#~ msgid "Stereo Tools" +#~ msgstr "Стереокорректоры" + +#~ msgid "Average" +#~ msgstr "Средняя" + +#~ msgid "Failed" +#~ msgstr "Не удалось" + +#~ msgid "Use Default" +#~ msgstr "Установить по умолчанию" + +#~ msgid "Remove this plugin" +#~ msgstr "Удалить этот плагин" + +#~ msgid "Import Presets" +#~ msgstr "Импорт предустановок" + +#~ msgid "Start Service at Login" +#~ msgstr "Запуск службы при запуске" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Сброс громкости устройств при запуске" + +#~ msgid "Activate" +#~ msgstr "Активировать" + +#~ msgid "Add to Blocklist" +#~ msgstr "Добавить в чёрный список" + +#~ msgid "Blocklist" +#~ msgstr "Чёрный список" + +#~ msgid "Add Plugin" +#~ msgstr "Добавить плагин" + +#~ msgid "Speakers" +#~ msgstr "Динамики" + +#~ msgid "Microphone" +#~ msgstr "Микрофон" + +#~ msgid "Plugins" +#~ msgstr "Плагины" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Включено" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Включено" + +#~ msgid "Format" +#~ msgstr "Формат" + +#~ msgid "Latency" +#~ msgstr "Задержка" + +#~ msgid "idle" +#~ msgstr "простаивание" + +#~ msgid "Faster" +#~ msgstr "Быстрее" + +#~ msgid "Preserve Formant" +#~ msgstr "Сохранить формат" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Усиление выхода" + +#~ msgid "Channel" +#~ msgstr "Канал" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Нижний порог" + +#~ msgid "Output Effects" +#~ msgstr "Эффекты для вывода звука" + +#~ msgid "Settings" +#~ msgstr "Настройки" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Настройки" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Продолжительность" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Проверочный сигнал" + +#~ msgid "Signal" +#~ msgstr "Сигнал" + +#~ msgid "Show Spectrum" +#~ msgstr "Показывать спектр" + +#~ msgid "Border" +#~ msgstr "Граница" + +#~ msgid "Spectrum Type" +#~ msgstr "Тип спектра" + +#~ msgid "Spectrum Color" +#~ msgstr "Цвет спектра" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Активная модель" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Увеличение ослабления" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Вес в расчете громкости" + +#~ msgid "Dry" +#~ msgstr "Влажность" + +#~ msgid "S/C Level" +#~ msgstr "Уровень Раздельный/Центр" + +#~ msgid "Phase Correlation" +#~ msgstr "Корреляция фазы" + +#~ msgid "Short Term" +#~ msgstr "Короткие измерения" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Low-pass" +#~ msgstr "Низкочастотный фильтр" + +#~ msgid "Preamp" +#~ msgstr "Предусилитель" + +#~ msgid "Run in Background" +#~ msgstr "Запускать в фоновом режиме" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Настройка громкости и вкл/откл эффектов" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Содержит эквалайзер с предустановками" + +#~ msgid "Input Limiter" +#~ msgstr "Ограничитель ввода" + +#~ msgid "Calibration" +#~ msgstr "Калибровка" + +#~ msgid "Limit" +#~ msgstr "Ограничение" + +#~ msgid "ASC" +#~ msgstr "Адаптивное управление наклоном" + +#~ msgid "Attenuation" +#~ msgstr "Затухание" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Аудиоэффекты для приложений PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Аудиоэффекты для приложений PulseAudio" + +#~ msgid "Help" +#~ msgstr "Справка" + +#~ msgid "Calibration Microphone" +#~ msgstr "Калибровка корректировки микрофона" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Автоматически применять этот набор предустановок, когда текущее звукое " +#~ "устройство подключают к системе" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Версия" + +#~ msgid "Sine" +#~ msgstr "Синусоида" + +#~ msgid "Square" +#~ msgstr "Квадратный" + +#~ msgid "Saw" +#~ msgstr "Пилообразный" + +#~ msgid "Triangle" +#~ msgstr "Треугольный" + +#~ msgid "Silence" +#~ msgstr "Тишина" + +#~ msgid "Pink Noise" +#~ msgstr "Розовый шум" + +#~ msgid "Ticks" +#~ msgstr "Тики" + +#~ msgid "Gaussian Noise" +#~ msgstr "Гауссовский шум" + +#~ msgid "Red Noise" +#~ msgstr "Красный шум" + +#~ msgid "Blue Noise" +#~ msgstr "Голубой шум" + +#~ msgid "Violet Noise" +#~ msgstr "Фиолетовый шум" + +#~ msgid "Volume" +#~ msgstr "Громкость" + +#~ msgid "Window" +#~ msgstr "Окно" + +#~ msgid "Measure Noise" +#~ msgstr "Измерение шума" + +#~ msgid "Subtract Noise" +#~ msgstr "Вычетание шума" + +#~ msgid "Extended Filter" +#~ msgstr "Расширенный фильтр" + +#~ msgid "Low" +#~ msgstr "Низкочастотный фильтр" + +#~ msgid "Moderate" +#~ msgstr "Средний" + +#~ msgid "High" +#~ msgstr "Высокий" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Уровень подавления" + +#~ msgid "Delay Agnostic" +#~ msgstr "Задержка" + +#~ msgid "Very High" +#~ msgstr "Очень высокий" + +#~ msgid "Noise Suppressor" +#~ msgstr "Простой шумодав" + +# # TODO: Mode/Режим заменить на "Режим сжатия" +#~ msgid "Adaptive Digital" +#~ msgstr "Адаптивное цифровое сжатие" + +#~ msgid "Fixed Digital" +#~ msgstr "Фиксированное цифровое сжатие" + +#~ msgid "Gain Controller" +#~ msgstr "Автоконтроль усиления (AGC)" + +#~ msgid "Detection Likelihood" +#~ msgstr "Вероятность обнаружения" + +#~ msgid "Very Low" +#~ msgstr "Очень низкий" + +#~ msgid "Voice Detector" +#~ msgstr "Обнаруживатель голоса" + +#~ msgid "Use Custom Color" +#~ msgstr "Использовать свой цвет" + +#~ msgid "Use Gradient" +#~ msgstr "Использовать градиент" + +#~ msgid "Gradient Color" +#~ msgstr "Цвет градиента" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Импортировать файл импульсной реакции" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Выбрать файл с импульсной реакцией" + +#~ msgid "Aggressive Mode" +#~ msgstr "Агрессивный режим" + +#~ msgid "Before" +#~ msgstr "До" + +#~ msgid "After" +#~ msgstr "После" + +#~ msgid "Loudness Range" +#~ msgstr "Диапазон громкости" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Частота дискретизации по умолчанию" + +#~ msgid "Default Source" +#~ msgstr "Устройство ввода по умолчанию" + +#~ msgid "Server" +#~ msgstr "Сервер" + +#~ msgid "File" +#~ msgstr "Файл" + +#~ msgid "Configuration" +#~ msgstr "Параметры" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Сервер" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Подсчитать частоты" + +# #, fuzzy +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Параметры" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Предустановки" + +#~ msgid "Detect Silence" +#~ msgstr "Определять тишину" + +#~ msgid "Muted" +#~ msgstr "Приглушенный" + +#~ msgid "Distant Headphones" +#~ msgstr "Находящиеся далеко наушники" + +#~ msgid "Priority Type" +#~ msgstr "Тип приоритета процесса" + +#~ msgid "Niceness" +#~ msgstr "Приоритет процесса (nice)" + +#~ msgid "Priority" +#~ msgstr "Приоритет" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Частота" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Частота" + +#~ msgid "About" +#~ msgstr "О программе" + +#~ msgid "Protocol" +#~ msgstr "Версия протокола сервера" + +#~ msgid "Default Sample Format" +#~ msgstr "Спецификация отсчётов по умолчанию" + +#~ msgid "Channel Mapping" +#~ msgstr "Схема каналов" + +#~ msgid "Resamplers" +#~ msgstr "Ресемплеры" + +#~ msgid "Buffer" +#~ msgstr "Буфер" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Эквалайзер - Выход" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Block Size" +#~ msgstr "Размер блока" + +#~ msgid "Resampler" +#~ msgstr "Ресемплер" + +#~ msgid "paused" +#~ msgstr "на паузе" + +#~ msgid "playing" +#~ msgstr "воспроизводится" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Импортировать предустановки" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Увеличение ослабления" + +#~ msgid "Exponent" +#~ msgstr "Степень" diff --git a/po/news/sk.po b/po/news/sk.po new file mode 100644 index 0000000..3a37df6 --- /dev/null +++ b/po/news/sk.po @@ -0,0 +1,2854 @@ +# Slovak translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mlocik97 , 2020. +# Jose Riha , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2021-07-01 17:22+0200\n" +"Last-Translator: Jose Riha\n" +"Language-Team: \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.1\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Zvukové efekty pre aplikácie využívajúce PipeWire" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects je pokročilý nástroj pre úpravu zvuku. Obsahuje ekvalizér, " +"obmedzovač, kompresor, nástroj ozveny a množstvo ďalších efektov. Pre " +"doplnenie je napríklad zabudovaný aj analyzátor spektra." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects je následovník PulseEffects. EasyEffects podporuje len zvukový " +"server PipeWire. Použivatelia PulseAudio by mali používať PulseEffects." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Pretože EasyEffects štandardne používa zvukový server PulseWire, funguje s " +"väčšinou (ak nie so všetkými) aplikácií. Všetky podprované programy sú " +"zobrazené v hlavnom okne, kde je ich možné individuálne povoliť." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Popri práci s úpravou výstupného zvuku, EasyEffects je možné použiť aj na " +"úpravu vstupných zvukov z mikrofónu. To môžete využiť napríklad pri " +"nahrávaní, ale funguje to dobre aj pri audiohovoroch." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"Keď je EasyEffects spustený, zapamätá si posledné používané nastavenia. " +"Taktiež je možné uložiť všetky aktuálne nastavenia ako profily." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "Hlavná stránka ukazujújca dve výstupové aplikácie." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +#, fuzzy +msgid "Many translation updates" +msgstr "Aktualizované preklady" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Aktualizované preklady" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Pásma" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "neplýtvame výkonom procesora počas ticha." + +#~ msgid "mean." +#~ msgstr "geometrický priemer." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Toto vydanie pridáva následujúcu vlastnosť:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ekvalizér, kompresor a ďalšie audio efekty" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "obmedzovač;kompresor;ozvena;ekvalizér;automatická hlasitosť;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Predvoľby\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Povolené" + +#, fuzzy +#~ msgid "Mute Application" +#~ msgstr "Aplikácie" + +#, fuzzy +#~ msgid "Application Volume" +#~ msgstr "Aplikácie" + +#, fuzzy +#~ msgid "_Preferences" +#~ msgstr "Referenčný Signál" + +#, fuzzy +#~ msgid "_Shortcuts" +#~ msgstr "Krátkodobá" + +#, fuzzy +#~ msgid "_Reset Settings" +#~ msgstr "Nastavenia" + +#, fuzzy +#~ msgid "_About EasyEffects" +#~ msgstr "Vstupné efekty" + +#~ msgid "Presets" +#~ msgstr "Predvoľby" + +#, fuzzy +#~ msgid "Presets Menu" +#~ msgstr "Predvoľby" + +#~ msgid "Global Bypass" +#~ msgstr "Globálne premostenie" + +#, fuzzy +#~ msgid "EasyEffects Window" +#~ msgstr "PulseEffects" + +#, fuzzy +#~ msgid "Applications List" +#~ msgstr "Aplikácie" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Prázdne steny" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Aplikácie" + +#~ msgid "Target" +#~ msgstr "Cieľ" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Maximálna" + +#, fuzzy +#~ msgid "Reference" +#~ msgstr "Referenčný Signál" + +#~ msgid "Momentary" +#~ msgstr "Okamžitá" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Krátkodobá" + +#~ msgid "Integrated" +#~ msgstr "Integrovaná" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Použiť geometrický priemer" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Použiť geometrický priemer" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Použiť geometrický priemer" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Použiť geometrický priemer" + +#~ msgid "Reset History" +#~ msgstr "Vymazať históriu" + +#~ msgid "Relative" +#~ msgstr "Relatívna" + +#~ msgid "Range" +#~ msgstr "Rozsah" + +#~ msgid "Loudness" +#~ msgstr "Hlasitosť" + +#~ msgid "Output Gain" +#~ msgstr "Výstupný Zisk" + +#~ msgid "Input" +#~ msgstr "Vstup" + +#, fuzzy +#~ msgid "Plugin Input Gain" +#~ msgstr "Výstupný Zisk" + +#~ msgid "Output" +#~ msgstr "Výstup" + +#, fuzzy +#~ msgid "Plugin Output Gain" +#~ msgstr "Výstupný Zisk" + +#~ msgid "Reset" +#~ msgstr "Obnoviť pôvodné hodnoty" + +#~ msgid "Name" +#~ msgstr "Názov" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Predvoľby" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Odstrániť predvoľbu" + +#~ msgid "Listen" +#~ msgstr "Počúvať" + +#~ msgid "Blend Harmonics" +#~ msgstr "Miešať harmonické kmity" + +#~ msgid "3rd" +#~ msgstr "3." + +#~ msgid "2nd" +#~ msgstr "2." + +#~ msgid "Amount" +#~ msgstr "Množstvo" + +#~ msgid "Harmonics" +#~ msgstr "Harmonickosť" + +#~ msgid "Scope" +#~ msgstr "Rozsah" + +#~ msgid "Floor" +#~ msgstr "Spodná hranica" + +#, fuzzy +#~ msgid "Floor Value" +#~ msgstr "Spodná hranica" + +#, fuzzy +#~ msgid "Application Name" +#~ msgstr "Aplikácie" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Zobraziť aplikácie zo zoznamu blokovaných na hlavnej karte" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Aplikácie" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Zobraziť aplikácie zo zoznamu blokovaných na hlavnej karte" + +#~ msgid "Compressor" +#~ msgstr "Kompresor" + +#~ msgid "Mode" +#~ msgstr "Režim" + +#~ msgid "Downward" +#~ msgstr "Dole" + +#~ msgid "Upward" +#~ msgstr "Hore" + +#~ msgid "Compression Mode" +#~ msgstr "Mód kompresora" + +#~ msgid "Boost Threshold" +#~ msgstr "Zvýrazniť prah" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Množstvo" + +#~ msgid "Attack" +#~ msgstr "Nábeh" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "V reálnom čase" + +#~ msgid "Threshold" +#~ msgstr "Prah" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Nábeh" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Prah" + +#~ msgid "Release" +#~ msgstr "Uvoľnenie" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Uvoľnenie" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Relatívny prah uvoľnenia" + +#~ msgid "Ratio" +#~ msgstr "Pomer" + +#~ msgid "Knee" +#~ msgstr "Prechod" + +#~ msgid "Makeup" +#~ msgstr "Pozdvihnutie" + +#~ msgid "Sidechain" +#~ msgstr "Postranný reťazec" + +#~ msgid "Peak" +#~ msgstr "Vrchol" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Dolná priepusť" + +#~ msgid "Uniform" +#~ msgstr "Rovnomerný" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Postranný reťazec" + +#~ msgid "Source" +#~ msgstr "Zdroj" + +#~ msgid "Middle" +#~ msgstr "Stredný" + +#~ msgid "Side" +#~ msgstr "Postranný" + +#~ msgid "Left" +#~ msgstr "Ľavý" + +#~ msgid "Right" +#~ msgstr "Pravý" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Postranný reťazec" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Feed-forward" +#~ msgstr "Kanál-Vpred" + +#~ msgid "Feed-back" +#~ msgstr "Kanál-Vzad" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Postranný reťazec" + +#, fuzzy +#~ msgid "Input Device" +#~ msgstr "Obmedzovač na vstupe" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Predzosilnenie" + +#~ msgid "Reactivity" +#~ msgstr "Reaktivita" + +#~ msgid "Lookahead" +#~ msgstr "Výhľad" + +#, fuzzy +#~ msgid "Sidechain Filters" +#~ msgstr "Postranný reťazec" + +#, fuzzy +#~ msgid "High-Pass" +#~ msgstr "Horné pásmo" + +#~ msgid "Frequency" +#~ msgstr "Frekvencia" + +#~ msgid "Off" +#~ msgstr "Vyp" + +#~ msgid "12 dB/oct" +#~ msgstr "Nízka pásmová priepusť 12dB/okt" + +#~ msgid "24 dB/oct" +#~ msgstr "Nízka pásmová priepusť 24dB/okt" + +#~ msgid "36 dB/oct" +#~ msgstr "Nízka pásmová priepusť 36dB/okt" + +#, fuzzy +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Režim filtra vysokej priepuste" + +#, fuzzy +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Frekvencia vysokej priepuste" + +#, fuzzy +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Režim filtra vysokej priepuste" + +#~ msgid "Gain" +#~ msgstr "Zisk" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Sklon" + +#~ msgid "Curve" +#~ msgstr "Krivka" + +#~ msgid "L" +#~ msgstr "Ľ" + +#, fuzzy +#~ msgid "Left Channel" +#~ msgstr "Kanály" + +#~ msgid "R" +#~ msgstr "P" + +#, fuzzy +#~ msgid "Right Channel" +#~ msgstr "Rozdeliť kanály" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Odpoveď impulzu" + +#~ msgid "Stereo Width" +#~ msgstr "Šírka sterea" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Log Scale" +#~ msgstr "Mierka" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Automatická hlasitosť" + +#~ msgid "Rate" +#~ msgstr "Kmitočet" + +#~ msgid "Samples" +#~ msgstr "Vzorky" + +#~ msgid "Duration" +#~ msgstr "Trvanie" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Odpoveď impulzu" + +#, fuzzy +#~ msgid "Output File Name" +#~ msgstr "Výstup" + +#~ msgid "Import Impulse" +#~ msgstr "Importovať impulz" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Načítať súbor impulzu" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Načítať súbor impulzu" + +#~ msgid "Default" +#~ msgstr "Predvolený" + +#~ msgid "Cutoff" +#~ msgstr "Zrezanie" + +#~ msgid "Feed" +#~ msgstr "Kanál" + +#~ msgid "Bypass" +#~ msgstr "Premostiť" + +#~ msgid "Mute" +#~ msgstr "Stíšený" + +#~ msgid "Detection" +#~ msgstr "Detekcia" + +#~ msgid "Wide" +#~ msgstr "Široký" + +#~ msgid "Split" +#~ msgstr "Rozdeliť" + +#~ msgid "F1 Split" +#~ msgstr "Rozdeliť F1" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Frekvencia" + +#~ msgid "F2 Peak" +#~ msgstr "Vrchol F2" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frekvencia" + +#~ msgid "F1 Gain" +#~ msgstr "Zisk F1" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frekvencia" + +#~ msgid "F2 Level" +#~ msgstr "Úroveň F2" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Frekvencia" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2 vrchol Q" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frekvencia" + +#~ msgid "Laxity" +#~ msgstr "Nedbanlivosť" + +#~ msgid "Detected" +#~ msgstr "Zistené" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Redukcia" + +#~ msgid "Frame Size" +#~ msgstr "Veľkosť rámca" + +#, fuzzy +#~ msgid "Filter Length" +#~ msgstr "Filter" + +#~ msgid "Bands" +#~ msgstr "Pásma" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "Split Channels" +#~ msgstr "Rozdeliť kanály" + +#~ msgid "Flat Response" +#~ msgstr "Vyhladiť" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Vypočítať frekvencie" + +#, fuzzy +#~ msgid "Load APO Preset" +#~ msgstr "APO predvoľby" + +#~ msgid "Bell" +#~ msgstr "Zvonček" + +#~ msgid "High Pass" +#~ msgstr "Horné pásmo" + +#~ msgid "High Shelf" +#~ msgstr "Horný prah" + +#~ msgid "Low Pass" +#~ msgstr "Spodné pásmo" + +#~ msgid "Low Shelf" +#~ msgstr "Spodný prah" + +#~ msgid "Notch" +#~ msgstr "Zárez" + +#~ msgid "Resonance" +#~ msgstr "Rezonancia" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Dolné Pásmo" + +#, fuzzy +#~ msgid "Band Type" +#~ msgstr "Premostiť" + +#, fuzzy +#~ msgid "Band Mode" +#~ msgstr "Pásma" + +#~ msgid "Slope" +#~ msgstr "Sklon" + +#, fuzzy +#~ msgid "Band Slope" +#~ msgstr "Sklon" + +#~ msgid "Width" +#~ msgstr "Šírka" + +#~ msgid "Quality" +#~ msgstr "Kvalita" + +#~ msgid "Solo" +#~ msgstr "Sólo" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Strop" + +#, fuzzy +#~ msgid "Description" +#~ msgstr "Detekcia" + +#, fuzzy +#~ msgid "Remove this model file" +#~ msgstr "Odstrániť predvoľbu" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "Nízka pásmová priepusť 12dB/okt" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "Nízka pásmová priepusť 24dB/okt" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "Nízka pásmová priepusť 36dB/okt" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "Vysoká pásmová priepusť 12dB/okt" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "Vysoká pásmová priepusť 24dB/okt" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "Vysoká pásmová priepusť 36dB/okt" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "Pásmová priepusť 6dB/okt" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "Pásmová priepusť 12dB/okt" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "Pásmová priepusť 18dB/okt" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "Vylúčenie pásma 6dB/okt" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "Vylúčenie pásma 12dB/okt" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "Vylúčenie pásma 18dB/okt" + +#~ msgid "Inertia" +#~ msgstr "Zotrvačnosť" + +#~ msgid "Gate" +#~ msgstr "Brána" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Uvoľnenie" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Integrovaná" + +#~ msgid "Gating" +#~ msgstr "Hradlo" + +#~ msgid "Oversampling" +#~ msgstr "Prevzorkovanie" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Široký" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Široký" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Šírka čiary" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Šírka čiary" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Šírka čiary" + +#~ msgid "None" +#~ msgstr "Žiadny" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Predzosilnenie" + +#~ msgid "Stereo Link" +#~ msgstr "Spojenie sterea" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Postranný reťazec" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Automatické úrovne" + +#, fuzzy +#~ msgid "Auto Leveling Attack" +#~ msgstr "Automatické úrovne" + +#, fuzzy +#~ msgid "Auto Leveling Release" +#~ msgstr "Automatické úrovne" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "Automatické úrovne" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Ľavý" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Pravý" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Postranný reťazec" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Postranný reťazec" + +#~ msgid "Standard" +#~ msgstr "Štandardný" + +#~ msgid "Flat" +#~ msgstr "Rovný" + +#~ msgid "FFT Size" +#~ msgstr "Veľkosť FFT" + +#, fuzzy +#~ msgid "Output Volume" +#~ msgstr "Výstup" + +#~ msgid "Ceiling" +#~ msgstr "Strop" + +#, fuzzy +#~ msgid "Operating Mode" +#~ msgstr "Importovať model" + +#, fuzzy +#~ msgid "Modern" +#~ msgstr "Režim" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Postranný reťazec" + +#, fuzzy +#~ msgid "Bands List" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 5" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 6" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 7" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 8" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band Compression Mode" +#~ msgstr "Mód kompresora" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Premostiť" + +#, fuzzy +#~ msgid "Band Sidechain Options" +#~ msgstr "Postranný reťazec" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Režim filtra nízkej priepuste" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Režim filtra nízkej priepuste" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Horný prechod" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Horný prechod" + +#, fuzzy +#~ msgid "Band Gain" +#~ msgstr "Vstupné Zosilnenie" + +#, fuzzy +#~ msgid "Band Curve" +#~ msgstr "Krivka" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Rozdeliť" + +#~ msgid "Split 1/2" +#~ msgstr "Rozdeliť 1/2" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Frekvencia" + +#~ msgid "Split 2/3" +#~ msgstr "Rozdeliť 2/3" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Frekvencia" + +#~ msgid "Split 3/4" +#~ msgstr "Rozdeliť 3/4" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Frekvencia" + +#~ msgid "Sub Band" +#~ msgstr "Spodné pásmo" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Premostiť" + +#, fuzzy +#~ msgid "Band 1 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Redukcia zosilnenia" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Nábeh" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Uvoľnenie" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Prah" + +#, fuzzy +#~ msgid "Band 1 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Pozdvihnutie" + +#~ msgid "Max Reduction" +#~ msgstr "Redukcia" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "Low Band" +#~ msgstr "Nízke pásmo" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Premostiť" + +#, fuzzy +#~ msgid "Band 2 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Redukcia zosilnenia" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Nábeh" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Uvoľnenie" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Prah" + +#, fuzzy +#~ msgid "Band 2 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Pozdvihnutie" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "Mid Band" +#~ msgstr "Stredné pásmo" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Premostiť" + +#, fuzzy +#~ msgid "Band 3 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Redukcia zosilnenia" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Nábeh" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Uvoľnenie" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Prah" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Pozdvihnutie" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "High Band" +#~ msgstr "Vysoké pásmo" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Premostiť" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Redukcia zosilnenia" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Nábeh" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Uvoľnenie" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Prah" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Pozdvihnutie" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "General" +#~ msgstr "Všeobecné" + +#, fuzzy +#~ msgid "Use Default Input" +#~ msgstr "Použiť predvolený" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Obmedzovač na vstupe" + +#, fuzzy +#~ msgid "Use Default Output" +#~ msgstr "Použiť predvolený" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Výstupné efekty" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Ozvena (reverb)" + +#, fuzzy +#~ msgid "Header Version" +#~ msgstr "Verzia" + +#, fuzzy +#~ msgid "Library Version" +#~ msgstr "Verzia" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Predvolená rýchlosť vzorkovania" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Minimálna frekvencia" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Maximálny zisk" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Predvolené Zoslabnutie" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Výstupné efekty" + +#~ msgid "Output Presets" +#~ msgstr "Výstupné predvoľby:" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Výstupné predvoľby:" + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Obmedzovač na vstupe" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Vstupné predvoľby: " + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Vstupné predvoľby: " + +#~ msgid "Modules" +#~ msgstr "Moduly" + +#, fuzzy +#~ msgid "Modules List" +#~ msgstr "Moduly" + +#~ msgid "Clients" +#~ msgstr "Klienti" + +#, fuzzy +#~ msgid "Clients List" +#~ msgstr "Klienti" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Skúšobné signály" + +#~ msgid "State" +#~ msgstr "Stav" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Povolené" + +#~ msgid "Channels" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Sínusová tabuľka" + +#~ msgid "White Noise" +#~ msgstr "Biely šum" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Horný prah" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Kvalita" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Formát" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Predvoľby" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Krehkosť" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Detekcia" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Kompresia" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Softclip" + +#~ msgid "Cents" +#~ msgstr "Centy" + +#~ msgid "Semitones" +#~ msgstr "Poltóny" + +#~ msgid "Octaves" +#~ msgstr "Oktávy" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Odstrániť predvoľbu" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "Vstupné predvoľby: " + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "Všeobecné" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Spracovať všetky výstupy" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Spracovať všetky vstupy" + +#, fuzzy +#~ msgid "Inactivity Timeout" +#~ msgstr "Čas. limit aktivity" + +#~ msgid "Use Dark Theme" +#~ msgstr "Použiť tmavý motív" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Spektrum" + +#~ msgid "Bars" +#~ msgstr "Pruhy" + +#~ msgid "Lines" +#~ msgstr "Čiary" + +#~ msgid "Points" +#~ msgstr "Body" + +#~ msgid "Height" +#~ msgstr "Výška" + +#~ msgid "Line Width" +#~ msgstr "Šírka čiary" + +#~ msgid "Fill" +#~ msgstr "Výplň" + +#, fuzzy +#~ msgid "Color" +#~ msgstr "Farba osi" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frekvencia" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Maximálna" + +#~ msgid "Maximum" +#~ msgstr "Maximálna" + +#~ msgid "Load" +#~ msgstr "Načítať" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Uložiť aktuálne nastavenia do tejto predvoľby" + +#~ msgid "Remove this preset file" +#~ msgstr "Odstrániť predvoľbu" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Výstupné predvoľby: " + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Vytvoriť predvoľbu" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Načítať predvoľbu" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Výstupné predvoľby: " + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Výstupné predvoľby: " + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Vstupné predvoľby: " + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Vstupné predvoľby: " + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Vstupné predvoľby: " + +#~ msgid "High Frequency Damping" +#~ msgstr "Vysokofrekvenčné tlmenie" + +#~ msgid "Room Size" +#~ msgstr "Veľkosť miestnosti" + +#~ msgid "Small" +#~ msgstr "Malá" + +#~ msgid "Medium" +#~ msgstr "Stredná" + +#~ msgid "Large" +#~ msgstr "Veľká" + +#~ msgid "Tunnel" +#~ msgstr "Tunel" + +#~ msgid "Large/smooth" +#~ msgstr "Veľká/hladká" + +#~ msgid "Experimental" +#~ msgstr "Experimentálna" + +#~ msgid "Diffusion" +#~ msgstr "Rozptyl" + +#~ msgid "Pre Delay" +#~ msgstr "Predoneskorenie" + +#~ msgid "Decay Time" +#~ msgstr "Čas dozvuku" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Množstvo" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Cieľová úroveň" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Množstvo" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Úroveň F2" + +#~ msgid "Bass Cut" +#~ msgstr "Odrezanie basov" + +#~ msgid "Treble Cut" +#~ msgstr "Odrezanie výšok" + +#~ msgid "Ambience" +#~ msgstr "Okolie" + +#~ msgid "Empty Walls" +#~ msgstr "Prázdne steny" + +#~ msgid "Room" +#~ msgstr "Miestnosť" + +#~ msgid "Large Empty Hall" +#~ msgstr "Veľká miestnosť (prázdna)" + +#~ msgid "Disco" +#~ msgstr "Disko" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Veľká miestnosť (plná)" + +#~ msgid "Import Model" +#~ msgstr "Importovať model" + +#, fuzzy +#~ msgid "Models" +#~ msgstr "Režim" + +#, fuzzy +#~ msgid "Standard Model" +#~ msgstr "Štandardný model RNNoise" + +#, fuzzy +#~ msgid "RNNoise Models List" +#~ msgstr "Štandardný model RNNoise" + +#~ msgid "Active Model" +#~ msgstr "Aktívny model" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "Štandardný model RNNoise" + +#, fuzzy +#~ msgid "Overview" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "Obnoviť PulseEffects" + +#, fuzzy +#~ msgid "Close the Window" +#~ msgstr "Skryť okno" + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "Vstupné efekty" + +#~ msgid "Balance" +#~ msgstr "Vyváženie" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Vyváženie" + +#~ msgid "Softclip" +#~ msgstr "Softclip" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Softclip" + +#~ msgid "Stereo Matrix" +#~ msgstr "Stereo matica" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "ĽP > PĽ (štandardné Stereo)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "ĽP > SS (stereo ku strednej strane)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "SS > ĽP (stredná strana ku stereu)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "ĽP > ĽĽ (mono ľavý kanál)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "ĽP > PP (mono pravý kanál)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "ĽP > Ľ+P (mono sčítanie Ľ+P)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "ĽP > PĽ (stereo preklopené Kanály)" + +#~ msgid "Stereo Mode" +#~ msgstr "Režim sterea" + +#~ msgid "Invert Phase" +#~ msgstr "Preklopiť fázu" + +#~ msgid "Side Level" +#~ msgstr "Úroveň strán" + +#~ msgid "Side Balance" +#~ msgstr "Vyváženie strán" + +#~ msgid "Middle Level" +#~ msgstr "Stredová úroveň" + +#~ msgid "Middle Panorama" +#~ msgstr "Stredná paronáma" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Výstupný Zisk" + +#~ msgid "Delay L/R" +#~ msgstr "Oneskorenie Ľ/P" + +#~ msgid "Delay Left Right" +#~ msgstr "Oneskorenie Ľavo/Pravo" + +#~ msgid "Stereo Base" +#~ msgstr "Základ sterea" + +#~ msgid "Stereo Phase" +#~ msgstr "Fáza sterea" + +#, fuzzy +#~ msgid "Running" +#~ msgstr "beží" + +#, fuzzy +#~ msgid "Suspended" +#~ msgstr "pozastavené" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "vytváram" + +#, fuzzy +#~ msgid "Error" +#~ msgstr "chyba" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Kanály" + +#~ msgid "Output Presets: " +#~ msgstr "Výstupné predvoľby: " + +#~ msgid "Input Presets: " +#~ msgstr "Vstupné predvoľby: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Zvukové efekty pre aplikácie využívajúce PipeWire" + +#, fuzzy +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "Ukončiť PulseEffect. Užitočné pre beh v režime služby." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Načítať predvoľby. Napr.: easyffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Obnoviť EasyEffects." + +#~ msgid "Hide the Window." +#~ msgstr "Skryť okno." + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "" +#~ "Globálne premostenie. 1 pre zapnutie, 2 pre vypnutie, 3 pre získanie stavu" + +#~ msgid "Show available presets." +#~ msgstr "Zobraziť dostupné predvoľby." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Načítať súbor impulzu" + +#~ msgid "Import Impulse File" +#~ msgstr "Načítať súbor impulzu" + +#~ msgid "Open" +#~ msgstr "Otvoriť" + +#~ msgid "Cancel" +#~ msgstr "Zrušiť" + +#~ msgid "Impulse Response" +#~ msgstr "Odpoveď impulzu" + +#~ msgid "Load Impulse" +#~ msgstr "Načítať impulz" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Importovať impulz" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Načítať súbor impulzu" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Nedá sa načítať súbor s impulzom" + +#, fuzzy +#~ msgid "Recorders" +#~ msgstr "Okraj" + +#~ msgid "Players" +#~ msgstr "Prehrávače" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "nekonečno" + +#~ msgid "Import APO Preset File" +#~ msgstr "Načítať APO predvoľbu" + +#~ msgid "APO Presets" +#~ msgstr "APO predvoľby" + +#, fuzzy +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Odstrániť predvoľbu" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Výstupné efekty" + +#~ msgid "Add" +#~ msgstr "Pridať" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Načítať predvoľbu" + +#~ msgid "Import Model File" +#~ msgstr "Importovať model zo súboru" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Štandardný model RNNoise" + +#~ msgid "Bass Enhancer" +#~ msgstr "Vylepšovač hĺbok" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Hlasitosť" + +#~ msgid "Convolver" +#~ msgstr "Zbaľovač" + +#~ msgid "Crossfeed" +#~ msgstr "Prelínanie kanálov" + +#~ msgid "Crystalizer" +#~ msgstr "Kryštalizátor" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Oneskorenie" + +#~ msgid "Echo Canceller" +#~ msgstr "Rušenie ozveny" + +#~ msgid "Equalizer" +#~ msgstr "Ekvalizér" + +#~ msgid "Exciter" +#~ msgstr "Budič" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Limiter" +#~ msgstr "Obmedzovač" + +#~ msgid "Maximizer" +#~ msgstr "Zosilňovač" + +#~ msgid "Multiband Compressor" +#~ msgstr "Viacpásmový kompresor" + +#~ msgid "Multiband Gate" +#~ msgstr "Viacpásmová brána" + +#~ msgid "Pitch" +#~ msgstr "Výška tónu" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Ozvena (reverb)" + +#~ msgid "Noise Reduction" +#~ msgstr "Redukcia šumu" + +#~ msgid "Stereo Tools" +#~ msgstr "Stereo nástroje" + +#~ msgid "Average" +#~ msgstr "Priemerná" + +#~ msgid "Failed" +#~ msgstr "Zlyhalo" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Použiť predvolený" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Odstrániť predvoľbu" + +#~ msgid "Import Presets" +#~ msgstr "Načítať predvoľbu" + +#~ msgid "Start Service at Login" +#~ msgstr "Spustiť službu pri prihlásení" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktívny model" + +#~ msgid "Add to Blocklist" +#~ msgstr "Pridať na zoznam blokovaných" + +#~ msgid "Blocklist" +#~ msgstr "Zoznam blokovaných" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibrovať mikrofón" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Povolené" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Povolené" + +#~ msgid "Format" +#~ msgstr "Formát" + +#~ msgid "Latency" +#~ msgstr "Odozva" + +#~ msgid "idle" +#~ msgstr "nečinné" + +#~ msgid "running" +#~ msgstr "beží" + +#~ msgid "suspended" +#~ msgstr "pozastavené" + +#~ msgid "creating" +#~ msgstr "vytváram" + +#~ msgid "error" +#~ msgstr "chyba" + +#~ msgid "unknown" +#~ msgstr "neznáme" + +#~ msgid "Faster" +#~ msgstr "Rýchlo" + +#~ msgid "Preserve Formant" +#~ msgstr "Zachovať zložku rozhodujúcu o farbe zvuku" + +#~ msgid "Cmoy" +#~ msgstr "Slúchadlový zosilňovač (CMoy)" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Výstupný Zisk" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Spodná hranica" + +#, fuzzy +#~ msgid "Output Effects" +#~ msgstr "Výstupné efekty" + +#~ msgid "Settings" +#~ msgstr "Nastavenia" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Nastavenia" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Trvanie" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Skúšobné signály" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Skúšobné signály" + +#~ msgid "Show Spectrum" +#~ msgstr "Zobraziť spektrum" + +#~ msgid "Border" +#~ msgstr "Okraj" + +#~ msgid "Spectrum Type" +#~ msgstr "Typ spektra" + +#~ msgid "Spectrum Color" +#~ msgstr "Farba spektra" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Aktívny model" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Najvyššia redukcia zisku" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Váhy" + +#~ msgid "Dry" +#~ msgstr "Skúšobný" + +#~ msgid "S/C Level" +#~ msgstr "S/C Úroveň" + +#~ msgid "Short Term" +#~ msgstr "Krátkodobá" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Dolná priepusť" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Nastaviť hlasitosť a zapnúť/vypnúť efekty" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Zahŕňa ekvalizér s prednastavenými profilmi" + +#~ msgid "Input Limiter" +#~ msgstr "Obmedzovač na vstupe" + +#~ msgid "Calibration" +#~ msgstr "Kalibrácia" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatické vyhladenie" + +#~ msgid "Limit" +#~ msgstr "Obmedzenie" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Zoslabenie" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Zvukové efekty pre aplikácie využívajúce PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Zvukové efekty pre aplikácie PulseAudio" + +#~ msgid "Help" +#~ msgstr "Pomocník" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrovať mikrofón" + +#~ msgid "Based on" +#~ msgstr "Na základe" + +#~ msgid "Detect Silence" +#~ msgstr "Detekcia ticha" + +#~ msgid "Provided by" +#~ msgstr "Poskytuje" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Znovu pripojiť mikrofón pre použitie zmien vykonaných v zozname " +#~ "blokovaných" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "Reštartovať prehrávač, aby sa uplatnili zmeny v zozname blokovaných" + +#~ msgid "Sine" +#~ msgstr "Sínus" + +#~ msgid "Square" +#~ msgstr "Štvorec" + +#~ msgid "Saw" +#~ msgstr "Píla" + +#~ msgid "Triangle" +#~ msgstr "Trojuholník" + +#~ msgid "Silence" +#~ msgstr "Ticho" + +#~ msgid "Pink Noise" +#~ msgstr "Ružový Šum" + +#~ msgid "Ticks" +#~ msgstr "Tiky" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussový šum" + +#~ msgid "Red Noise" +#~ msgstr "Červený šum" + +#~ msgid "Blue Noise" +#~ msgstr "Modrý šum" + +#~ msgid "Violet Noise" +#~ msgstr "Fialový Šum" + +#~ msgid "Volume" +#~ msgstr "Hlasitosť" + +#~ msgid "Window" +#~ msgstr "Okno" + +#~ msgid "Measure Noise" +#~ msgstr "Merať šum" + +#~ msgid "Subtract Noise" +#~ msgstr "Odčítať šum" + +#~ msgid "Low-pass Frequency" +#~ msgstr "Frekvencia nízkej priepuste" + +#~ msgid "Advanced" +#~ msgstr "Pokročilé" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importovať súbor s odpoveďou impulzu" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Vyberte súbor s odpoveďou impulzu" + +#~ msgid "Aggressive Mode" +#~ msgstr "Agresívny režim" + +#~ msgid "Before" +#~ msgstr "Pred" + +#~ msgid "After" +#~ msgstr "Po" + +#~ msgid "Loudness Range" +#~ msgstr "Dynamický Rozsah" + +#~ msgid "Apply APO Preset" +#~ msgstr "Použiť APO predvoľby" + +#~ msgid "Apply" +#~ msgstr "Použiť" + +#~ msgid "Muted" +#~ msgstr "Stíšený" + +#~ msgid "Distant Headphones" +#~ msgstr "Vzdialené slúchadlá" + +#~ msgid "Niceness" +#~ msgstr "Hodnota nice" + +#~ msgid "Priority Type" +#~ msgstr "Typ priority" + +#~ msgid "Priority" +#~ msgstr "Priorita" + +#~ msgid "About" +#~ msgstr "O programe" + +#~ msgid "Loudness Compensator" +#~ msgstr "Kompenzácia hlasitosti" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automaticky použiť toto nastavenie, ak je aktuálne používané zariadenie " +#~ "pripojené" + +#~ msgid "Default Source" +#~ msgstr "Predvolený bdroj" + +#~ msgid "Protocol" +#~ msgstr "Protokol" + +#~ msgid "Default Sample Format" +#~ msgstr "Predvolený formát vzorkovania" + +#~ msgid "Channel Mapping" +#~ msgstr "Priradenie kanála" + +#~ msgid "File" +#~ msgstr "Súbor" + +#~ msgid "Configuration" +#~ msgstr "Konfigurácia" + +#~ msgid "Resamplers" +#~ msgstr "Prevzorkovače" + +#~ msgid "Pipeline Input" +#~ msgstr "Pipeline vstup" + +#~ msgid "Buffer" +#~ msgstr "Vyrovnávacia pamäť" + +#~ msgid "Pipeline Output" +#~ msgstr "Pipeline výstup" + +#~ msgid "Block Size" +#~ msgstr "Veľkosť bloku" + +#~ msgid "Use Custom Color" +#~ msgstr "Použiť vlastnú Farbu" + +#~ msgid "Use Gradient" +#~ msgstr "Použiť tieňovanie" + +#~ msgid "Sampling" +#~ msgstr "Vzorkovanie" + +#~ msgid "Maximum Frequency" +#~ msgstr "Maximálna frekvencia" + +#~ msgid "Gradient Color" +#~ msgstr "Farba prechodu" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Extended Filter" +#~ msgstr "Rozšírený filter" + +#~ msgid "Low" +#~ msgstr "Nízky" + +#~ msgid "Moderate" +#~ msgstr "Stredný" + +#~ msgid "High" +#~ msgstr "Vysoký" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "Delay Agnostic" +#~ msgstr "Absolútne oneskorenie" + +#~ msgid "Very High" +#~ msgstr "Veľmi vysoká" + +#~ msgid "Noise Suppressor" +#~ msgstr "Potlačenie šumu" + +#~ msgid "Adaptive Digital" +#~ msgstr "Prispôsobivý digitálny" + +#~ msgid "Fixed Digital" +#~ msgstr "Pevný digitálny" + +#~ msgid "Gain Controller" +#~ msgstr "Ovládač zosilnenia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Pravdepodobnosť zistenia" + +#~ msgid "Very Low" +#~ msgstr "Veľmi nízka" + +#~ msgid "Voice Detector" +#~ msgstr "Detekcia reči" + +#~ msgid "Resampler" +#~ msgstr "Prevzorkovač" + +#~ msgid "paused" +#~ msgstr "pozastavené" + +#~ msgid "playing" +#~ msgstr "hrá" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "Import APO Presets" +#~ msgstr "Načítať APO predvoľbu" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "Exponent" +#~ msgstr "Exponent" diff --git a/po/news/sv.po b/po/news/sv.po new file mode 100644 index 0000000..657e95e --- /dev/null +++ b/po/news/sv.po @@ -0,0 +1,2012 @@ +# Swedish translation of EasyEffects application. +# Copyright (C) 2017 +# This file is distributed under the same license as the easyeffects package. +# Patrik Nilsson , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-01-15 15:15+0000\n" +"Last-Translator: Mattias Münster \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.10.1\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Ljudeffekter för PipeWire-applikationer" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects är ett avancerat verktyg för manipulation av ljud. Det " +"innehåller en ljudutjämnare (equalizer), ljudbegränsare (limiter), " +"kompressor och ett efterklangsverktyg (eko), för att bara nämna några få. " +"Där finns även en inbyggd frekvensanalysator som kompletterar dessa." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"Eftersom EasyEffects använder sig av standard PipeWire som ljudserver " +"stödjer den de flesta, om inte alla, program du använder. Alla applikationer " +"som stöds presenteras i huvudfönstret, där var och en kan aktiveras " +"individuellt." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Förutom att manipulera dina programs ljud kan EasyEffects tillämpa effekter " +"på en ingångsenhet, såsom en mikrofon. Detta är exempelvis användbart vid " +"ljudinspelning, men det fungerar även bra under röstsamtal." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"När EasyEffects startas kommer det ihåg konfigurationen som användes under " +"den senaste sessionen. Det är också möjligt att spara alla aktuella " +"inställningar som profiler." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "" +#~ "limiter;begränsare;kompressor;eko;efterklang;equalizer;utjämnare;auto;" +#~ "volym;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Förinställningar\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Sinustabell" + +#~ msgid "Mute Application" +#~ msgstr "Tysta applikationen" + +#~ msgid "Application Volume" +#~ msgstr "Applikationsvolym" + +#~ msgid "_Reset Settings" +#~ msgstr "_Återställ inställningar" + +#~ msgid "_About EasyEffects" +#~ msgstr "_Om EasyEffects" + +#~ msgid "Presets" +#~ msgstr "Profiler" + +#~ msgid "Presets Menu" +#~ msgstr "Förinställningsmeny" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects-fönster" + +#~ msgid "Applications List" +#~ msgstr "Applikationslista" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Applikationsnamn" + +#~ msgid "Target" +#~ msgstr "Målvärde (dB)" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Frekvens (Hz)" + +#~ msgid "Reset History" +#~ msgstr "Återställ historik" + +#~ msgid "Output Gain" +#~ msgstr "Utgångsförstärkning (dB)" + +#~ msgid "Input" +#~ msgstr "Ingång" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Plugin ingångsförstärkning (dB)" + +#~ msgid "Output" +#~ msgstr "Utgång" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Plugin utgångsförstärkning (dB)" + +#~ msgid "Reset" +#~ msgstr "Återställ" + +#~ msgid "Using" +#~ msgstr "Använder" + +#~ msgid "Device" +#~ msgstr "Enhet" + +#~ msgid "Name" +#~ msgstr "Namn" + +#~ msgid "Profile" +#~ msgstr "Profil" + +#~ msgid "Preset" +#~ msgstr "Förinställning" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Ta bort denna modellfil" + +#~ msgid "Listen" +#~ msgstr "Lyssna" + +#~ msgid "Application Name" +#~ msgstr "Applikationsnamn" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Visa blocklistade applikationer" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Applikationslista" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Visa blocklistade applikationer" + +#~ msgid "Compressor" +#~ msgstr "Kompressor" + +#~ msgid "Boosting" +#~ msgstr "Förstärkning" + +#~ msgid "Compression Mode" +#~ msgstr "Komprimeringsläge" + +#~ msgid "Boost Threshold" +#~ msgstr "Tröskelvärde för förstärkning (dB)" + +#~ msgid "Boost Amount" +#~ msgstr "Förstärkningsmängd" + +#~ msgid "Attack" +#~ msgstr "Attack (ms)" + +#~ msgid "Threshold" +#~ msgstr "Tröskelvärde (dB)" + +#~ msgid "Attack Time" +#~ msgstr "Attacktid (ms)" + +#~ msgid "Attack Threshold" +#~ msgstr "Tröskelvärde för attack (dB)" + +#~ msgid "Release" +#~ msgstr "Släpp (s)" + +#~ msgid "Release Time" +#~ msgstr "Tid för frisläppning (s)" + +#~ msgid "Release Threshold" +#~ msgstr "Tröskelvärde för frisläppning (dB)" + +#~ msgid "Ratio" +#~ msgstr "Förhållande (n:1)" + +#~ msgid "Knee" +#~ msgstr "Knävärde (dB)" + +#~ msgid "Makeup" +#~ msgstr "Makeup (dB)" + +#~ msgid "Sidechain" +#~ msgstr "Sidokedja" + +#~ msgid "Peak" +#~ msgstr "Topp" + +#~ msgid "Low-Pass" +#~ msgstr "Lågpass" + +#~ msgid "Sidechain Mode" +#~ msgstr "Sidokedjeläge" + +#~ msgid "Middle" +#~ msgstr "Mitten" + +#~ msgid "Side" +#~ msgstr "Sida" + +#~ msgid "Sidechain Source" +#~ msgstr "Sidokedjekälla" + +#~ msgid "Feed-back" +#~ msgstr "Respons" + +#~ msgid "Sidechain Type" +#~ msgstr "Typ av sidokedja" + +#~ msgid "Input Device" +#~ msgstr "Ingångsenhet" + +#~ msgid "PreAmplification" +#~ msgstr "Förförstärkning" + +#~ msgid "Sidechain Filters" +#~ msgstr "Sidokedjefilter" + +#~ msgid "High-Pass" +#~ msgstr "Högpass" + +#~ msgid "Frequency" +#~ msgstr "Frekvens (Hz)" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Högpassfilterläge" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Högpassfilterfrekvens" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Lågpassfilterläge" + +#~ msgid "Gain" +#~ msgstr "Förstärkning" + +#~ msgid "L" +#~ msgstr "V" + +#~ msgid "Left Channel" +#~ msgstr "Vänster kanal" + +#~ msgid "R" +#~ msgstr "H" + +#~ msgid "Right Channel" +#~ msgstr "Höger kanal" + +#~ msgid "Impulses" +#~ msgstr "Impulser" + +#~ msgid "Stereo Width" +#~ msgstr "Stereobredd" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Ingångsförstärkning (dB)" + +#~ msgid "Rate" +#~ msgstr "Takt" + +#~ msgid "Samples" +#~ msgstr "Prover" + +#~ msgid "Duration" +#~ msgstr "Varaktighet" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "Kombinera impulssvar" + +#~ msgid "Output File Name" +#~ msgstr "Utdatafilnamn" + +#~ msgid "Import Impulse" +#~ msgstr "Importera impuls" + +#~ msgid "Search Impulse File" +#~ msgstr "Sök impulsfil" + +#~ msgid "Impulse Files List" +#~ msgstr "Lista över impulsfiler" + +#~ msgid "Cutoff" +#~ msgstr "Gräns (Hz)" + +#~ msgid "Feed" +#~ msgstr "Mata (dB)" + +#~ msgid "Detection" +#~ msgstr "Upptäckt" + +#~ msgid "Frequency 1 Split" +#~ msgstr "Frekvens 1 delning (Hz)" + +#~ msgid "F2 Peak" +#~ msgstr "F2 topp" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "Frekvens 2 topp (Hz)" + +#~ msgid "F1 Gain" +#~ msgstr "F1 förstärkning (dB)" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "Frekvens 1 förstärkning (Hz)" + +#~ msgid "F2 Level" +#~ msgstr "F2 nivå" + +#~ msgid "Frequency 2 Level" +#~ msgstr "Frekvens 2 nivå (Hz)" + +#~ msgid "F2 Peak Q" +#~ msgstr "F2 topp Q" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Frekvens 2 topp Q" + +#~ msgid "Detected" +#~ msgstr "Upptäckt" + +#~ msgid "Reduction" +#~ msgstr "Reduktion" + +#~ msgid "Frame Size" +#~ msgstr "Ramstorlek" + +#~ msgid "Filter Length" +#~ msgstr "Filterlängd" + +#~ msgid "Split Channels" +#~ msgstr "Delade kanaler" + +#~ msgid "Flat Response" +#~ msgstr "Platt respons" + +#~ msgid "Load APO Preset" +#~ msgstr "Ladda APO-förinställning" + +#~ msgid "High Pass" +#~ msgstr "Högpass" + +#~ msgid "High Shelf" +#~ msgstr "Hög hylla" + +#~ msgid "Low Pass" +#~ msgstr "Lågpass" + +#~ msgid "Low Shelf" +#~ msgstr "Låg hylla" + +#~ msgid "All Pass" +#~ msgstr "Lågpass" + +#~ msgid "Band Type" +#~ msgstr "Bandtyp" + +#~ msgid "Band Mode" +#~ msgstr "Bandläge" + +#~ msgid "Width" +#~ msgstr "Bredd" + +#~ msgid "Quality" +#~ msgstr "Kvalitet" + +#~ msgid "Ceil" +#~ msgstr "Tak (dB)" + +#~ msgid "Description" +#~ msgstr "Beskrivning" + +#~ msgid "Remove this model file" +#~ msgstr "Ta bort denna modellfil" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Tid för frisläppning (s)" + +#~ msgid "Line Thin" +#~ msgstr "Linje tunn" + +#~ msgid "Line Wide" +#~ msgstr "Linje bred" + +#~ msgid "Line Tail" +#~ msgstr "Linje svans" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Sidokedjeförförstärkning" + +#~ msgid "Boost" +#~ msgstr "Förstärkning" + +#~ msgid "Stereo Link" +#~ msgstr "Stereolänk" + +#~ msgid "External Sidechain" +#~ msgstr "Extern sidokedja" + +#~ msgid "Auto Leveling" +#~ msgstr "Automatisk utjämning" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "Automatisk utjämningsattack" + +#~ msgid "Auto Leveling Release" +#~ msgstr "Automatisk utjämningsutlösning" + +#~ msgid "Auto Leveling Knee" +#~ msgstr "Automatisk knäutjämning" + +#~ msgid "Gain Left" +#~ msgstr "Förstärkning vänster" + +#~ msgid "Sidechain Left" +#~ msgstr "Sidokedja vänster" + +#~ msgid "Sidechain Right" +#~ msgstr "Sidokedja höger" + +#~ msgid "FFT Size" +#~ msgstr "FFT-storlek" + +#~ msgid "Output Volume" +#~ msgstr "Utgångsvolym" + +#~ msgid "Ceiling" +#~ msgstr "Tak" + +#~ msgid "Operating Mode" +#~ msgstr "Driftläge" + +#~ msgid "Sidechain Boost" +#~ msgstr "Sidokedjeförstärkning" + +#~ msgid "Bands List" +#~ msgstr "Lista över band" + +#~ msgid "Band Compression Mode" +#~ msgstr "Bandkomprimeringsläge" + +#~ msgid "Band Sidechain Options" +#~ msgstr "Alternativ för bandsidokedja" + +#~ msgid "Low-Cut Filter" +#~ msgstr "Lågklippt filter" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Lågklippt filterfrekvens" + +#~ msgid "High-Cut Filter" +#~ msgstr "Högklippt filter" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Högklippt filterfrekvens" + +#~ msgid "Band Gain" +#~ msgstr "Bandförstärkning" + +#~ msgid "Split Mode" +#~ msgstr "Delat läge" + +#~ msgid "Split Frequency 1" +#~ msgstr "Delad frekvens 1" + +#~ msgid "Split Frequency 2" +#~ msgstr "Delad frekvens 2" + +#~ msgid "Split Frequency 3" +#~ msgstr "Delad frekvens 3" + +#~ msgid "Sub Band" +#~ msgstr "Underband" + +#~ msgid "Band 1 Bypass" +#~ msgstr "Förbikoppling av band 1" + +#~ msgid "Band 1 Solo" +#~ msgstr "Band 1 solo" + +#~ msgid "Band 1 Detection" +#~ msgstr "Band 1-detektering" + +#~ msgid "Band 1 Attack" +#~ msgstr "Band 1 attack" + +#~ msgid "Band 1 Release" +#~ msgstr "Band 1 släpp" + +#~ msgid "Band 1 Threshold" +#~ msgstr "Band 1 tröskel" + +#~ msgid "Band 1 Ratio" +#~ msgstr "Band 1-förhållande" + +#~ msgid "Band 1 Knee" +#~ msgstr "Band 1 knä" + +#~ msgid "Band 1 Makeup" +#~ msgstr "Band 1 sammansättning" + +#~ msgid "Max Reduction" +#~ msgstr "Maximal minskning" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Band 1 max reduktion" + +#~ msgid "Low Band" +#~ msgstr "Lågt band" + +#~ msgid "Band 2 Bypass" +#~ msgstr "Förbikoppling av band 2" + +#~ msgid "Band 2 Solo" +#~ msgstr "Band 2 solo" + +#~ msgid "Band 2 Detection" +#~ msgstr "Band 2-detektering" + +#~ msgid "Band 2 Attack" +#~ msgstr "Band 2 attack" + +#~ msgid "Band 2 Release" +#~ msgstr "Band 2 släpp" + +#~ msgid "Band 2 Threshold" +#~ msgstr "Tröskelvärde för band 2" + +#~ msgid "Band 2 Ratio" +#~ msgstr "Band 2-förhållande" + +#~ msgid "Band 2 Knee" +#~ msgstr "Band 2 knä" + +#~ msgid "Band 2 Makeup" +#~ msgstr "Band 2 sammansättning" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Band 2 max reduktion" + +#~ msgid "Mid Band" +#~ msgstr "Mittband" + +#~ msgid "Band 3 Bypass" +#~ msgstr "Förbikoppling av band 3" + +#~ msgid "Band 3 Solo" +#~ msgstr "Band 3 solo" + +#~ msgid "Band 3 Detection" +#~ msgstr "Band 3-detektering" + +#~ msgid "Band 3 Attack" +#~ msgstr "Band 3 attack" + +#~ msgid "Band 3 Release" +#~ msgstr "Band 3 släpp" + +#~ msgid "Band 3 Threshold" +#~ msgstr "Band 3 tröskelvärde" + +#, fuzzy +#~ msgid "Band 3 Ratio" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Band 3 Knee" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Makeup (dB)" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Förstärkningsreducering" + +#, fuzzy +#~ msgid "High Band" +#~ msgstr "Högpass" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Release (s)" + +#, fuzzy +#~ msgid "Band 4 Solo" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Förstärkningsreducering" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Attack (ms)" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Release (s)" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Tröskelvärde (dB)" + +#, fuzzy +#~ msgid "Band 4 Ratio" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Band 4 Knee" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Makeup (dB)" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Förstärkningsreducering" + +#~ msgid "General" +#~ msgstr "Allmänt" + +#, fuzzy +#~ msgid "Custom Input Device" +#~ msgstr "Ingångs-begränsning" + +#, fuzzy +#~ msgid "Custom Output Device" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Server Information" +#~ msgstr "Efterljud (eko)" + +#, fuzzy +#~ msgid "Sampling Rate" +#~ msgstr "Resampler" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "Frekvens (Hz)" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Frekvens (Hz)" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Frekvens (Hz)" + +#, fuzzy +#~ msgid "Output Devices" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Output Presets" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Input Devices" +#~ msgstr "Ingångs-begränsning" + +#, fuzzy +#~ msgid "Input Presets" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Test Signal" +#~ msgstr "Testsignal" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Sinustabell" + +#~ msgid "Channels" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Both Channels" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Sine Wave" +#~ msgstr "Sinustabell" + +#~ msgid "White Noise" +#~ msgstr "Vitt brus" + +#, fuzzy +#~ msgid "High Speed" +#~ msgstr "Hög hylla" + +#, fuzzy +#~ msgid "High Quality" +#~ msgstr "Kvalitet" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Format" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Förinställning" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Upptäckt" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Ta bort denna modellfil" + +#, fuzzy +#~ msgid "Add Effect" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "_General" +#~ msgstr "Allmänt" + +#, fuzzy +#~ msgid "Service" +#~ msgstr "Ingångs-begränsning" + +#~ msgid "Use Dark Theme" +#~ msgstr "Använd mörkt tema" + +#, fuzzy +#~ msgid "_Spectrum" +#~ msgstr "Spektrum" + +#~ msgid "Points" +#~ msgstr "Punkter" + +#, fuzzy +#~ msgid "Line Width" +#~ msgstr "Bredd" + +#, fuzzy +#~ msgid "Frequency Range" +#~ msgstr "Frekvens (Hz)" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "Frekvens (Hz)" + +#, fuzzy +#~ msgid "Save current settings to this preset file" +#~ msgstr "Spara nuvarande inställningar som profil" + +#, fuzzy +#~ msgid "New Output Preset Name" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Ta bort profil" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Search Output Preset" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Output Presets List" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "New Input Preset Name" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Search Input Preset" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Input Presets List" +#~ msgstr "Öppna förinställning" + +#~ msgid "Room Size" +#~ msgstr "Rumsstorlek" + +#, fuzzy +#~ msgid "Small" +#~ msgstr "Litet rum" + +#, fuzzy +#~ msgid "Large" +#~ msgstr "Målvärde (dB)" + +#, fuzzy +#~ msgid "Pre Delay" +#~ msgstr "Release (ms)" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Målvärde (dB)" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Nivå" + +#, fuzzy +#~ msgid "Ambience" +#~ msgstr "Tystnad" + +#, fuzzy +#~ msgid "Room" +#~ msgstr "Rumsstorlek" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "Active Model" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Overview" +#~ msgstr "Ingångs-begränsning" + +#, fuzzy +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Balance" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Input Balance" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Nivå" + +#, fuzzy +#~ msgid "Stereo Matrix" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Stereo Mode" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Side Level" +#~ msgstr "Nivå" + +#, fuzzy +#~ msgid "Side Balance" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Middle Level" +#~ msgstr "Nivå" + +#, fuzzy +#~ msgid "Middle Panorama" +#~ msgstr "Panorama" + +#, fuzzy +#~ msgid "Output Balance" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Delay L/R" +#~ msgstr "Release (ms)" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Release (ms)" + +#, fuzzy +#~ msgid "Stereo Base" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Stereo Phase" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Creating" +#~ msgstr "Inställningar" + +#, fuzzy +#~ msgid "channels" +#~ msgstr "Kanaler" + +#~ msgid "Output Presets: " +#~ msgstr "Utgångsförinställningar: " + +#~ msgid "Input Presets: " +#~ msgstr "Ingångsförinställningar: " + +#, fuzzy +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "Ljudeffekter för PulseAudio applikationer" + +#~ msgid "Reset EasyEffects." +#~ msgstr "Återställ EasyEffects." + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Lista över impulsfiler" + +#, fuzzy +#~ msgid "Import Impulse File" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "Cancel" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Impulse Response" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Lista över impulsfiler" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Sök impulsfil" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#, fuzzy +#~ msgid "Import APO Preset File" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "APO Presets" +#~ msgstr "Profiler" + +#~ msgid "Remove" +#~ msgstr "Ta bort" + +#, fuzzy +#~ msgid "Output Device" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Import Preset" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Import Model File" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "RNNoise Models" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Bass Enhancer" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Crystalizer" +#~ msgstr "Utjämnare" + +#, fuzzy +#~ msgid "Delay" +#~ msgstr "Release (ms)" + +#, fuzzy +#~ msgid "Echo Canceller" +#~ msgstr "Ljudförstärkare" + +#~ msgid "Equalizer" +#~ msgstr "Utjämnare" + +#, fuzzy +#~ msgid "Filter" +#~ msgstr "Filter typ" + +#, fuzzy +#~ msgid "Limiter" +#~ msgstr "Gränsvärde (dB)" + +#, fuzzy +#~ msgid "Multiband Compressor" +#~ msgstr "Kompressor" + +#, fuzzy +#~ msgid "Multiband Gate" +#~ msgstr "Kompressor" + +#, fuzzy +#~ msgid "Reverberation" +#~ msgstr "Efterljud (eko)" + +#, fuzzy +#~ msgid "Noise Reduction" +#~ msgstr "Förstärkningsreducering" + +#, fuzzy +#~ msgid "Stereo Tools" +#~ msgstr "Ljudförstärkare" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Import Presets" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibrering och mikrofon korrigering" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Sinustabell" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Sinustabell" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latens" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Output Effects" +#~ msgstr "Ingångs-begränsning" + +#~ msgid "Settings" +#~ msgstr "Inställningar" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Inställningar" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Kalibrering" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Testsignal" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Testsignal" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Spectrum Color" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Förstärkningsreducering" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "Nivå" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Lågpass" + +#~ msgid "Input Limiter" +#~ msgstr "Ingångs-begränsning" + +#~ msgid "Calibration" +#~ msgstr "Kalibrering" + +#, fuzzy +#~ msgid "Limit" +#~ msgstr "Gränsvärde (dB)" + +#~ msgid "Attenuation" +#~ msgstr "Försvagning" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Ljudeffekter för PulseAudio applikationer" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Ljudeffekter för PulseAudio applikationer" + +#, fuzzy +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrering och mikrofon korrigering" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Fyrkant" + +#~ msgid "Saw" +#~ msgstr "Sågtand" + +#~ msgid "Triangle" +#~ msgstr "Triangel" + +#, fuzzy +#~ msgid "Silence" +#~ msgstr "Tystnad" + +#~ msgid "Pink Noise" +#~ msgstr "Skärt brus" + +#~ msgid "Ticks" +#~ msgstr "Tickande" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussiskt brus" + +#~ msgid "Red Noise" +#~ msgstr "Rött brus" + +#~ msgid "Blue Noise" +#~ msgstr "Blått brus" + +#~ msgid "Violet Noise" +#~ msgstr "Violett brus" + +#~ msgid "Volume" +#~ msgstr "Volym" + +#, fuzzy +#~ msgid "Window" +#~ msgstr "Mellanrum (s)" + +#~ msgid "Measure Noise" +#~ msgstr "Mät brus" + +#~ msgid "Subtract Noise" +#~ msgstr "Ta bort brus" + +#, fuzzy +#~ msgid "High" +#~ msgstr "Högpass" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Förstärkningsreducering" + +#, fuzzy +#~ msgid "Very High" +#~ msgstr "Högpass" + +#, fuzzy +#~ msgid "Noise Suppressor" +#~ msgstr "Kompressor" + +#, fuzzy +#~ msgid "Detection Likelihood" +#~ msgstr "Försvagning" + +#, fuzzy +#~ msgid "Voice Detector" +#~ msgstr "Försvagning" + +#, fuzzy +#~ msgid "Select the impulse Response File" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Kalibrering" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Återställ frekvens" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Inställningar" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Försvagning" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frekvens (Hz)" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Resampler" + +#, fuzzy +#~ msgid "Buffer" +#~ msgstr "Latens" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Ljudutjämnare - Utgång" + +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Rumsstorlek" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Förstärkningsreducering" diff --git a/po/news/th.po b/po/news/th.po new file mode 100644 index 0000000..0856c7e --- /dev/null +++ b/po/news/th.po @@ -0,0 +1,734 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" diff --git a/po/news/tr.po b/po/news/tr.po new file mode 100644 index 0000000..8d7796e --- /dev/null +++ b/po/news/tr.po @@ -0,0 +1,2667 @@ +# EasyEffects Türkçe Çeviri Dosyası. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# Serdar Sağlam , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-01 14:37+0000\n" +"Last-Translator: Oğuz Ersen \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "PipeWire Uygulamaları için Ses Efektleri" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects gelişmiş bir ses işleme aracıdır. Ekolayzır, sınırlayıcı, " +"sıkıştırıcı ve yankılanma araçları içerir. Bunları tamamlamak için ayrıca " +"bir spektrum analizörü bulunmaktadır." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects, PulseEffects'in devamıdır. EasyEffects yalnızca PipeWire'ın ses " +"sunucusunu destekler. PulseAudio kullanıcıları bunun yerine PulseEffects " +"kullanmalıdır." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"EasyEffects, öntanımlı PipeWire ses sunucusunu kullandığından, kullandığınız " +"uygulamaların tümü olmasa da çoğu ile çalışacaktır. Desteklenen tüm " +"uygulamalar, her birinin ayrı ayrı etkinleştirilebileceği ana pencerede " +"sunulur." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"Ses çıkışını manipüle etmenin yanı sıra, EasyEffects, mikrofon gibi bir " +"giriş cihazına da efektler uygulayabilir. Bu özellik ses kaydında da " +"kullanışlıdır ve sesli konuşmalarda da iyi çalışır." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"EasyEffects başlatıldığında, son oturumda kullanılan ayarlamaları rahatlıkla " +"hatırlayacaktır. Tüm mevcut ayarları profil olarak kaydetmek de mümkündür." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "İki ses çıkışı uygulamasını gösteren ana sayfa" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "Ses denetimlerini gösteren bas yükseltici sayfası" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "Ses denetimlerini gösteren sarsıcı sayfası" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +#, fuzzy +msgid "Many translation updates" +msgstr "Çeviriler güncellendi" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" +"EasyEffects simgesi, QT masaüstlerinde görünmesini sağlayacak şekilde " +"güncellendi." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "Bilgisayarın askıya alınması için daha iyi destek." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "Çeviriler güncellendi" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" +"LibAdwaita, penceremizin bazı bölümlerini oluşturmak ve koyu ile açık " +"temalar arasında geçiş yapmak için kullanılır." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "" +"Ayarlar menüsü, LibAdwaita widget'ları kullanılarak yeniden tasarlandı." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "" +"GTKMM ve GLIBMM artık bir bağımlılık değil. Artık doğrudan gtk4 kullanıyoruz." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" +"İngilizce'den farklı yerelleştirmeye sahip sistemlerde giriş uygulamaları " +"listesine Pavucontrol artık eklenmiyor." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "Çince çeviri güncellendi." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "İtalyanca çeviri güncellendi." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "Birkaç widget'ta yerel ayar düzeltildi" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "Birkaç widget'ta yanlış hizalama düzeltildi" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "Ekolayzır arayüzü iyileştirildi." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" +"Uygulama ve deposu, PulseEffects'ten `EasyEffects` olarak yeniden " +"adlandırıldı" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "gtkmm3, gtkmm4 ile değiştirildi" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "Gstreamer, yerel PipeWire süzgeçleriyle değiştirildi." + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" +"Yeni kütüphaneler kullanılıyor ve daha önce isteğe bağlı olan " +"kütüphanelerden bazıları artık gerekli" + +#~ msgid "This release adds the following features:" +#~ msgstr "Bu sürüm aşağıdaki özellikleri ekler:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Bu sürüm aşağıdaki hataları düzeltir:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bant 1" + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Bu sürüm aşağıdaki hatayı düzeltir:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Bu sürüm aşağıdaki özelliği ekler:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "Ekolayzır, Sıkıştırıcı ve Diğer Ses Efektleri" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "" +#~ "sınırlayıcı,kompresör,yankı,ekolayzır,otomatikses;yükseltici;sıkıştırıcı;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"Ön Ayarlar\"" + +#, fuzzy +#~ msgid "Enable" +#~ msgstr "Etkinleştir" + +#~ msgid "Mute Application" +#~ msgstr "Uygulamayı Sessize Al" + +#~ msgid "Application Volume" +#~ msgstr "Uygulama Ses Seviyesi" + +#~ msgid "_Preferences" +#~ msgstr "_Tercihler" + +#~ msgid "_Manual" +#~ msgstr "_Kılavuz" + +#~ msgid "_Shortcuts" +#~ msgstr "Kısa_yollar" + +#~ msgid "_Reset Settings" +#~ msgstr "Ayarları _Sıfırla" + +#~ msgid "_About EasyEffects" +#~ msgstr "EasyEffects _Hakkında" + +#~ msgid "Presets" +#~ msgstr "Ön Ayarlar" + +#~ msgid "Presets Menu" +#~ msgstr "Ön Ayarlar Menüsü" + +#, fuzzy +#~ msgid "Global Bypass" +#~ msgstr "Atla" + +#~ msgid "Primary Menu" +#~ msgstr "Ana Menü" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects Penceresi" + +#~ msgid "Applications List" +#~ msgstr "Uygulama Listesi" + +#, fuzzy +#~ msgid "Empty List" +#~ msgstr "Boş Duvarlar" + +#, fuzzy +#~ msgid "No Audio Application Available" +#~ msgstr "Uygulama Adı" + +#~ msgid "Target" +#~ msgstr "Hedef" + +#, fuzzy +#~ msgid "Maximum History" +#~ msgstr "Azami" + +#~ msgid "Momentary" +#~ msgstr "Anlık" + +#, fuzzy +#~ msgid "Short-Term" +#~ msgstr "Kısa Süreli" + +#~ msgid "Integrated" +#~ msgstr "Tümleşik" + +#, fuzzy +#~ msgid "Geometric Mean (MSI)" +#~ msgstr "Geometrik Ortalama" + +#, fuzzy +#~ msgid "Geometric Mean (MS)" +#~ msgstr "Geometrik Ortalama" + +#, fuzzy +#~ msgid "Geometric Mean (MI)" +#~ msgstr "Geometrik Ortalama" + +#, fuzzy +#~ msgid "Geometric Mean (SI)" +#~ msgstr "Geometrik Ortalama" + +#~ msgid "Reset History" +#~ msgstr "Geçmişi Sıfırla" + +#~ msgid "Relative" +#~ msgstr "Göreceli" + +#~ msgid "Range" +#~ msgstr "Sınır" + +#~ msgid "Loudness" +#~ msgstr "Yüksek Ses" + +#~ msgid "Output Gain" +#~ msgstr "Çıkış Kazancı" + +#~ msgid "Input" +#~ msgstr "Giriş" + +#~ msgid "Plugin Input Gain" +#~ msgstr "Eklenti Giriş Kazancı" + +#~ msgid "Output" +#~ msgstr "Çıkış" + +#~ msgid "Plugin Output Gain" +#~ msgstr "Eklenti Çıkış Kazancı" + +#~ msgid "Reset" +#~ msgstr "Sıfırla" + +#~ msgid "Device" +#~ msgstr "Aygıt" + +#~ msgid "Name" +#~ msgstr "İsim" + +#~ msgid "Profile" +#~ msgstr "Profil" + +#, fuzzy +#~ msgid "Preset" +#~ msgstr "Ön Ayarlar" + +#, fuzzy +#~ msgid "Remove this autoload preset" +#~ msgstr "Otomatik Yükleme Ön Ayarını Kaldır" + +#~ msgid "Listen" +#~ msgstr "Liste" + +#~ msgid "Blend Harmonics" +#~ msgstr "Harmonik Karışımları" + +#~ msgid "3rd" +#~ msgstr "3." + +#~ msgid "2nd" +#~ msgstr "2." + +#~ msgid "Amount" +#~ msgstr "Miktar" + +#~ msgid "Harmonics" +#~ msgstr "Harmonikler" + +#~ msgid "Scope" +#~ msgstr "Kapsam" + +#~ msgid "Floor" +#~ msgstr "Zemin" + +#~ msgid "Floor Value" +#~ msgstr "Zemin Değeri" + +#~ msgid "Link" +#~ msgstr "Bağ" + +#~ msgid "Application Name" +#~ msgstr "Uygulama Adı" + +#, fuzzy +#~ msgid "Add to Excluded Applications" +#~ msgstr "Kara Listeye Alınan Uygulamaları Göster" + +#, fuzzy +#~ msgid "Excluded Applications List" +#~ msgstr "Kara Listeye Alınan Uygulamalar Listesi" + +#, fuzzy +#~ msgid "Show Excluded Applications" +#~ msgstr "Kara Listeye Alınan Uygulamaları Göster" + +#~ msgid "Compressor" +#~ msgstr "Sıkıştırıcı" + +#~ msgid "Mode" +#~ msgstr "Kip" + +#~ msgid "Downward" +#~ msgstr "Aşağıya" + +#~ msgid "Upward" +#~ msgstr "Yukarıya" + +#~ msgid "Compression Mode" +#~ msgstr "Sıkıştırma Kipi" + +#, fuzzy +#~ msgid "Boost Threshold" +#~ msgstr "Eşik" + +#, fuzzy +#~ msgid "Boost Amount" +#~ msgstr "Miktar" + +#~ msgid "Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Eş Zamanlı" + +#~ msgid "Threshold" +#~ msgstr "Eşik" + +#, fuzzy +#~ msgid "Attack Time" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Attack Threshold" +#~ msgstr "Eşik" + +#~ msgid "Release" +#~ msgstr "Bırak" + +#, fuzzy +#~ msgid "Release Time" +#~ msgstr "Eş Zamanlı" + +#, fuzzy +#~ msgid "Release Threshold" +#~ msgstr "Eşik" + +#~ msgid "Ratio" +#~ msgstr "Oran" + +#~ msgid "Knee" +#~ msgstr "Oynak" + +#~ msgid "Makeup" +#~ msgstr "Süs" + +#~ msgid "Sidechain" +#~ msgstr "Yanzincir" + +#~ msgid "Peak" +#~ msgstr "Doruk" + +#~ msgid "RMS" +#~ msgstr "RMS" + +#~ msgid "Low-Pass" +#~ msgstr "Düşük-Geçiş" + +#~ msgid "Uniform" +#~ msgstr "Aynı" + +#, fuzzy +#~ msgid "Sidechain Mode" +#~ msgstr "Yanzincir" + +#~ msgid "Source" +#~ msgstr "Kaynak" + +#~ msgid "Middle" +#~ msgstr "Orta" + +#~ msgid "Side" +#~ msgstr "Yan" + +#~ msgid "Left" +#~ msgstr "Sol" + +#~ msgid "Right" +#~ msgstr "Sağ" + +#, fuzzy +#~ msgid "Sidechain Source" +#~ msgstr "Yanzincir" + +#~ msgid "Type" +#~ msgstr "Tür" + +#~ msgid "Feed-forward" +#~ msgstr "İleri-besleme" + +#~ msgid "Feed-back" +#~ msgstr "Geri-besleme" + +#, fuzzy +#~ msgid "Sidechain Type" +#~ msgstr "Yanzincir" + +#~ msgid "Input Device" +#~ msgstr "Giriş Aygıtı" + +#, fuzzy +#~ msgid "PreAmplification" +#~ msgstr "Öntanımlı-yükselticiler" + +#~ msgid "Reactivity" +#~ msgstr "Tepkinirlik" + +#~ msgid "Lookahead" +#~ msgstr "İlerleme" + +#~ msgid "Sidechain Filters" +#~ msgstr "Yanzincir Süzgeçleri" + +#~ msgid "High-Pass" +#~ msgstr "Yüksek Geçiş" + +#~ msgid "Frequency" +#~ msgstr "Sıklık" + +#~ msgid "Off" +#~ msgstr "Kapalı" + +#~ msgid "12 dB/oct" +#~ msgstr "12 dB/oct" + +#~ msgid "24 dB/oct" +#~ msgstr "24 dB/oct" + +#~ msgid "36 dB/oct" +#~ msgstr "36 dB/oct" + +#~ msgid "High-Pass Filter Mode" +#~ msgstr "Yüksek Geçiş Süzgeci Kipi" + +#~ msgid "High-Pass Filter Frequency" +#~ msgstr "Yüksek Geçiş Süzgeci Frekansı" + +#~ msgid "Low-Pass Filter Mode" +#~ msgstr "Alçak Geçiş Süzgeci Kipi" + +#~ msgid "Gain" +#~ msgstr "Kazanç" + +#, fuzzy +#~ msgid "Envelope" +#~ msgstr "Eğim" + +#~ msgid "Curve" +#~ msgstr "Eğri" + +#~ msgid "L" +#~ msgstr "L" + +#~ msgid "Left Channel" +#~ msgstr "Sol Kanal" + +#~ msgid "R" +#~ msgstr "R" + +#~ msgid "Right Channel" +#~ msgstr "Sağ Kanal" + +#, fuzzy +#~ msgid "Impulses" +#~ msgstr "Dürtü Yanıtı" + +#~ msgid "Stereo Width" +#~ msgstr "Stereo Genişliği" + +#~ msgid "Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Log Scale" +#~ msgstr "Ölçek" + +#, fuzzy +#~ msgid "Autogain" +#~ msgstr "Otomatik Kazanç" + +#~ msgid "Rate" +#~ msgstr "Oran" + +#~ msgid "Samples" +#~ msgstr "Örnekler" + +#~ msgid "Duration" +#~ msgstr "Süre" + +#, fuzzy +#~ msgid "Combine Impulse Responses" +#~ msgstr "Dürtü Yanıtı" + +#~ msgid "Output File Name" +#~ msgstr "Çıkış Dosyası Adı" + +#~ msgid "Import Impulse" +#~ msgstr "Dürtü Dosyasını İçeri Al" + +#~ msgid "Search" +#~ msgstr "Ara" + +#, fuzzy +#~ msgid "Search Impulse File" +#~ msgstr "Dürtü Dosyasını İçe Aktar" + +#, fuzzy +#~ msgid "Impulse Files List" +#~ msgstr "Dürtü Dosyasını İçe Aktar" + +#~ msgid "Default" +#~ msgstr "Öntanımlı" + +#~ msgid "Cutoff" +#~ msgstr "Kesici" + +#~ msgid "Feed" +#~ msgstr "Akış" + +#~ msgid "Bypass" +#~ msgstr "Atla" + +#~ msgid "Mute" +#~ msgstr "Sessiz" + +#~ msgid "Detection" +#~ msgstr "Keşif" + +#~ msgid "Wide" +#~ msgstr "Geniş" + +#~ msgid "Split" +#~ msgstr "Ayır" + +#, fuzzy +#~ msgid "F1 Split" +#~ msgstr "Ayır" + +#, fuzzy +#~ msgid "Frequency 1 Split" +#~ msgstr "Sıklık" + +#, fuzzy +#~ msgid "F2 Peak" +#~ msgstr "Doruk" + +#, fuzzy +#~ msgid "Frequency 2 Peak" +#~ msgstr "Sıklık" + +#, fuzzy +#~ msgid "F1 Gain" +#~ msgstr "Kazanç" + +#, fuzzy +#~ msgid "Frequency 1 Gain" +#~ msgstr "Sıklık" + +#, fuzzy +#~ msgid "F2 Level" +#~ msgstr "Seviye" + +#, fuzzy +#~ msgid "Frequency 2 Level" +#~ msgstr "Sıklık" + +#, fuzzy +#~ msgid "F2 Peak Q" +#~ msgstr "Q Doruk" + +#, fuzzy +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "Sıklık" + +#~ msgid "Laxity" +#~ msgstr "Gevşeklik" + +#~ msgid "Detected" +#~ msgstr "Saptanan" + +#, fuzzy +#~ msgid "Reduction" +#~ msgstr "Azalım" + +#~ msgid "Frame Size" +#~ msgstr "Çerçeve Boyutu" + +#~ msgid "Filter Length" +#~ msgstr "Süzgeç Uzunluğu" + +#, fuzzy +#~ msgid "Excluded Apps" +#~ msgstr "hariç tutuldu" + +#~ msgid "Bands" +#~ msgstr "Bantlar" + +#~ msgid "IIR" +#~ msgstr "IIR" + +#~ msgid "FIR" +#~ msgstr "FIR" + +#~ msgid "FFT" +#~ msgstr "FFT" + +#~ msgid "SPM" +#~ msgstr "SPM" + +#~ msgid "Split Channels" +#~ msgstr "Kanalları Böl" + +#~ msgid "Flat Response" +#~ msgstr "Düz Yanıt" + +#~ msgid "Calculate Frequencies" +#~ msgstr "Frekansları Hesapla" + +#~ msgid "Load APO Preset" +#~ msgstr "APO Ön Ayarını Yükle" + +#~ msgid "Bell" +#~ msgstr "Çan" + +#~ msgid "High Pass" +#~ msgstr "Yüksek Geçiş" + +#~ msgid "High Shelf" +#~ msgstr "Yüksek Sığlık" + +#~ msgid "Low Pass" +#~ msgstr "Düşük Geçiş" + +#~ msgid "Low Shelf" +#~ msgstr "Düşük Sığlık" + +#~ msgid "Notch" +#~ msgstr "Çentik" + +#~ msgid "Resonance" +#~ msgstr "Çınlama" + +#, fuzzy +#~ msgid "All Pass" +#~ msgstr "Düşük Geçiş" + +#~ msgid "Band Type" +#~ msgstr "Bant Türü" + +#~ msgid "Band Mode" +#~ msgstr "Bant Kipi" + +#~ msgid "Slope" +#~ msgstr "Eğim" + +#~ msgid "Band Slope" +#~ msgstr "Bant Eğimi" + +#~ msgid "Width" +#~ msgstr "Genişlik" + +#~ msgid "Quality" +#~ msgstr "Kalite" + +#~ msgid "Solo" +#~ msgstr "Tekli" + +#, fuzzy +#~ msgid "Ceil" +#~ msgstr "Tavan" + +#~ msgid "Ceil Value" +#~ msgstr "Tavan Değeri" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Description" +#~ msgstr "Açıklama" + +#~ msgid "Remove this model file" +#~ msgstr "Bu model dosyasını kaldır" + +#~ msgid "12dB/oct Lowpass" +#~ msgstr "12dB/oct Düşük geçiş" + +#~ msgid "24dB/oct Lowpass" +#~ msgstr "24dB/oct Düşük geçiş" + +#~ msgid "36dB/oct Lowpass" +#~ msgstr "36dB/oct Düşük geçiş" + +#~ msgid "12dB/oct Highpass" +#~ msgstr "12dB/oct Yüksek geçiş" + +#~ msgid "24dB/oct Highpass" +#~ msgstr "24dB/oct Yüksek geçiş" + +#~ msgid "36dB/oct Highpass" +#~ msgstr "36dB/oct Yüksek geçiş" + +#~ msgid "6dB/oct Bandpass" +#~ msgstr "6dB/oct Bant geçişi" + +#~ msgid "12dB/oct Bandpass" +#~ msgstr "12dB/oct Bant geçişi" + +#~ msgid "18dB/oct Bandpass" +#~ msgstr "18dB/oct Bant geçişi" + +#~ msgid "6dB/oct Bandreject" +#~ msgstr "6dB/oct Bant reddet" + +#~ msgid "12dB/oct Bandreject" +#~ msgstr "12dB/oct Bant reddet" + +#~ msgid "18dB/oct Bandreject" +#~ msgstr "12dB/oct Bant reddet" + +#~ msgid "Inertia" +#~ msgstr "Durağan" + +#~ msgid "Gate" +#~ msgstr "Aralık" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "Eş Zamanlı" + +#, fuzzy +#~ msgid "Internal" +#~ msgstr "Tümleşik" + +#~ msgid "Gating" +#~ msgstr "Geçitleme" + +#~ msgid "Oversampling" +#~ msgstr "Aşırı Örnekleme" + +#, fuzzy +#~ msgid "Herm Wide" +#~ msgstr "Geniş" + +#, fuzzy +#~ msgid "Exp Wide" +#~ msgstr "Geniş" + +#, fuzzy +#~ msgid "Line Thin" +#~ msgstr "Hat Genişliği" + +#, fuzzy +#~ msgid "Line Wide" +#~ msgstr "Hat Genişliği" + +#, fuzzy +#~ msgid "Line Tail" +#~ msgstr "Sinüs Tablosu" + +#~ msgid "None" +#~ msgstr "Hiçbiri" + +#, fuzzy +#~ msgid "Sidechain PreAmplification" +#~ msgstr "Öntanımlı-yükselticiler" + +#~ msgid "Stereo Link" +#~ msgstr "Stereo Bağ" + +#, fuzzy +#~ msgid "External Sidechain" +#~ msgstr "Yanzincir" + +#, fuzzy +#~ msgid "Auto Leveling" +#~ msgstr "Otomatik Kazanç" + +#, fuzzy +#~ msgid "Gain Left" +#~ msgstr "Kazanç" + +#, fuzzy +#~ msgid "Gain Right" +#~ msgstr "Sağ" + +#, fuzzy +#~ msgid "Sidechain Left" +#~ msgstr "Yanzincir" + +#, fuzzy +#~ msgid "Sidechain Right" +#~ msgstr "Yanzincir" + +#~ msgid "Standard" +#~ msgstr "Standart" + +#~ msgid "Flat" +#~ msgstr "Düz" + +#, fuzzy +#~ msgid "FFT Size" +#~ msgstr "Çerçeve Boyutu" + +#~ msgid "Output Volume" +#~ msgstr "Çıkış Ses Seviyesi" + +#~ msgid "Ceiling" +#~ msgstr "Tavan" + +#~ msgid "Operating Mode" +#~ msgstr "Çalışma Kipi" + +#~ msgid "Classic" +#~ msgstr "Klasik" + +#~ msgid "Modern" +#~ msgstr "Çağdaş" + +#, fuzzy +#~ msgid "Sidechain Boost" +#~ msgstr "Yanzincir" + +#~ msgid "Bands List" +#~ msgstr "Bant Listesi" + +#~ msgid "Band 1" +#~ msgstr "Bant 1" + +#~ msgid "Band 2" +#~ msgstr "Bant 2" + +#~ msgid "Band 3" +#~ msgstr "Bant 3" + +#~ msgid "Band 4" +#~ msgstr "Bant 4" + +#~ msgid "Band 5" +#~ msgstr "Bant 5" + +#~ msgid "Band 6" +#~ msgstr "Bant 6" + +#~ msgid "Band 7" +#~ msgstr "Bant 7" + +#~ msgid "Band 8" +#~ msgstr "Bant 8" + +#, fuzzy +#~ msgid "Band End" +#~ msgstr "Bantlar" + +#~ msgid "Band Compression Mode" +#~ msgstr "Bant Sıkıştırma Kipi" + +#, fuzzy +#~ msgid "Band Bypass" +#~ msgstr "Atla" + +#, fuzzy +#~ msgid "Low-Cut Filter" +#~ msgstr "Süzgeç" + +#, fuzzy +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "Frekansları Hesapla" + +#, fuzzy +#~ msgid "High-Cut Filter" +#~ msgstr "Yüksek Geçiş Süzgeci" + +#, fuzzy +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "Frekansları Hesapla" + +#~ msgid "Band Gain" +#~ msgstr "Bant Kazancı" + +#~ msgid "Band Curve" +#~ msgstr "Bant Eğrisi" + +#, fuzzy +#~ msgid "Split Mode" +#~ msgstr "Ayır" + +#~ msgid "Split 1/2" +#~ msgstr "1/2 Böl" + +#, fuzzy +#~ msgid "Split Frequency 1" +#~ msgstr "Sıklık" + +#~ msgid "Split 2/3" +#~ msgstr "2/3 Böl" + +#, fuzzy +#~ msgid "Split Frequency 2" +#~ msgstr "Sıklık" + +#~ msgid "Split 3/4" +#~ msgstr "3/4 Böl" + +#, fuzzy +#~ msgid "Split Frequency 3" +#~ msgstr "Sıklık" + +#~ msgid "Sub Band" +#~ msgstr "Alt Bant" + +#, fuzzy +#~ msgid "Band 1 Bypass" +#~ msgstr "Atla" + +#, fuzzy +#~ msgid "Band 1 Detection" +#~ msgstr "Keşif" + +#, fuzzy +#~ msgid "Band 1 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 1 Release" +#~ msgstr "Bırak" + +#, fuzzy +#~ msgid "Band 1 Threshold" +#~ msgstr "Eşik" + +#, fuzzy +#~ msgid "Band 1 Makeup" +#~ msgstr "Süs" + +#~ msgid "Max Reduction" +#~ msgstr "Azalım" + +#, fuzzy +#~ msgid "Band 1 Max Reduction" +#~ msgstr "Azalım" + +#~ msgid "Low Band" +#~ msgstr "Düşük Bant" + +#, fuzzy +#~ msgid "Band 2 Bypass" +#~ msgstr "Atla" + +#, fuzzy +#~ msgid "Band 2 Detection" +#~ msgstr "Keşif" + +#, fuzzy +#~ msgid "Band 2 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 2 Release" +#~ msgstr "Bırak" + +#, fuzzy +#~ msgid "Band 2 Threshold" +#~ msgstr "Eşik" + +#, fuzzy +#~ msgid "Band 2 Makeup" +#~ msgstr "Süs" + +#, fuzzy +#~ msgid "Band 2 Max Reduction" +#~ msgstr "Azalım" + +#~ msgid "Mid Band" +#~ msgstr "Orta Bant" + +#, fuzzy +#~ msgid "Band 3 Bypass" +#~ msgstr "Atla" + +#, fuzzy +#~ msgid "Band 3 Detection" +#~ msgstr "Keşif" + +#, fuzzy +#~ msgid "Band 3 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 3 Release" +#~ msgstr "Bırak" + +#, fuzzy +#~ msgid "Band 3 Threshold" +#~ msgstr "Eşik" + +#, fuzzy +#~ msgid "Band 3 Makeup" +#~ msgstr "Süs" + +#, fuzzy +#~ msgid "Band 3 Max Reduction" +#~ msgstr "Azalım" + +#~ msgid "High Band" +#~ msgstr "Yüksek Bant" + +#, fuzzy +#~ msgid "Band 4 Bypass" +#~ msgstr "Atla" + +#, fuzzy +#~ msgid "Band 4 Detection" +#~ msgstr "Keşif" + +#, fuzzy +#~ msgid "Band 4 Attack" +#~ msgstr "Atak" + +#, fuzzy +#~ msgid "Band 4 Release" +#~ msgstr "Bırak" + +#, fuzzy +#~ msgid "Band 4 Threshold" +#~ msgstr "Eşik" + +#, fuzzy +#~ msgid "Band 4 Makeup" +#~ msgstr "Süs" + +#, fuzzy +#~ msgid "Band 4 Max Reduction" +#~ msgstr "Azalım" + +#~ msgid "General" +#~ msgstr "Genel" + +#~ msgid "Use Default Input" +#~ msgstr "Öntanımlı Girişi Kullan" + +#~ msgid "Custom Input Device" +#~ msgstr "Özel Giriş Aygıtı" + +#~ msgid "Use Default Output" +#~ msgstr "Öntanımlı Çıkışı Kullan" + +#~ msgid "Custom Output Device" +#~ msgstr "Özel Çıkış Aygıtı" + +#~ msgid "Server Information" +#~ msgstr "Sunucu Bilgileri" + +#~ msgid "Header Version" +#~ msgstr "Başlık Sürümü" + +#~ msgid "Library Version" +#~ msgstr "Kütüphane Sürümü" + +#~ msgid "Sampling Rate" +#~ msgstr "Örnekleme Hızı" + +#, fuzzy +#~ msgid "Maximum Quantum" +#~ msgstr "Azami Kazanç" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "Öntanımlı Sink" + +#~ msgid "Output Devices" +#~ msgstr "Çıkış Aygıtları" + +#~ msgid "Output Presets" +#~ msgstr "Çıkış Ön Ayarları" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "Çıkış Otomatik Yükleme Ön Ayarları Listesi" + +#~ msgid "Input Devices" +#~ msgstr "Giriş Aygıtları" + +#~ msgid "Input Presets" +#~ msgstr "Giriş Ön Ayarları" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "Giriş Otomatik Yükleme Ön Ayarları Listesi" + +#~ msgid "Modules" +#~ msgstr "Modüller" + +#~ msgid "Modules List" +#~ msgstr "Modül Listesi" + +#~ msgid "Clients" +#~ msgstr "İstemciler" + +#~ msgid "Clients List" +#~ msgstr "İstemci Listesi" + +#~ msgid "Test Signal" +#~ msgstr "Test Sinyali" + +#~ msgid "State" +#~ msgstr "Durum" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "Etkinleştir" + +#~ msgid "Properties" +#~ msgstr "Özellikler" + +#~ msgid "Channels" +#~ msgstr "Kanallar" + +#~ msgid "Both Channels" +#~ msgstr "Her İki Kanal" + +#~ msgid "Waveform" +#~ msgstr "Dalga Biçimi" + +#~ msgid "Sine Wave" +#~ msgstr "Sinüs Dalgası" + +#~ msgid "White Noise" +#~ msgstr "Beyaz Gürültü" + +#~ msgid "High Speed" +#~ msgstr "Yüksek Hız" + +#~ msgid "High Quality" +#~ msgstr "Yüksek Kalite" + +#~ msgid "High Consistency" +#~ msgstr "Yüksek Tutarlılık" + +#, fuzzy +#~ msgid "Formant" +#~ msgstr "Biçim" + +#, fuzzy +#~ msgid "Preserved" +#~ msgstr "Ön Ayarlar" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "Canlılık" + +#, fuzzy +#~ msgid "Detector" +#~ msgstr "Keşif" + +#, fuzzy +#~ msgid "Compound" +#~ msgstr "Sıkıştırma" + +#, fuzzy +#~ msgid "Soft" +#~ msgstr "Yumuşak kırpım" + +#~ msgid "Cents" +#~ msgstr "Küsür" + +#~ msgid "Semitones" +#~ msgstr "Yarım Ses" + +#~ msgid "Octaves" +#~ msgstr "Oktav" + +#, fuzzy +#~ msgid "Remove this effect" +#~ msgstr "Bu model dosyasını kaldır" + +#~ msgid "Used Plugins List" +#~ msgstr "Kullanılan Eklentiler Listesi" + +#, fuzzy +#~ msgid "No Effects" +#~ msgstr "EasyEffects" + +#~ msgid "Search Plugin" +#~ msgstr "Eklenti Ara" + +#~ msgid "Plugins List" +#~ msgstr "Eklenti Listesi" + +#~ msgid "_General" +#~ msgstr "_Genel" + +#~ msgid "Service" +#~ msgstr "Hizmet" + +#, fuzzy +#~ msgid "Shutdown on Window Closing" +#~ msgstr "Pencere Kapandığında Kapat" + +#~ msgid "Audio" +#~ msgstr "Ses" + +#, fuzzy +#~ msgid "Process All Output Streams" +#~ msgstr "Tüm Çıkışları İşle" + +#, fuzzy +#~ msgid "Process All Input Streams" +#~ msgstr "Tüm Girişleri İşle" + +#~ msgid "Use Dark Theme" +#~ msgstr "Koyu Tema Kullan" + +#~ msgid "_Spectrum" +#~ msgstr "_Spektrum" + +#~ msgid "Shape" +#~ msgstr "Şekil" + +#~ msgid "Bars" +#~ msgstr "Çubuklar" + +#~ msgid "Lines" +#~ msgstr "Çizgiler" + +#~ msgid "Dots" +#~ msgstr "Noktalar" + +#~ msgid "Points" +#~ msgstr "Noktalar" + +#~ msgid "Height" +#~ msgstr "Yükseklik" + +#~ msgid "Line Width" +#~ msgstr "Hat Genişliği" + +#~ msgid "Fill" +#~ msgstr "Dolgu" + +#~ msgid "Rounded Corners" +#~ msgstr "Yuvarlatılmış Köşeler" + +#~ msgid "Color" +#~ msgstr "Renk" + +#~ msgid "Lines and Bars" +#~ msgstr "Çizgiler ve Çubuklar" + +#~ msgid "Axis Labels" +#~ msgstr "Eksen Etiketleri" + +#~ msgid "Frequency Range" +#~ msgstr "Frekans Aralığı" + +#~ msgid "Minimum" +#~ msgstr "Asgari" + +#~ msgid "Maximum" +#~ msgstr "Azami" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "Geçerli ayarları bu ön ayar dosyasına kaydet" + +#~ msgid "Remove this preset file" +#~ msgstr "Hazır ayar dosyasını kaldır" + +#~ msgid "New Output Preset Name" +#~ msgstr "Yeni Çıkış Ön Ayarı Adı" + +#, fuzzy +#~ msgid "Create a new preset" +#~ msgstr "Hazır Ayar Oluştur" + +#, fuzzy +#~ msgid "Import a preset" +#~ msgstr "Ön Ayarı İçe Aktar" + +#~ msgid "Search Output Preset" +#~ msgstr "Çıkış Ön Ayarı Ara" + +#~ msgid "Output Presets List" +#~ msgstr "Çıkış Ön Ayarları Listesi" + +#~ msgid "New Input Preset Name" +#~ msgstr "Yeni Giriş Ön Ayarı Adı" + +#~ msgid "Search Input Preset" +#~ msgstr "Giriş Ön Ayarı Ara" + +#~ msgid "Input Presets List" +#~ msgstr "Giriş Ön Ayarları Listesi" + +#~ msgid "High Frequency Damping" +#~ msgstr "Yüksek Frekans Sönümleme" + +#~ msgid "Room Size" +#~ msgstr "Oda Boyutu" + +#~ msgid "Small" +#~ msgstr "Küçük" + +#~ msgid "Medium" +#~ msgstr "Orta" + +#~ msgid "Large" +#~ msgstr "Büyük" + +#~ msgid "Tunnel" +#~ msgstr "Tünel" + +#~ msgid "Large/smooth" +#~ msgstr "Büyük/pürüzsüz" + +#~ msgid "Experimental" +#~ msgstr "Deneysel" + +#~ msgid "Diffusion" +#~ msgstr "Yayılma" + +#~ msgid "Pre Delay" +#~ msgstr "Ön Gecikme" + +#~ msgid "Decay Time" +#~ msgstr "Bozunma Süresi" + +#, fuzzy +#~ msgid "Wet Amount" +#~ msgstr "Miktar" + +#, fuzzy +#~ msgid "Wet Level" +#~ msgstr "Hedef Seviye" + +#, fuzzy +#~ msgid "Dry Amount" +#~ msgstr "Miktar" + +#, fuzzy +#~ msgid "Dry Level" +#~ msgstr "Seviye" + +#~ msgid "Bass Cut" +#~ msgstr "Bas Kesim" + +#~ msgid "Treble Cut" +#~ msgstr "Tiz Kesim" + +#~ msgid "Ambience" +#~ msgstr "Ortam" + +#~ msgid "Empty Walls" +#~ msgstr "Boş Duvarlar" + +#~ msgid "Room" +#~ msgstr "Oda" + +#~ msgid "Large Empty Hall" +#~ msgstr "Büyük Boş Salon" + +#~ msgid "Disco" +#~ msgstr "Disko" + +#~ msgid "Large Occupied Hall" +#~ msgstr "Büyük Dolu Salon" + +#, fuzzy +#~ msgid "Import Model" +#~ msgstr "Dürtü Dosyasını İçeri Al" + +#~ msgid "Models" +#~ msgstr "Modeller" + +#~ msgid "Standard Model" +#~ msgstr "Standart Model" + +#~ msgid "Active Model" +#~ msgstr "Etkin Model" + +#~ msgid "Overview" +#~ msgstr "Genel Görünüm" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "EasyEffects Kılavuzunu Aç" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "Tam ekran/Tam ekrandan geri yükle" + +#~ msgid "Close the Window" +#~ msgstr "Pencereyi Kapat" + +#~ msgid "Quit EasyEffects" +#~ msgstr "EasyEffects'ten Çık" + +#~ msgid "Balance" +#~ msgstr "Denge" + +#~ msgid "Input Balance" +#~ msgstr "Giriş Dengesi" + +#~ msgid "Softclip" +#~ msgstr "Yumuşak kırpım" + +#, fuzzy +#~ msgid "Softclip Level" +#~ msgstr "Yumuşak kırpım" + +#~ msgid "Stereo Matrix" +#~ msgstr "Stereo Matris" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (Stereo Öntanımlı)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (Stereo Orta Tarafa)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (Orta Taraftan Stereo)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (Mono Sol Kanal)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (Mono Sağ Kanal)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (Mono İşlem L+R)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (Stereo Kanalları Ters Çevir)" + +#~ msgid "Stereo Mode" +#~ msgstr "Stereo Kipi" + +#~ msgid "Invert Phase" +#~ msgstr "Ters Faz" + +#~ msgid "Side Level" +#~ msgstr "Seviye Tarafı" + +#~ msgid "Side Balance" +#~ msgstr "Denge Tarafı" + +#~ msgid "Middle Level" +#~ msgstr "Orta Seviye" + +#~ msgid "Middle Panorama" +#~ msgstr "Orta Panorama" + +#~ msgid "Output Balance" +#~ msgstr "Çıkış Dengesi" + +#~ msgid "Delay L/R" +#~ msgstr "Gecikme L/R" + +#, fuzzy +#~ msgid "Delay Left Right" +#~ msgstr "Gecikme L/R" + +#~ msgid "Stereo Base" +#~ msgstr "Stereo Taban" + +#~ msgid "Stereo Phase" +#~ msgstr "Stereo Faz" + +#~ msgid "Running" +#~ msgstr "Çalışıyor" + +#~ msgid "Suspended" +#~ msgstr "Askıya alındı" + +#~ msgid "Idle" +#~ msgstr "Boşta" + +#~ msgid "Creating" +#~ msgstr "Oluşturuluyor" + +#~ msgid "Error" +#~ msgstr "Hata" + +#~ msgid "Unknown" +#~ msgstr "Bilinmiyor" + +#~ msgid "channels" +#~ msgstr "kanallar" + +#~ msgid "Output Presets: " +#~ msgstr "Çıkış Ön Ayarları: " + +#~ msgid "Input Presets: " +#~ msgstr "Giriş Ön Ayarları: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "PipeWire uygulamaları için ses efektleri" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "EasyEffects'ten çık. Servis kipinde çalışırken kullanışlıdır." + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "Bir ön ayar yükle. Örnek: easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "EasyEffects’i Sıfırla." + +#~ msgid "Hide the Window." +#~ msgstr "Pencereyi Gizle." + +#~ msgid "Show available presets." +#~ msgstr "Kullanılabilir hazır ayarları göster." + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#, fuzzy +#~ msgid "Impulse File Not Imported" +#~ msgstr "Dürtü Dosyasını İçe Aktar" + +#~ msgid "Import Impulse File" +#~ msgstr "Dürtü Dosyasını İçe Aktar" + +#~ msgid "Open" +#~ msgstr "Aç" + +#~ msgid "Cancel" +#~ msgstr "İptal" + +#~ msgid "Impulse Response" +#~ msgstr "Dürtü Yanıtı" + +#, fuzzy +#~ msgid "Load Impulse" +#~ msgstr "Dürtü Dosyasını İçeri Al" + +#, fuzzy +#~ msgid "Remove Impulse" +#~ msgstr "Dürtü Dosyasını İçeri Al" + +#, fuzzy +#~ msgid "No Impulse File Loaded" +#~ msgstr "Dürtü Dosyasını İçe Aktar" + +#, fuzzy +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "Dürtü Dosyası Yüklenemedi" + +#~ msgid "Recorders" +#~ msgstr "Kaydediciler" + +#~ msgid "Players" +#~ msgstr "Oynatıcılar" + +#, fuzzy +#~ msgid "Effects" +#~ msgstr "EasyEffects" + +#~ msgid "infinity" +#~ msgstr "sonsuzluk" + +#~ msgid "Import APO Preset File" +#~ msgstr "APO Ön Ayar Dosyasını İçe Aktar" + +#~ msgid "APO Presets" +#~ msgstr "APO Ön Ayarları" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "Otomatik Yükleme Ön Ayarını Kaldır" + +#~ msgid "Remove" +#~ msgstr "Kaldır" + +#~ msgid "Output Device" +#~ msgstr "Çıkış Aygıtı" + +#~ msgid "Add" +#~ msgstr "Ekle" + +#~ msgid "Import Preset" +#~ msgstr "Ön Ayarı İçe Aktar" + +#~ msgid "Import Model File" +#~ msgstr "Model Dosyasını İçe Aktar" + +#~ msgid "Bass Enhancer" +#~ msgstr "Bas Yükseltici" + +#, fuzzy +#~ msgid "Bass Loudness" +#~ msgstr "Yüksek Ses" + +#~ msgid "Convolver" +#~ msgstr "Sarsıcı" + +#~ msgid "Crossfeed" +#~ msgstr "Çapraz Besleme" + +#~ msgid "Crystalizer" +#~ msgstr "Kristalleştirici" + +#~ msgid "Deesser" +#~ msgstr "Deesser" + +#~ msgid "Delay" +#~ msgstr "Gecikme" + +#~ msgid "Echo Canceller" +#~ msgstr "Yankı Önleyici" + +#~ msgid "Equalizer" +#~ msgstr "Ekolayzır" + +#~ msgid "Exciter" +#~ msgstr "Uyarıcı" + +#~ msgid "Filter" +#~ msgstr "Süzgeç" + +#~ msgid "Limiter" +#~ msgstr "Sınırlayıcı" + +#~ msgid "Maximizer" +#~ msgstr "Yükseltici" + +#~ msgid "Multiband Compressor" +#~ msgstr "Çoklu Bant Şıkıştırıcı" + +#~ msgid "Multiband Gate" +#~ msgstr "Çoklu Bant Geçitleme" + +#~ msgid "Pitch" +#~ msgstr "Perde" + +#~ msgid "Reverberation" +#~ msgstr "Yankılanma" + +#~ msgid "Noise Reduction" +#~ msgstr "Gürültü Azaltma" + +#~ msgid "Stereo Tools" +#~ msgstr "Stereo Araçları" + +#~ msgid "Average" +#~ msgstr "Ortalama" + +#~ msgid "Failed" +#~ msgstr "Başarısız" + +#~ msgid "Use Default" +#~ msgstr "Öntanımlıyı Kullan" + +#~ msgid "Remove this plugin" +#~ msgstr "Bu eklentiyi kaldır" + +#~ msgid "Import Presets" +#~ msgstr "Önayarları İçe Aktar" + +#~ msgid "Start Service at Login" +#~ msgstr "Oturum Açarken Hizmeti Başlat" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Etkin Model" + +#~ msgid "Add to Blocklist" +#~ msgstr "Kara Listeye Ekle" + +#~ msgid "Blocklist" +#~ msgstr "Kara Liste" + +#~ msgid "Add Plugin" +#~ msgstr "Eklenti Ekle" + +#~ msgid "Speakers" +#~ msgstr "Hoparlörler" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "enabled" +#~ msgstr "etkin" + +#~ msgid "disabled" +#~ msgstr "devre dışı" + +#~ msgid "Plugins" +#~ msgstr "Eklentiler" + +#~ msgid "Format" +#~ msgstr "Biçim" + +#~ msgid "Latency" +#~ msgstr "Gecikme" + +#~ msgid "idle" +#~ msgstr "boşta" + +#~ msgid "Faster" +#~ msgstr "Daha Hızlı" + +#~ msgid "Preserve Formant" +#~ msgstr "Biçimlendiriciyi Koru" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Yardım" + +#~ msgid "Show Spectrum" +#~ msgstr "Spektrumu Göster" + +#~ msgid "Use Custom Color" +#~ msgstr "Özel Renk Kullan" + +#~ msgid "Use Gradient" +#~ msgstr "Geçişli Renk Kullan" + +#~ msgid "Spectrum Color" +#~ msgstr "Spektrum Rengi" + +#~ msgid "Gradient Color" +#~ msgstr "Geçiş Rengi" + +#~ msgid "Spectrum Type" +#~ msgstr "Spektrum Türü" + +#~ msgid "Exponent" +#~ msgstr "Katsayı" + +#~ msgid "Sampling" +#~ msgstr "Örnekleme" + +#~ msgid "Block Size" +#~ msgstr "Blok Boyutu" + +#~ msgid "Pipeline Input" +#~ msgstr "Pipeline Giriş" + +#~ msgid "Buffer" +#~ msgstr "Arabellek" + +#~ msgid "Niceness" +#~ msgstr "Hassaslık" + +#~ msgid "Priority Type" +#~ msgstr "Öncelik Türü" + +#~ msgid "About" +#~ msgstr "Hakkında" + +#~ msgid "Priority" +#~ msgstr "Öncelik" + +#~ msgid "Resampler" +#~ msgstr "Örnekleme" + +#~ msgid "Default Source" +#~ msgstr "Öntanımlı Kaynak" + +#~ msgid "Protocol" +#~ msgstr "Protokol" + +#~ msgid "Default Sample Format" +#~ msgstr "Öntanımlı Örnek Biçimi" + +#~ msgid "Channel Mapping" +#~ msgstr "Kanal Eşleme" + +#~ msgid "File" +#~ msgstr "Dosya" + +#~ msgid "Configuration" +#~ msgstr "Yapılandırma" + +#~ msgid "Resamplers" +#~ msgstr "Örnekleyiciler" + +#~ msgid "Detect Silence" +#~ msgstr "Sessizliği Algıla" + +#~ msgid "Weights" +#~ msgstr "Ağırlık" + +#~ msgid "Limit" +#~ msgstr "Sınır" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Zayıflatma" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Sessiz" + +#~ msgid "Distant Headphones" +#~ msgstr "Uzak Kulaklıklar" + +#~ msgid "Reset Equalizer" +#~ msgstr "Ekolayzır Sıfırla" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Uygula" + +#~ msgid "Dry" +#~ msgstr "Sertlik" + +#~ msgid "S/C Level" +#~ msgstr "S/C Seviye" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Dürtü Yanıt Dosyasını İçeri Aktar" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Dürtü Yanıt Dosyasını Seç" + +#~ msgid "Loudness Range" +#~ msgstr "Yüksek Ses Aralığı" + +#~ msgid "Before" +#~ msgstr "Öncesi" + +#~ msgid "After" +#~ msgstr "Sonrası" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Genişletilmiş Süzgeç" + +#~ msgid "Delay Agnostic" +#~ msgstr "Agnostik Gecikme" + +#~ msgid "Suppresion Level" +#~ msgstr "Bastırma Seviyesi" + +#~ msgid "Low" +#~ msgstr "Düşük" + +#~ msgid "Moderate" +#~ msgstr "Ölçülü" + +#~ msgid "High" +#~ msgstr "Yüksek" + +#~ msgid "Very High" +#~ msgstr "Çok Yüksek" + +#~ msgid "Noise Suppressor" +#~ msgstr "Gürültü Baskılayıcı" + +#~ msgid "Adaptive Digital" +#~ msgstr "Dijital Uyarlamalı" + +#~ msgid "Fixed Digital" +#~ msgstr "Dijital Sabitleyici" + +#~ msgid "Gain Controller" +#~ msgstr "Kazanç Denetleyicisi" + +#~ msgid "Detection Likelihood" +#~ msgstr "Algılama Olasılığı" + +#~ msgid "Very Low" +#~ msgstr "Çok Düşük" + +#~ msgid "Voice Detector" +#~ msgstr "Ses Dedektörü" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Şu anda kullanılan cihaz sisteme takılı olduğunda bu ön ayarı otomatik " +#~ "olarak uygula" + +#~ msgid "Volume" +#~ msgstr "Ses" + +#~ msgid "Sine" +#~ msgstr "Sinüs" + +#~ msgid "Square" +#~ msgstr "Kare" + +#~ msgid "Saw" +#~ msgstr "Kesir" + +#~ msgid "Triangle" +#~ msgstr "Üçgen" + +#~ msgid "Silence" +#~ msgstr "Sessizlik" + +#~ msgid "Pink Noise" +#~ msgstr "Pembe Gürültü" + +#~ msgid "Ticks" +#~ msgstr "İşaretler" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gauss Gürültü" + +#~ msgid "Red Noise" +#~ msgstr "Kırmızı Gürültü" + +#~ msgid "Blue Noise" +#~ msgstr "Mavi Gürültü" + +#~ msgid "Violet Noise" +#~ msgstr "Menekşe Gürültü" + +#~ msgid "Window" +#~ msgstr "Pencere" + +#~ msgid "Measure Noise" +#~ msgstr "Gürültü Ölçümü" + +#~ msgid "Subtract Noise" +#~ msgstr "Gürültü Çıkar" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Sesi ayarla ve efektleri aç/kapat" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Yerleşik ön ayarlara sahip bir ekolayzır içerir" + +#~ msgid "Input Limiter" +#~ msgstr "Giriş Sınırlayıcı" + +#~ msgid "Calibration" +#~ msgstr "Kalibrasyon" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "durdurulmuş" + +#~ msgid "playing" +#~ msgstr "oynatılıyor" diff --git a/po/news/zh_CN.po b/po/news/zh_CN.po new file mode 100644 index 0000000..69664fb --- /dev/null +++ b/po/news/zh_CN.po @@ -0,0 +1,2209 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# eternal , 2020-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-22 16:18+0000\n" +"Last-Translator: Eric \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:4 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "为使用 PipeWire 的应用提供音效" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:8 +msgid "Wellington Wallace" +msgstr "Wellington Wallace" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:10 +msgid "" +"EasyEffects is an advanced audio manipulation tool. It includes an " +"equalizer, limiter, compressor and a reverberation tool, just to mention a " +"few. To complement this there is also a built in spectrum analyzer." +msgstr "" +"EasyEffects 是一款多功能音频调整工具程序。它的功能不仅包括均衡器、限幅器、压" +"缩器和混响工具,还有更多其他工具可共选择。为了使用方便,它还内建有频谱分析" +"仪。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:11 +msgid "" +"EasyEffects is the successor to PulseEffects. EasyEffects only supports " +"PipeWire's audio server. PulseAudio users should instead use PulseEffects." +msgstr "" +"EasyEffects 是 PulseEffects 的后继版本,但它仅支持 PipeWire 的音频服务器。" +"PulseAudio 用户应继续使用 PulseEffects。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:12 +msgid "" +"Because EasyEffects uses the default PipeWire sound server it will work with " +"most, if not all, applications you use. All supported applications are " +"presented in the main window, where each can be enabled individually." +msgstr "" +"由于 EasyEffects 默认使用 PipeWire 音频服务器,这意味着它能与大多数 (但并非全" +"部) 应用程序配合使用。EasyEffects 的主窗口会显示所有它支持的应用程序,而且可" +"以单独管理每款应用程序的音效启用状态。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:13 +msgid "" +"Besides manipulating sound output, EasyEffects is able to apply effects to " +"an input device, such as a microphone. This is, for example, useful in audio " +"recording, but it also works well during voice conversations." +msgstr "" +"除了处理音频输出外,EasyEffects 还可以将效果应用于输入设备,例如麦克风等,以" +"便在录音和语音通话时发挥作用。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:14 +msgid "" +"When EasyEffects is launched it will conveniently remember the configuration " +"used in the last session. It is also possible to save all the current " +"settings as profiles." +msgstr "" +"启动 EasyEffects 时,载入上一个会话中使用的配置。 也可以将所有当前设置另存为" +"配置文件。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:23 +msgid "The main page showing two audio output apps" +msgstr "正在显示两个音频输出应用程序的主页面" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:27 +msgid "The bass enhancer page showing audio controls" +msgstr "低音增强页面显示的音效控件" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:31 +msgid "The convolver page showing audio controls" +msgstr "卷积混响器显示的音频控件" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:39 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:54 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:70 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:86 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:99 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:109 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:131 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:148 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:163 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:178 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:190 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:198 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:216 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:238 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:255 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:265 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:278 +msgid "Features:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:40 +msgid "" +"The bypass state can be saved to the preset file. The reasons why this was " +"done can be seen at issue 1039" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:41 +msgid "" +"The preset autoloading code compatibility with usb devices has been improved." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:42 +msgid "" +"A dialog is shown to the user when a preset fails to load or a preset/" +"impulse file fails to be imported." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:43 +msgid "" +"The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of " +"the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:44 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:60 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:77 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:91 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:101 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:115 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:123 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:137 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:152 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:168 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:180 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:203 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:223 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:241 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:257 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:270 +msgid "Bug fixes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:45 +msgid "" +"EasyEffects should not crash anymore when the user locale is not properly " +"configured." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:46 +msgid "" +"A workaround was implemented in our icon to deal with the lack of proper SVG " +"support in QT." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:47 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:139 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:155 +msgid "Other notes:" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:55 +msgid "" +"When effects are disable to an application we now set its target metadata to " +"null. This will allow the media session manager (wireplumber) to properly " +"move the stream to a new device." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:56 +msgid "" +"A new configuration option was added. It allows EasyEffects to ignore " +"streams whose purpose is to monitor sink devices. This will help to fix some " +"of problems our users were having when using OBS." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:57 +msgid "The code that shows the stream sample format has been improved" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:58 +msgid "" +"The rnnoise library is now optional. This should help package maintainers to " +"build a Debian package. See issue 1000 for more information." +msgstr "" +"rnnoise 库现在是可选的。 这应该有助于软件包维护者构建 Debian 软件包。 有关详" +"细信息,请参阅 Github 存储库中编号为 1000 的 issue。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:59 +msgid "" +"Our logs now show the source code line where the messages are being printed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:61 +msgid "" +"The \"enable effects\" checkbox in our window was not being updated when " +"third party programs like pavucontrol moved the stream away from our virtual " +"devices. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:62 +msgid "" +"Fixed a crash that could happen when the maximum autogain history was " +"changed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:63 +msgid "Avoid crashes when pw-mididump is running" +msgstr "当 pw-mididump 正在运行时避免崩溃" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:71 +msgid "The interface of the pitch plugin was improved" +msgstr "改进了音调插件界面" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:72 +msgid "Our application icon is now compatible with desktops that uses QT" +msgstr "我们的应用图标现已兼容基于QT的桌面环境" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:73 +msgid "" +"Our blocklist code will use the `application.id` tag if the stream sets it" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:74 +msgid "" +"In order to avoid problems with the mouse scroll the entries in the " +"applications list shown in our `Players/Recorders` tab do not show a volume " +"scale anymore. More details about the problem and the solution for it can be " +"found on issue 1211 and issue 1427" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:75 +msgid "" +"When no application is available for display in the `Players/Recorders` a " +"message will be shown to the user" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:76 +msgid "Many translation updates" +msgstr "许多翻译更新" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:78 +msgid "" +"Fixed a bug where EasyEffeects crashed when the number of points displayed " +"in the spectrum was changed while our pipeline was active and the spectrum " +"widget was visible" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:79 +msgid "" +"The pipeline latency value displayed in our window could be wrong in some " +"situations. This was fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:87 +msgid "" +"There is a new setting allowing the user to select an inactivity timeout for " +"the pipeline. When no client is playing to or recording from our devices the " +"filters will be unlinked after the timeout is reached. This is done to make " +"sure we do not waste CPU power processing silence." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:88 +msgid "" +"The autogain plugin now allows the user to select which of the three " +"loudness are used to calculate the geometric mean." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:89 +msgid "" +"The autogain plugin now allows the maximum history to be set and does not " +"use `libebur128` histogram mode anymore. This should avoid the cases where " +"the `Integrated` loudness gets stuck forever in the same value." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:90 +msgid "" +"EasyEffects icon has been updated in a way that should make it visible in QT " +"desktops." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:92 +msgid "" +"The command line option that returns the global bypass state is working " +"again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:100 +msgid "" +"The crossfeed filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:102 +msgid "" +"Fixed a bug that prevented mono microphones from properly working with " +"EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:110 +msgid "Support for the next PipeWire release `0.3.44`" +msgstr "对下一个 PipeWire 发布版本 `0.3.44` 的支持" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:111 +msgid "" +"The autogain filter should deal better with PipeWire's dynamic latency " +"switches. Jumps in volume level should not happen anymore in these " +"situations." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:112 +msgid "" +"We added an option that allows the volume and mute state of our virtual " +"devices to be reset when EasyEffects starts. It should help with the cases " +"were our devices are muted by the audio server for unknown reasons." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:113 +msgid "Better support for computer suspending." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:114 +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:240 +msgid "Updated translations" +msgstr "翻译更新" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:116 +msgid "" +"Fixed a bug where trying to create an autoloading profile without having " +"presets caused the application to crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:124 +msgid "" +"Fixed a bug where setting a equalizer band `quality` to `zero` would lead to " +"an application crash." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:132 +msgid "" +"LibAdwaita is used to create some parts of our window and for handling the " +"switching between dark and light themes." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:133 +msgid "The settings menu has been redesigned using LibAdwaita widgets." +msgstr "设置菜单被重新设计以使用 LibAdwaita 组件。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:134 +msgid "" +"Equalizer APO preset import feature has been improved to apply not only the " +"Bell filter, but also other supported ones (at the moment only the Bandpass " +"filter is not available in LSP plugin)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:135 +msgid "" +"The `Reset All Settings` function in our menu should work in Flatpak now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:136 +msgid "" +"We have a new option that allows the user to disable our menus `autohide`. " +"This may help to workaround some bugs Popover menus currently have on gtk4." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:138 +msgid "" +"More robust parsing to import APO presets saved with comma as thousands " +"separator in central frequency band." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:140 +msgid "" +"The fmt library is a new dependency At least while the c++ compilers do not " +"implement its features. This is expected to happen in the next years." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:141 +msgid "" +"GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +msgstr "不再使用 GTKMM 和 GLIBMM 作为依赖。我们现在直接使用 gtk4。" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:149 +msgid "" +"It is now possible to combine impulse responses in the Convolver interface. " +"A new impulse file is generated and it should be visible in the impulse list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:150 +msgid "" +"Improved `x axis` drawings in our plots. Now the number of labels is " +"adjusted dynamically depending on our window width." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:151 +msgid "" +"The documentation has been updated reflecting the new EasyEffects features. " +"Old references about PulseEffects have been removed. The documentation " +"button has been added in the menu section." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:153 +msgid "" +"When a spinbutton is filled with an out of range value, now it is updated " +"with the lowest/highest value rather than resetting to the previous one." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:154 +msgid "" +"The application window now remembers the maximized state and restores it on " +"the next opening event." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:156 +msgid "The `tbb` library is a new dependency" +msgstr "使用 `tbb` 软件库作为新的依赖" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:164 +msgid "" +"The Limiter and the Multiband Compressor plugins can now use an optional " +"external sidechain." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:165 +msgid "" +"The Autogain plugin now allows the user to select which Loudness is used as " +"reference for the volume correction." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:166 +msgid "" +"The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +"Amplification\" parameter." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:167 +msgid "Optional Cubic Volume can be enabled in General Settings." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:169 +msgid "" +"The Spectrum plugin was supposed to enter passthrough whenever it was not " +"visible, but this was happening only when our window was closed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:170 +msgid "Improved support for Assistive Technology." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:171 +msgid "" +"The probes used in some filters like the Compressor and the Limiter were not " +"being relinked after changing the order of the plugins in the pipeline. It " +"should be working now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:179 +msgid "" +"PipeWire monitor streams are now excluded and removed from the applications " +"list." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:181 +msgid "Hopefully crashes like the one reported at issue 1172 are fixed." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:182 +msgid "Prevented a case in which Spectrum was crashing." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:183 +msgid "" +"Pavucontrol is not added anymore to input applications list on systems with " +"localization different than English." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:191 +msgid "" +"Improved compatibility with WirePlumber. This is needed to run on systems " +"that decided to use it instead of the built-in PipeWire session manager. " +"More information at issue 1144." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:199 +msgid "" +"When trying to add an autoloading profile for a device already in the list " +"its target preset will be updated. This way we can change the profile preset " +"without having to remove and recreating it." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:200 +msgid "" +"The preset autoloading support implementation was redesigned again. It " +"should work on more hardware now. For more information see issue 1051." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:201 +msgid "" +"If the Limiter or the Maximizer are set in the last position of the plugin " +"stack, new plugins are added at the second to last position in order to " +"prevent hardware damage on eventually high output level." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:202 +msgid "" +"Removing an application from the blocklist, its previous enabled state is " +"restored." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:204 +msgid "" +"Sometimes when removing imported models from the noise reduction plugin the " +"current used model was not properly updated. This should be fixed now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:205 +msgid "" +"When editing presets files in an external editor, duplicated entries won't " +"be shown in our presets menu." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:206 +msgid "Now the blocklist is correctly set when switching presets." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:207 +msgid "" +"Now the status of the global bypass button is correctly updated when " +"changing plugin stack." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:208 +msgid "" +"Missing icons on the system should not be shown inside the application info " +"UI (if an application icon could not be shown even if you're sure it's " +"correctly installed, please open an issue)." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:209 +msgid "" +"Some icons not showing in Plasma DE with Breeze icon theme should appear now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:217 +msgid "Updated Chinese translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:218 +msgid "Updated Italian translation." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:219 +msgid "Added support for the compressor parameter `Boost Amount`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:220 +msgid "" +"The multiband compressor plugin now uses the stereo multiband compressor " +"plugin from Linux Studio Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:221 +msgid "" +"The limiter plugin now uses the stereo limiter plugin from Linux Studio " +"Plugins instead of the one from Calf Studio." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:222 +msgid "" +"LV2 filters now are spawned in PipeWire graph only when loaded the first " +"time. Once loaded, they remain connected until EasyEffects shutdown." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:224 +msgid "The echo canceller sampling rate is now properly set." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:225 +msgid "" +"The threshold parameter from the deesser plugin is now saved to the preset " +"file." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:226 +msgid "" +"Improved band splitting for crystalizer with new default intensity values." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:227 +msgid "" +"Depending on the input gain or output gain values the corresponding level " +"bars could not be aligned." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:228 +msgid "" +"When adding more equalizer bands they are set to `Bell` instead of `Off`." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:229 +msgid "" +"Equalizer APO presets loading is now working properly on locales different " +"than C." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:230 +msgid "Improved linking management between port filter nodes in PipeWire." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:231 +msgid "" +"The crystalizer plugin signal amplification was too high before. It should " +"be within more reasonable levels now." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:239 +msgid "" +"Improved the resampler used in the plugins that require one(like the rnnoise " +"plugin)" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:242 +msgid "Setting multiple autoloading presets should be fine now" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:243 +msgid "Transient windows are now properly set for some plugins dialogs" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:244 +msgid "" +"The convolver impulse response menu was improved to workaround an issue " +"where the impulse files was not loaded when only one was available in the " +"menu, see issue 1011" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:245 +msgid "" +"Fixed a bug that could make the pitch plugin to not be properly initialized" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:246 +msgid "The saturation warning should not displace its neighbor widgets anymore" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:247 +msgid "Fixed the locale in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:248 +msgid "Fixed wrong alignment in a few widgets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:256 +msgid "" +"The Loudness plugin is being used again for the reasons described at issue " +"820. This means that is an optional dependency again." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:258 +msgid "" +"Fixed a segmentation fault that happened when optional dependencies were not " +"installed" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:266 +msgid "Improved equalizer interface." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:267 +msgid "" +"Now we use a sidechain LSP compressor that allows the user to select and " +"external source as the sidechain input." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:268 +msgid "We now support the LSP compressor `Boosting` mode." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:269 +msgid "" +"When `split-channels` is enabled in the equalizer the imported APO preset " +"will be applied only to the channel being visualized in the window. This " +"will allow to import different presets for each channel instead of just " +"settings the same values to both." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:271 +msgid "" +"Fixed some segmentation faults that could happen when creating a preset " +"autoloading profile or removing presets" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:279 +msgid "" +"This is one of the biggest releases that I have ever made. The amount of " +"changes is so big that it is hard to talk about everything here." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:280 +msgid "" +"The following are just the most import ones. People interested on the " +"journey that got us here can take a look at issue 904 and issue 874." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:281 +msgid "" +"The application and its repository have been renamed from PulseEffects to " +"`EasyEffects`" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:282 +msgid "gtkmm3 was replaced by gtkmm4" +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:283 +msgid "Gstreamer was replaced by native PipeWire filters." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:284 +msgid "" +"Many features were reimplemented from scratch. The preset autoloading is one " +"example. Another remarkable change will be seen in the plugins selection " +"menu. Now the user can show in the window only the plugins that he/she wants " +"to use." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:285 +msgid "" +"Boost is no longer a dependency. The price paid for that was a little change " +"in our presets structures. With some patience it is possible to edit " +"PulseEffects presets in a text editor and make them work in EasyEffects. " +"Hopefully someone will come up with a script for this in the feature." +msgstr "" + +#: data/com.github.wwmm.easyeffects.metainfo.xml.in:286 +msgid "" +"New libraries are being used and some of the librarires that were optional " +"before are now required" +msgstr "" + +#~ msgid "This release adds the following features:" +#~ msgstr "此版本增加了以下功能:" + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "Debian 软件包。请参考 issue #1000 以了解更多信息。" + +#~ msgid "and #1427" +#~ msgstr "和 #1427" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "有一个新设置允许用户为管道选择不活动超时。当没有客户端正在播放时" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "我们不会浪费 CPU 功率处理静音。" + +#~ msgid "This release adds the following feature:" +#~ msgstr "此版软件新增了以下功能:" + +#~ msgid "Equalizer, Compressor and Other Audio Effects" +#~ msgstr "均衡器, 压缩器和其他音效" + +#~ msgid "limiter;compressor;reverberation;equalizer;autovolume;" +#~ msgstr "限幅器;压缩器;混响;均衡器;自动音量;" + +#~ msgid "\"Presets\"" +#~ msgstr "\"预设\"" + +#~ msgid "Enable" +#~ msgstr "启用" + +#~ msgid "Mute Application" +#~ msgstr "将程序静音" + +#~ msgid "_Reset Settings" +#~ msgstr "重置设置(_R)" + +#~ msgid "_About EasyEffects" +#~ msgstr "关于 EasyEffects (_A)" + +#~ msgid "Presets" +#~ msgstr "预设" + +#~ msgid "Presets Menu" +#~ msgstr "预设菜单" + +#~ msgid "Global Bypass" +#~ msgstr "全局旁路" + +#~ msgid "EasyEffects Window" +#~ msgstr "EasyEffects 窗口" + +#~ msgid "Empty List" +#~ msgstr "空列表" + +#~ msgid "Target" +#~ msgstr "目标" + +#~ msgid "Maximum History" +#~ msgstr "历史记录最大值" + +#~ msgid "Momentary" +#~ msgstr "瞬时" + +#~ msgid "Short-Term" +#~ msgstr "短期" + +#~ msgid "Integrated" +#~ msgstr "综合" + +#~ msgid "Reset History" +#~ msgstr "清除记录" + +#~ msgid "Relative" +#~ msgstr "相对值" + +#~ msgid "Range" +#~ msgstr "范围" + +#~ msgid "Loudness" +#~ msgstr "响度" + +#~ msgid "Output Gain" +#~ msgstr "输出增益" + +#~ msgid "Input" +#~ msgstr "输入" + +#~ msgid "Plugin Input Gain" +#~ msgstr "插件输入增益" + +#~ msgid "Output" +#~ msgstr "输出" + +#~ msgid "Plugin Output Gain" +#~ msgstr "插件输出增益" + +#~ msgid "Reset" +#~ msgstr "重置" + +#~ msgid "Using" +#~ msgstr "使用" + +#~ msgid "Device" +#~ msgstr "设备" + +#~ msgid "Name" +#~ msgstr "名称" + +#~ msgid "Profile" +#~ msgstr "概述" + +#~ msgid "Preset" +#~ msgstr "预设" + +#~ msgid "Remove this autoload preset" +#~ msgstr "删除此自动加载预设" + +#~ msgid "Listen" +#~ msgstr "聆听" + +#~ msgid "Blend Harmonics" +#~ msgstr "谐波注入" + +#~ msgid "3rd" +#~ msgstr "3次" + +#~ msgid "2nd" +#~ msgstr "2次" + +#~ msgid "Amount" +#~ msgstr "程度" + +#~ msgid "Harmonics" +#~ msgstr "谐波" + +#~ msgid "Scope" +#~ msgstr "范围" + +#~ msgid "Floor" +#~ msgstr "下限" + +#~ msgid "Floor Value" +#~ msgstr "下限" + +#~ msgid "Add to Excluded Applications" +#~ msgstr "添加到排除的程序" + +#~ msgid "Excluded Applications List" +#~ msgstr "已排除程序列表" + +#~ msgid "Show Excluded Applications" +#~ msgstr "显示已排除的程序" + +#~ msgid "Compressor" +#~ msgstr "压缩器" + +#~ msgid "Mode" +#~ msgstr "模式" + +#~ msgid "Downward" +#~ msgstr "向下" + +#~ msgid "Upward" +#~ msgstr "向上" + +#~ msgid "Boosting" +#~ msgstr "加强" + +#~ msgid "Compression Mode" +#~ msgstr "压缩模式" + +#~ msgid "Boost Threshold" +#~ msgstr "提升阈值" + +#~ msgid "Boost Amount" +#~ msgstr "Boost 量" + +#~ msgid "Attack" +#~ msgstr "起始时间" + +#~ msgid "Time" +#~ msgstr "时间" + +#~ msgid "Threshold" +#~ msgstr "阈值" + +#~ msgid "Attack Time" +#~ msgstr "起音时间" + +#~ msgid "Attack Threshold" +#~ msgstr "起音阈值" + +#~ msgid "Release" +#~ msgstr "消音时间" + +#~ msgid "Release Time" +#~ msgstr "消音时间" + +#~ msgid "Release Threshold" +#~ msgstr "消音阈值" + +#~ msgid "Ratio" +#~ msgstr "比率" + +#~ msgid "Knee" +#~ msgstr "拐点" + +#~ msgid "Makeup" +#~ msgstr "补偿" + +#~ msgid "Sidechain" +#~ msgstr "侧链" + +#~ msgid "Peak" +#~ msgstr "峰值" + +#~ msgid "RMS" +#~ msgstr "均方根值" + +#~ msgid "Low-Pass" +#~ msgstr "低通" + +#~ msgid "Uniform" +#~ msgstr "均值" + +#~ msgid "Sidechain Mode" +#~ msgstr "侧链模式" + +#~ msgid "Source" +#~ msgstr "源" + +#~ msgid "Middle" +#~ msgstr "中央" + +#~ msgid "Side" +#~ msgstr "侧边" + +#~ msgid "Left" +#~ msgstr "左" + +#~ msgid "Right" +#~ msgstr "右" + +#~ msgid "Sidechain Source" +#~ msgstr "侧链声源" + +#~ msgid "Type" +#~ msgstr "类型" + +#~ msgid "Feed-forward" +#~ msgstr "前馈式" + +#~ msgid "Feed-back" +#~ msgstr "反馈式" + +#~ msgid "Sidechain Type" +#~ msgstr "侧链类型" + +#~ msgid "Input Device" +#~ msgstr "输入设备" + +#~ msgid "PreAmplification" +#~ msgstr "前置放大" + +#~ msgid "Reactivity" +#~ msgstr "响应" + +#~ msgid "Lookahead" +#~ msgstr "预测时间" + +#~ msgid "Sidechain Filters" +#~ msgstr "侧链过滤器" + +#~ msgid "High-Pass" +#~ msgstr "高通滤波器" + +#~ msgid "Frequency" +#~ msgstr "频率" + +#~ msgid "Off" +#~ msgstr "关" + +#~ msgid "Gain" +#~ msgstr "增益" + +#~ msgid "Envelope" +#~ msgstr "波封" + +#~ msgid "Curve" +#~ msgstr "压缩曲线" + +#~ msgid "L" +#~ msgstr "左" + +#~ msgid "Left Channel" +#~ msgstr "左声道" + +#~ msgid "R" +#~ msgstr "右" + +#~ msgid "Right Channel" +#~ msgstr "右声道" + +#~ msgid "Stereo Width" +#~ msgstr "立体声宽度" + +#~ msgid "Spectrum" +#~ msgstr "频谱" + +#~ msgid "Autogain" +#~ msgstr "自动增益" + +#~ msgid "Rate" +#~ msgstr "速率" + +#~ msgid "Samples" +#~ msgstr "样本" + +#~ msgid "Duration" +#~ msgstr "持续时间" + +#~ msgid "Combine Impulse Responses" +#~ msgstr "混合脉冲响应" + +#~ msgid "Output File Name" +#~ msgstr "输出文件名" + +#~ msgid "Import Impulse" +#~ msgstr "导入 Impulse" + +#~ msgid "Search" +#~ msgstr "搜索" + +#~ msgid "Search Impulse File" +#~ msgstr "搜索脉冲文件" + +#~ msgid "Impulse Files List" +#~ msgstr "脉冲文件列表" + +#~ msgid "Default" +#~ msgstr "默认" + +#~ msgid "Cutoff" +#~ msgstr "截止" + +#~ msgid "Feed" +#~ msgstr "反馈" + +#~ msgid "Bypass" +#~ msgstr "旁路" + +#~ msgid "Mute" +#~ msgstr "静音静音" + +#~ msgid "Detection" +#~ msgstr "侦测" + +#~ msgid "Wide" +#~ msgstr "宽频段" + +#~ msgid "Split" +#~ msgstr "分割频段" + +#~ msgid "F1 Split" +#~ msgstr "F1 分离" + +#~ msgid "Frequency 1 Split" +#~ msgstr "频率 1 分割" + +#~ msgid "F2 Peak" +#~ msgstr "F2 峰值" + +#~ msgid "Frequency 2 Peak" +#~ msgstr "频率 2 峰值" + +#~ msgid "F1 Gain" +#~ msgstr "F1 增益" + +#~ msgid "Frequency 1 Gain" +#~ msgstr "频率 1 增益" + +#~ msgid "F2 Level" +#~ msgstr "F2 级别" + +#~ msgid "Frequency 2 Level" +#~ msgstr "频率 2 水平" + +#~ msgid "Frequency 2 Peak Q" +#~ msgstr "频率 2 Peak Q" + +#~ msgid "Detected" +#~ msgstr "已侦测到" + +#~ msgid "Reduction" +#~ msgstr "衰减" + +#~ msgid "Frame Size" +#~ msgstr "Frame 大小" + +#~ msgid "Filter Length" +#~ msgstr "过滤器长度" + +#~ msgid "Bands" +#~ msgstr "频段" + +#~ msgid "Split Channels" +#~ msgstr "分离声道" + +#~ msgid "Flat Response" +#~ msgstr "平滑响应" + +#~ msgid "Calculate Frequencies" +#~ msgstr "频率响应" + +#~ msgid "Load APO Preset" +#~ msgstr "加载 APO 预设" + +#~ msgid "Bell" +#~ msgstr "带通" + +#~ msgid "High Pass" +#~ msgstr "高通" + +#~ msgid "High Shelf" +#~ msgstr "高架" + +#~ msgid "Low Pass" +#~ msgstr "低通" + +#~ msgid "Low Shelf" +#~ msgstr "低架" + +#~ msgid "Notch" +#~ msgstr "带阻" + +#~ msgid "Resonance" +#~ msgstr "共鸣" + +#~ msgid "All Pass" +#~ msgstr "全通" + +#~ msgid "Band Type" +#~ msgstr "频段类型" + +#~ msgid "Band Mode" +#~ msgstr "频段模式" + +#~ msgid "Slope" +#~ msgstr "斜率" + +#~ msgid "Band Slope" +#~ msgstr "频段斜率" + +#~ msgid "Width" +#~ msgstr "宽度" + +#~ msgid "Quality" +#~ msgstr "品质" + +#~ msgid "Solo" +#~ msgstr "独奏" + +#~ msgid "Ceil" +#~ msgstr "上限" + +#~ msgid "API" +#~ msgstr "API" + +#~ msgid "Access" +#~ msgstr "访问" + +#~ msgid "Description" +#~ msgstr "描述" + +#~ msgid "Remove this model file" +#~ msgstr "删除这个模型文件" + +#~ msgid "Inertia" +#~ msgstr "惯性" + +#~ msgid "Gate" +#~ msgstr "门限" + +#, fuzzy +#~ msgid "Release Zone Start" +#~ msgstr "消音时间" + +#~ msgid "Internal" +#~ msgstr "内部" + +#~ msgid "Gating" +#~ msgstr "门控" + +#~ msgid "Oversampling" +#~ msgstr "超采样" + +#~ msgid "Sidechain PreAmplification" +#~ msgstr "侧链前置放大" + +#~ msgid "Boost" +#~ msgstr "增强" + +#~ msgid "Stereo Link" +#~ msgstr "立体声连锁" + +#~ msgid "External Sidechain" +#~ msgstr "外部侧链" + +#~ msgid "Auto Leveling" +#~ msgstr "自动调平" + +#~ msgid "Auto Leveling Attack" +#~ msgstr "自动调平起音" + +#~ msgid "Auto Leveling Release" +#~ msgstr "自动调平消音" + +#, fuzzy +#~ msgid "Auto Leveling Knee" +#~ msgstr "自动调平 Knee" + +#~ msgid "Gain Left" +#~ msgstr "左增益" + +#~ msgid "Gain Right" +#~ msgstr "右增益" + +#~ msgid "Sidechain Left" +#~ msgstr "左边侧链" + +#~ msgid "Sidechain Right" +#~ msgstr "右边侧链" + +#~ msgid "Standard" +#~ msgstr "标准" + +#~ msgid "Flat" +#~ msgstr "平滑" + +#~ msgid "FFT Size" +#~ msgstr "FFT 大小" + +#~ msgid "Output Volume" +#~ msgstr "输出音量" + +#~ msgid "Ceiling" +#~ msgstr "上限" + +#~ msgid "Operating Mode" +#~ msgstr "运作模式" + +#~ msgid "Modern" +#~ msgstr "现代" + +#~ msgid "Sidechain Boost" +#~ msgstr "侧链增强" + +#~ msgid "Bands List" +#~ msgstr "频段列表" + +#~ msgid "Band 1" +#~ msgstr "频段 1" + +#~ msgid "Band 2" +#~ msgstr "频段 2" + +#~ msgid "Band 3" +#~ msgstr "频段 3" + +#~ msgid "Band 4" +#~ msgstr "频段 4" + +#~ msgid "Band 5" +#~ msgstr "频段 5" + +#~ msgid "Band 6" +#~ msgstr "频段 6" + +#~ msgid "Band 7" +#~ msgstr "频段 7" + +#~ msgid "Band 8" +#~ msgstr "频段 8" + +#~ msgid "Band End" +#~ msgstr "频段末尾" + +#~ msgid "Band Compression Mode" +#~ msgstr "频段压缩模式" + +#~ msgid "Band Bypass" +#~ msgstr "频段旁路" + +#~ msgid "Band Sidechain Options" +#~ msgstr "频段侧链选项" + +#~ msgid "Low-Cut Filter" +#~ msgstr "低切滤音" + +#~ msgid "Low-Cut Filter Frequency" +#~ msgstr "低切滤音器频率" + +#~ msgid "High-Cut Filter Frequency" +#~ msgstr "高切滤音器频率" + +#~ msgid "Band Gain" +#~ msgstr "频段增益" + +#~ msgid "Band Curve" +#~ msgstr "频段曲线" + +#~ msgid "Split Mode" +#~ msgstr "分割模式" + +#~ msgid "Split 1/2" +#~ msgstr "分割 1/2" + +#~ msgid "Split Frequency 1" +#~ msgstr "分割频率 1" + +#~ msgid "Split 2/3" +#~ msgstr "分割 2/3" + +#~ msgid "Split Frequency 2" +#~ msgstr "分割频率 2" + +#~ msgid "Split 3/4" +#~ msgstr "分割 3/4" + +#~ msgid "Split Frequency 3" +#~ msgstr "分割频率 3" + +#~ msgid "Sub Band" +#~ msgstr "子频" + +#~ msgid "Band 1 Bypass" +#~ msgstr "频段 1 旁路" + +#~ msgid "Band 1 Detection" +#~ msgstr "频段 1 侦测" + +#~ msgid "Band 1 Attack" +#~ msgstr "频段 1 起音" + +#~ msgid "Band 1 Release" +#~ msgstr "频段 1 消音" + +#~ msgid "Band 1 Threshold" +#~ msgstr "频段 1 阈值" + +#~ msgid "Band 1 Makeup" +#~ msgstr "频段 1 补偿" + +#~ msgid "Max Reduction" +#~ msgstr "衰减" + +#~ msgid "Band 1 Max Reduction" +#~ msgstr "频段 1 最大衰减" + +#~ msgid "Low Band" +#~ msgstr "低频" + +#~ msgid "Band 2 Bypass" +#~ msgstr "频段 2 旁路" + +#~ msgid "Band 2 Detection" +#~ msgstr "频段 2 侦测" + +#~ msgid "Band 2 Attack" +#~ msgstr "频段 2 起音" + +#~ msgid "Band 2 Release" +#~ msgstr "频段 2 消音" + +#~ msgid "Band 2 Threshold" +#~ msgstr "频段 2 阈值" + +#~ msgid "Band 2 Makeup" +#~ msgstr "频段 2 补偿" + +#~ msgid "Band 2 Max Reduction" +#~ msgstr "频段 2 最大衰减" + +#~ msgid "Mid Band" +#~ msgstr "中频" + +#~ msgid "Band 3 Bypass" +#~ msgstr "频段 3 旁路" + +#~ msgid "Band 3 Detection" +#~ msgstr "频段 3 侦测" + +#~ msgid "Band 3 Attack" +#~ msgstr "频段 3 起音" + +#~ msgid "Band 3 Release" +#~ msgstr "频段 3 消音" + +#~ msgid "Band 3 Threshold" +#~ msgstr "频段 3 阈值" + +#~ msgid "Band 3 Makeup" +#~ msgstr "频段 3 补偿" + +#~ msgid "Band 3 Max Reduction" +#~ msgstr "频段 3 最大衰减" + +#~ msgid "High Band" +#~ msgstr "高频" + +#~ msgid "Band 4 Bypass" +#~ msgstr "频段 4 旁路" + +#~ msgid "Band 4 Detection" +#~ msgstr "频段 4 侦测" + +#~ msgid "Band 4 Attack" +#~ msgstr "频段 4 起音" + +#~ msgid "Band 4 Release" +#~ msgstr "频段 4 消音" + +#~ msgid "Band 4 Threshold" +#~ msgstr "频段 4 阈值" + +#~ msgid "Band 4 Makeup" +#~ msgstr "频段 4 补偿" + +#~ msgid "Band 4 Max Reduction" +#~ msgstr "频段 4 最大衰减" + +#~ msgid "General" +#~ msgstr "通用" + +#~ msgid "Use Default Input" +#~ msgstr "使用默认输入" + +#~ msgid "Custom Input Device" +#~ msgstr "自定义输入设备" + +#~ msgid "Use Default Output" +#~ msgstr "使用默认输出" + +#~ msgid "Custom Output Device" +#~ msgstr "自定义输出设备" + +#~ msgid "Server Information" +#~ msgstr "服务器信息" + +#~ msgid "Header Version" +#~ msgstr "头文件版本" + +#~ msgid "Library Version" +#~ msgstr "库文件版本" + +#~ msgid "Sampling Rate" +#~ msgstr "采样率" + +#, fuzzy +#~ msgid "Minimum Quantum" +#~ msgstr "最小 Quantum" + +#~ msgid "Maximum Quantum" +#~ msgstr "最大 Quantum" + +#, fuzzy +#~ msgid "Default Quantum" +#~ msgstr "默认 Quantum" + +#~ msgid "Presets Autoloading" +#~ msgstr "自动加载预设" + +#~ msgid "Output Devices" +#~ msgstr "输出设备" + +#~ msgid "Output Presets" +#~ msgstr "输出预设" + +#~ msgid "Create Association" +#~ msgstr "创建关联" + +#~ msgid "Output Autoloading Presets List" +#~ msgstr "输出自动加载预设列表" + +#~ msgid "Input Devices" +#~ msgstr "输入设备" + +#~ msgid "Input Presets" +#~ msgstr "输入预设" + +#~ msgid "Input Autoloading Presets List" +#~ msgstr "输入自动加载预设列表" + +#~ msgid "Modules" +#~ msgstr "模块" + +#~ msgid "Modules List" +#~ msgstr "模块列表" + +#~ msgid "Clients" +#~ msgstr "客户端" + +#~ msgid "Clients List" +#~ msgstr "客户端列表" + +#~ msgid "Test Signal" +#~ msgstr "测试信号" + +#~ msgid "State" +#~ msgstr "状态" + +#~ msgid "Enabled" +#~ msgstr "已启用" + +#~ msgid "Channels" +#~ msgstr "声道" + +#~ msgid "Both Channels" +#~ msgstr "双声道" + +#~ msgid "Sine Wave" +#~ msgstr "正弦波" + +#~ msgid "White Noise" +#~ msgstr "白噪声" + +#~ msgid "High Speed" +#~ msgstr "高速" + +#~ msgid "High Quality" +#~ msgstr "高品质" + +#~ msgid "Formant" +#~ msgstr "格式" + +#~ msgid "Preserved" +#~ msgstr "保留" + +#, fuzzy +#~ msgid "Crisp" +#~ msgstr "清脆感" + +#~ msgid "Detector" +#~ msgstr "侦测器" + +#~ msgid "Soft" +#~ msgstr "柔化处理" + +#~ msgid "Cents" +#~ msgstr "音分" + +#~ msgid "Semitones" +#~ msgstr "半音" + +#~ msgid "Octaves" +#~ msgstr "八度" + +#~ msgid "Remove this effect" +#~ msgstr "删除这个音效" + +#~ msgid "No Effects" +#~ msgstr "无音效" + +#~ msgid "Search Plugin" +#~ msgstr "搜索插件" + +#~ msgid "Plugins List" +#~ msgstr "插件列表" + +#~ msgid "_General" +#~ msgstr "常规(_G)" + +#~ msgid "Service" +#~ msgstr "服务" + +#~ msgid "Launch Service at System Startup" +#~ msgstr "系统启动时运行服务" + +#~ msgid "Shutdown on Window Closing" +#~ msgstr "窗口关闭时退出" + +#~ msgid "Audio" +#~ msgstr "音频" + +#~ msgid "Process All Output Streams" +#~ msgstr "处理所有输出流" + +#~ msgid "Process All Input Streams" +#~ msgstr "处理所有输入流" + +#~ msgid "Use Dark Theme" +#~ msgstr "使用暗色主题" + +#~ msgid "_Spectrum" +#~ msgstr "频谱(_S)" + +#~ msgid "Shape" +#~ msgstr "形状" + +#~ msgid "Bars" +#~ msgstr "柱状" + +#~ msgid "Lines" +#~ msgstr "线型" + +#~ msgid "Points" +#~ msgstr "数量" + +#~ msgid "Height" +#~ msgstr "高度" + +#~ msgid "Line Width" +#~ msgstr "线宽" + +#~ msgid "Fill" +#~ msgstr "填充频谱" + +#~ msgid "Color" +#~ msgstr "颜色" + +#~ msgid "Frequency Range" +#~ msgstr "频率范围" + +#~ msgid "Minimum" +#~ msgstr "最低" + +#~ msgid "Maximum" +#~ msgstr "最大值" + +#~ msgid "Load" +#~ msgstr "加载" + +#~ msgid "Save current settings to this preset file" +#~ msgstr "将当前设置保存到这个预设文件" + +#~ msgid "Remove this preset file" +#~ msgstr "删除这个预设文件" + +#~ msgid "New Output Preset Name" +#~ msgstr "新输出预设名" + +#~ msgid "Create a new preset" +#~ msgstr "创建新预设" + +#~ msgid "Import a preset" +#~ msgstr "导入预设" + +#~ msgid "Search Output Preset" +#~ msgstr "搜索输出预设" + +#~ msgid "Output Presets List" +#~ msgstr "输出预设列表" + +#~ msgid "New Input Preset Name" +#~ msgstr "新输入预设名" + +#~ msgid "Search Input Preset" +#~ msgstr "搜索输入预设" + +#~ msgid "Input Presets List" +#~ msgstr "输入预设列表" + +#~ msgid "High Frequency Damping" +#~ msgstr "高频阻尼" + +#~ msgid "Room Size" +#~ msgstr "房间大小" + +#~ msgid "Small" +#~ msgstr "小" + +#~ msgid "Medium" +#~ msgstr "中" + +#~ msgid "Large" +#~ msgstr "大" + +#~ msgid "Tunnel" +#~ msgstr "通道" + +#~ msgid "Large/smooth" +#~ msgstr "大/平整" + +#~ msgid "Experimental" +#~ msgstr "实验性" + +#~ msgid "Diffusion" +#~ msgstr "扩散" + +#~ msgid "Pre Delay" +#~ msgstr "前反射延迟" + +#~ msgid "Decay Time" +#~ msgstr "衰减时间" + +#~ msgid "Wet Amount" +#~ msgstr "湿声程度" + +#~ msgid "Wet Level" +#~ msgstr "湿声级别" + +#~ msgid "Dry Amount" +#~ msgstr "干声程度" + +#~ msgid "Dry Level" +#~ msgstr "干声级别" + +#~ msgid "Bass Cut" +#~ msgstr "低切" + +#~ msgid "Treble Cut" +#~ msgstr "高切" + +#~ msgid "Ambience" +#~ msgstr "氛围" + +#~ msgid "Empty Walls" +#~ msgstr "空旷" + +#~ msgid "Room" +#~ msgstr "房间" + +#~ msgid "Large Empty Hall" +#~ msgstr "空荡的大厅" + +#~ msgid "Disco" +#~ msgstr "舞厅" + +#~ msgid "Large Occupied Hall" +#~ msgstr "拥挤的大厅" + +#~ msgid "Import Model" +#~ msgstr "导入模型" + +#~ msgid "Models" +#~ msgstr "模型" + +#~ msgid "Standard Model" +#~ msgstr "标准模型" + +#~ msgid "RNNoise Models List" +#~ msgstr "RNNoise 模型列表" + +#~ msgid "Active Model" +#~ msgstr "激活模型" + +#~ msgid "Standard RNNoise Model" +#~ msgstr "标准 RNNoise 模型" + +#~ msgid "Overview" +#~ msgstr "概览" + +#~ msgid "Open the EasyEffects Manual" +#~ msgstr "打开 EasyEffects 手册" + +#~ msgid "Fullscreen/Restore from fullscreen" +#~ msgstr "全屏/从全屏恢复" + +#~ msgid "Close the Window" +#~ msgstr "关闭窗口" + +#~ msgid "Quit EasyEffects" +#~ msgstr "退出 EasyEffects" + +#~ msgid "Balance" +#~ msgstr "平衡" + +#~ msgid "Input Balance" +#~ msgstr "输出平衡" + +#~ msgid "Softclip" +#~ msgstr "柔化处理" + +#~ msgid "Softclip Level" +#~ msgstr "软削波等级" + +#~ msgid "Stereo Matrix" +#~ msgstr "立体声阵距" + +#~ msgid "LR > LR (Stereo Default)" +#~ msgstr "LR > LR (默认立体声)" + +#~ msgid "LR > MS (Stereo to Mid-Side)" +#~ msgstr "LR > MS (立体声至中-侧)" + +#~ msgid "MS > LR (Mid-Side to Stereo)" +#~ msgstr "MS > LR (中-侧至立体声)" + +#~ msgid "LR > LL (Mono Left Channel)" +#~ msgstr "LR > LL (单声道左)" + +#~ msgid "LR > RR (Mono Right Channel)" +#~ msgstr "LR > RR (单声道右)" + +#~ msgid "LR > L+R (Mono Sum L+R)" +#~ msgstr "LR > L+R (单声道左右合并)" + +#~ msgid "LR > RL (Stereo Flip Channels)" +#~ msgstr "LR > RL (立体声翻转)" + +#~ msgid "Stereo Mode" +#~ msgstr "立体声模式" + +#~ msgid "Invert Phase" +#~ msgstr "反转相位" + +#~ msgid "Side Level" +#~ msgstr "侧边级别" + +#~ msgid "Side Balance" +#~ msgstr "侧边平衡" + +#~ msgid "Middle Level" +#~ msgstr "中置级别" + +#~ msgid "Middle Panorama" +#~ msgstr "中置全景" + +#~ msgid "Output Balance" +#~ msgstr "输出平衡" + +#~ msgid "Delay L/R" +#~ msgstr "延迟 L/R" + +#~ msgid "Delay Left Right" +#~ msgstr "延迟 L/R" + +#~ msgid "Stereo Base" +#~ msgstr "立体声基线" + +#~ msgid "Stereo Phase" +#~ msgstr "立体声相位" + +#~ msgid "Running" +#~ msgstr "正在运行" + +#~ msgid "Suspended" +#~ msgstr "已暂停" + +#~ msgid "Idle" +#~ msgstr "空闲" + +#~ msgid "Creating" +#~ msgstr "创建中" + +#~ msgid "Error" +#~ msgstr "错误" + +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgid "channels" +#~ msgstr "声道" + +#~ msgid "Output Presets: " +#~ msgstr "输出预设: " + +#~ msgid "Input Presets: " +#~ msgstr "输入预设: " + +#~ msgid "Audio effects for PipeWire applications" +#~ msgstr "为使用 PipeWire 的程序提供音效" + +#~ msgid "Quit EasyEffects. Useful when running in service mode." +#~ msgstr "退出 EasyEffects。 在服务模式下运行时很有用。" + +#~ msgid "Load a preset. Example: easyeffects -l music" +#~ msgstr "加载预设。 示例:easyeffects -l music" + +#~ msgid "Reset EasyEffects." +#~ msgstr "重设 EasyEffects。" + +#~ msgid "Hide the Window." +#~ msgstr "隐藏隐藏窗口。" + +#~ msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +#~ msgstr "全局旁路。 1 启用,2 禁用,3 获取状态" + +#~ msgid "Show available presets." +#~ msgstr "显示可用预设。" + +#~ msgid "PipeWire" +#~ msgstr "PipeWire" + +#~ msgid "Impulse File Not Imported" +#~ msgstr "脉冲文件未导入" + +#~ msgid "Import Impulse File" +#~ msgstr "导入 Impulse 文件" + +#~ msgid "Open" +#~ msgstr "打开" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Impulse Response" +#~ msgstr "Impulse 解析" + +#~ msgid "Load Impulse" +#~ msgstr "加载脉冲" + +#~ msgid "Remove Impulse" +#~ msgstr "删除脉冲" + +#~ msgid "No Impulse File Loaded" +#~ msgstr "未加载脉冲文件" + +#~ msgid "Failed To Load The Impulse File" +#~ msgstr "加载脉冲文件失败" + +#~ msgid "Recorders" +#~ msgstr "录音程序" + +#~ msgid "Players" +#~ msgstr "播放器" + +#~ msgid "Effects" +#~ msgstr "音效" + +#~ msgid "infinity" +#~ msgstr "无限" + +#~ msgid "Import APO Preset File" +#~ msgstr "加载 APO 预设文件" + +#~ msgid "APO Presets" +#~ msgstr "APO 预设" + +#~ msgid "Remove Autoloading Preset" +#~ msgstr "删除自动加载预设" + +#~ msgid "Remove" +#~ msgstr "删除" + +#~ msgid "Output Device" +#~ msgstr "输出设备" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Import Preset" +#~ msgstr "导入预设" + +#~ msgid "Import Model File" +#~ msgstr "导入模型文件" + +#~ msgid "RNNoise Models" +#~ msgstr "RNNoise 模型" + +#~ msgid "Bass Enhancer" +#~ msgstr "低音增强" + +#~ msgid "Bass Loudness" +#~ msgstr "低音响度" + +#~ msgid "Convolver" +#~ msgstr "卷积混响器" + +#~ msgid "Crossfeed" +#~ msgstr "交叉反馈" + +#~ msgid "Deesser" +#~ msgstr "齿音消除" + +#~ msgid "Delay" +#~ msgstr "延迟" + +#~ msgid "Echo Canceller" +#~ msgstr "回音消除" + +#~ msgid "Equalizer" +#~ msgstr "均衡器" + +#~ msgid "Exciter" +#~ msgstr "激励器" + +#~ msgid "Filter" +#~ msgstr "过滤器" + +#~ msgid "Limiter" +#~ msgstr "限幅器" + +#~ msgid "Maximizer" +#~ msgstr "放大器" + +#~ msgid "Multiband Compressor" +#~ msgstr "多频段压缩器" + +#~ msgid "Multiband Gate" +#~ msgstr "多频段门限" + +#~ msgid "Pitch" +#~ msgstr "音高" + +#~ msgid "Reverberation" +#~ msgstr "混响" + +#~ msgid "Noise Reduction" +#~ msgstr "降噪" + +#~ msgid "Stereo Tools" +#~ msgstr "立体声工具" + +#~ msgid "Average" +#~ msgstr "平均值" + +#~ msgid "Failed" +#~ msgstr "失败" + +#~ msgid "Use Default" +#~ msgstr "使用默认" + +#~ msgid "Remove this plugin" +#~ msgstr "删除这个插件" + +#~ msgid "Import Presets" +#~ msgstr "加载预设" + +#~ msgid "Start Service at Login" +#~ msgstr "登录时启动服务" + +#~ msgid "Process All Outputs" +#~ msgstr "处理所有输出" + +#~ msgid "Process All Inputs" +#~ msgstr "处理所有输入" + +#~ msgid "Activate" +#~ msgstr "激活" + +#~ msgid "Add to Blocklist" +#~ msgstr "加入黑名单" + +#~ msgid "Blocklist" +#~ msgstr "黑名单" + +#~ msgid "Add Plugin" +#~ msgstr "增加插件" + +#~ msgid "Speakers" +#~ msgstr "扬声器" + +#~ msgid "Microphone" +#~ msgstr "麦克风" + +#~ msgid "enabled" +#~ msgstr "已启用" + +#~ msgid "disabled" +#~ msgstr "已禁用" + +#~ msgid "Plugins" +#~ msgstr "插件" + +#~ msgid "Format" +#~ msgstr "格式" + +#~ msgid "Latency" +#~ msgstr "延迟" + +#~ msgid "idle" +#~ msgstr "空闲" + +#~ msgid "Faster" +#~ msgstr "快速" + +#~ msgid "Preserve Formant" +#~ msgstr "共振保护" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "设置音量和 打开/关闭音效" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "包含预设的均衡器" + +#~ msgid "Input Limiter" +#~ msgstr "输入限幅器" + +#~ msgid "Calibration" +#~ msgstr "校准" + +#~ msgid "Settings" +#~ msgstr "设置" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Low-pass" +#~ msgstr "低通" + +#~ msgid "Player Name" +#~ msgstr "播放器名称" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "最大增益衰减" + +#~ msgid "Run in Background" +#~ msgstr "后台运行" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "自动平滑控制" + +#~ msgid "Limit" +#~ msgstr "限制" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "衰减" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Signal" +#~ msgstr "测试信号" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "程度" + +#~ msgid "Dry" +#~ msgstr "干声" + +#~ msgid "Show Spectrum" +#~ msgstr "显示频谱" + +#~ msgid "Border" +#~ msgstr "显示边界" + +#~ msgid "Spectrum Type" +#~ msgstr "频谱类型" + +#~ msgid "Spectrum Color" +#~ msgstr "光谱颜色" + +#~ msgid "S/C Level" +#~ msgstr "S/C 级别" + +#~ msgid "Phase Correlation" +#~ msgstr "相位相关" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..b24009f --- /dev/null +++ b/po/nl.po @@ -0,0 +1,3205 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2021-07-14 14:30+0200\n" +"Last-Translator: Heimen Stoffels \n" +"Language-Team: \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "PulseEffecten" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Equalizer, compressor en overige audio-effecten" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Audio-effecten voor PipeWire-toepassingen" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limiter;compressor;galm;equalizer;autovolume;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "‘Voorinstellingen’" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Inschakelen" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Toepassingen" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Toepassingen" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +#, fuzzy +msgid "_Shortcuts" +msgstr "Korte termijn" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Standaardwaarden herstellen" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "Over EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Voorinstellingen" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Voorinstellingen" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Globale omzeiling" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "PulseEffecten" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Toepassingen" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Kale muren" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Toepassingen" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Doel" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Maximale versterking" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Kortstondig" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Korte termijn" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Geïntegreerd" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Geometrisch gemiddelde gebruiken" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Geometrisch gemiddelde gebruiken" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Geometrisch gemiddelde gebruiken" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Geometrisch gemiddelde gebruiken" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Geschiedenis wissen" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relatief" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Bereik" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Hardheid" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Uitvoerversterking" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Invoer" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Uitvoerversterking" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Uitvoer" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Uitvoerversterking" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Standaardwaarden" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Gebruikmakend van" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Apparaat" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Naam" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Profiel" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Voorinstelling" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Voorinstellingen automatisch inladen" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Beluisteren" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Harmonieën mengen" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3e" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2e" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Hoeveelheid" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonieën" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Bereik" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Verdieping" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Verdieping" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Toepassingen" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Toepassingen op zwarte lijst tonen op hoofdtabblad" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Toepassingen" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Toepassingen op zwarte lijst tonen op hoofdtabblad" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compressor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modus" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Omlaag" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Omhoog" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Versterking" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Compressiemodus" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Versterkingsdrempelwaarde" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Hoeveelheid" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Aanval" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Duur" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Drempelwaarde" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Aanval" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Drempelwaarde" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Vrijgave" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Vrijgave" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Relatieve vrijgavedrempelwaarde" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Verhouding" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Knie" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Make-up" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Zijketen" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Piek" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Low-pass" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniform" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Zijketen" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Brok" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Midden" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Zijkant" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Links" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Rechts" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Zijketen" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Soort" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Vooruitgeven" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Teruggeven" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Extern" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Zijketen" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Invoerapparaat" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Voorversterking" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reactiviteit" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Vooruitblik" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Zijketenfilters" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "High-pass" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frequentie" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Uit" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "High-pass-filtermodus" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "High-pass-frequentie" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "High-pass-filtermodus" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Versterking" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Stijging" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curve" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Kanaal" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Kanalen splitsen" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Impulsen" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Stereobreedte" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spectrum" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Automatisch versterken" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Snelheid" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Samples" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Duur" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Impulse Response" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Uitvoervolume" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Impulse importeren" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Zoeken" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Impulse-bestand importeren" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Impulse-bestand importeren" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Standaard" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Onderbreking" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Aanvoer" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Omzeiling" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Dempen" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detectie" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Breed" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Splitsen" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "F1-splitsing" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frequentie" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2-piek" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frequentie" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1-versterking" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frequentie" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2-niveau" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frequentie" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2-piek Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frequentie" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Laxiteit" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Gedetecteerd" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Verlaging" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Framegrootte" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filter" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Banden" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Kanalen splitsen" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Platte respons" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Frequenties berekenen" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "APO-voorinstelling laden" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Bel" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "High-pass" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "High-shelf" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Low-pass" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Low-shelf" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Inkeping" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Resonantie" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "All-pass" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Omzeiling" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Banden" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Stijging" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Stijging" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Breedte" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kwaliteit" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Plafond" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Toegang" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Omschrijving" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Verwijder dit voorinstellingsbestand" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct low-pass" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct low-pass" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct low-pass" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct high-pass" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct high-pass" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct high-pass" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct band-pass" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct band-pass" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct band-pass" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct band-reject" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct band-reject" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct band-reject" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Traagheid" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Dosering" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Vrijgave" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Extern" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Dosering" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Oversamplen" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Breed" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Breed" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Lijnbreedte" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Lijnbreedte" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Lijnbreedte" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Geen" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Voorversterking" + +#: data/ui/limiter.ui:373 +#, fuzzy +msgid "Boost" +msgstr "Versterking" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Stereo koppelen" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Zijketen" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Automatische niveau's" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Automatische niveau's" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Automatische niveau's" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Automatische niveau's" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Links" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Rechts" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Zijketen" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Zijketenfilters" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standaard" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Plat" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "FFT-grootte" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Uitvoervolume" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Plafond" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Model importeren" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Modus" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Zijketen" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Banden" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Banden" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Banden" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Compressiemodus" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Omzeiling" + +#: data/ui/multiband_compressor_band.ui:431 +#, fuzzy +msgid "Band Sidechain Options" +msgstr "Zijketenfilters" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Low-pass-filtermodus" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Low-pass-filtermodus" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "High-pass-filter" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "High-pass-filter" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "F1-versterking" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Curve" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Splitsen" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "1/2 splitsen" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frequentie" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "2/3 splitsen" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frequentie" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "3/4 splitsen" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frequentie" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Subband" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Omzeiling" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Versterkingsverlaging" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Aanval" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Vrijgave" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Drempelwaarde" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Make-up" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Verlaging" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Versterkingsverlaging" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Lage band" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Omzeiling" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Versterkingsverlaging" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Aanval" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Vrijgave" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Drempelwaarde" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Make-up" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Versterkingsverlaging" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Middelste band" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Omzeiling" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Versterkingsverlaging" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Aanval" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Vrijgave" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Drempelwaarde" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Make-up" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Versterkingsverlaging" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Hoge band" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Omzeiling" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Versterkingsverlaging" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Aanval" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Vrijgave" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Drempelwaarde" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Banden" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Make-up" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Versterkingsverlaging" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Algemeen" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Standaardinvoer gebruiken" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Invoerapparaat" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Standaarduitvoer gebruiken" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Uitvoerapparaat" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Galm" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Kopversie" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Bibliotheekversie" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Samplesnelheid" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "Minimale quantum" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "Maximale quantum" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "Standaard quantum" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "Voorinstellingen automatisch inladen" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Uitvoerapparaat" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Uitvoer-voorinstellingen: " + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Toewijzing maken" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Uitvoer-voorinstellingen: " + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Invoerapparaat" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Invoer-voorinstellingen: " + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Invoer-voorinstellingen: " + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Modules" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Modules" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clients" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Clients" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Signaal testen" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Status" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Inschakelen" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Aantal kanalen" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Beide" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Aantal kanalen" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Sinusgolf" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Witte ruis" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "High-shelf" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Kwaliteit" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formaat" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Voorinstelling" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Scherpte" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detectie" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Compressie" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Softclip" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Cents" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Halve tonen" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Octaven" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Verwijder dit voorinstellingsbestand" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Invoereffecten" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "PulseEffecten" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +#, fuzzy +msgid "Search Plugin" +msgstr "Zoeken" + +#: data/ui/plugins_menu.ui:74 +#, fuzzy +msgid "Plugins List" +msgstr "Plug-ins" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "Algemeen" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Apparaat" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Alle uitvoerbronnen gebruiken" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Alle invoerbronnen gebruiken" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +#, fuzzy +msgid "Inactivity Timeout" +msgstr "Activiteitstime-out" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Donker thema" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Spectrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Balken" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Lijnen" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Points" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Lengte" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Lijnbreedte" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Opvullen" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +#, fuzzy +msgid "Color" +msgstr "Askleur" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frequentie" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Minimaal" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maximaal" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Laden" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Sla de huidige instellingen op in dit voorinstellingsbestand" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Verwijder dit voorinstellingsbestand" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Uitvoer-voorinstellingen: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Voorinstelling maken" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Voorinstelling importeren" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Uitvoer-voorinstellingen: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Uitvoer-voorinstellingen: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Invoer-voorinstellingen: " + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Invoer-voorinstellingen: " + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Invoer-voorinstellingen: " + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Hoge frequentiedemping" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Kamergrootte" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Klein" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Gemiddeld" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Groot" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Groot/Vloeiend" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimenteel" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Verspreiding" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Vertraging vooraf" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Vervaltijd" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Hoeveelheid" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Doelniveau" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Hoeveelheid" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "F2-niveau" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Bas onderdrukken" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Hoge tonen afsnijden" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Sfeer" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Kale muren" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Kamer" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Grote, lege zaal" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Grote, bezette zaal" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Model importeren" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modellen" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +#, fuzzy +msgid "Standard Model" +msgstr "Standaard RNNoise-model" + +#: data/ui/rnnoise.ui:90 +#, fuzzy +msgid "RNNoise Models List" +msgstr "Standaard RNNoise-model" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Huidig model" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Standaard RNNoise-model" + +#: data/ui/shortcuts.ui:11 +#, fuzzy +msgid "Overview" +msgstr "Apparaat" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Zet PulseEffecten terug op de standaardwaarden." + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +#, fuzzy +msgid "Close the Window" +msgstr "Verberg het venster." + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "Over EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Stereomatrix" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (standaard stereo)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (stereo naar midden-zijkant)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (midden-zijkant naar stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (mono, linkerkanaal)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (mono, rechterkanaal)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (mono, sum L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (stereo, kanalen omwisselen)" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Stereobasis" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Fase omkeren" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Zijniveau" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Zijbalans" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Middelste niveau" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Middelste panorama" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Uitvoerversterking" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "L/R-vertraging" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "L/R-vertraging" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Stereobasis" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Stereofase" + +#: src/app_info.cpp:64 +#, fuzzy +msgid "Running" +msgstr "actief" + +#: src/app_info.cpp:66 +#, fuzzy +msgid "Suspended" +msgstr "onderbroken" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "bezig met aanmaken" + +#: src/app_info.cpp:72 +#, fuzzy +msgid "Error" +msgstr "foutmelding" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Aantal kanalen" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Uitvoer-voorinstellingen: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Invoer-voorinstellingen: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Audio-effecten voor PipeWire-toepassingen" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Sluit PulseEffecten af - nuttig in dienstmodus." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Laad een voorinstelling. Voorbeeld: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Zet PulseEffecten terug op de standaardwaarden." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Verberg het venster." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Globale omzeiling: 1 = inschakelen, 2 = uitschakelen, 3 = status opvragen" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Toon de beschikbare voorinstellingen." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Impulse-bestand importeren" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Impulse-bestand importeren" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Openen" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Annuleren" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Impulse Response" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Impulsen" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Impulse importeren" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Impulse-bestand importeren" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Het Impulse-bestand kan niet worden geladen" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Opname-apparaten" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Spelers" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "PulseEffecten" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "oneindig" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "APO-voorinstellingsbestand importeren" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "APO-voorinstellingen" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Voorinstellingen automatisch inladen" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Verwijderen" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Uitvoerapparaat" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Voorinstelling importeren" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Modelbestand importeren" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Standaard RNNoise-model" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Basversterker" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Hardheid van bas" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolutie" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Kristalliseerder" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Vertraging" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Echo-onderdrukking" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Equalizer" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Exciter" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filter" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limiter" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizer" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Multiband-compressie" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Multiband-dosering" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Toonhoogte" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Galm" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Ruisverlaging" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Stereobediening" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#, fuzzy +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects is een uitgebreid hulpmiddel waarmee u audio zeer gericht " +#~ "kunt afstellen. Het bevat een equalizer, limiter, compressor, " +#~ "galmhulpmiddel en een aantal andere hulpmiddelen. Verder bevat de " +#~ "toepassing een spectrumanalyse-hulpmiddel." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "EasyEffects maakt gebruik van de PipeWire-geluidsserver en werkt daardoor " +#~ "met nagenoeg alle, zo niet alle, toepassingen die u gebruikt. Alle " +#~ "ondersteunde toepassingen worden getoond in het hoofdvenster, waar elke " +#~ "toepassing op elk moment kan worden in- of uitgeschakeld." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Naast het aanpassen van geluidsuitvoer, past EasyEffects ook het geluid " +#~ "van invoerapparaten, zoals microfoons, aan. Dit is onder meer nuttig bij " +#~ "het opnemen van audio of voeren van audiogesprekken." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Na het opstarten toont EasyEffects de in de vorige sessie gebruikte " +#~ "instellingen. Ook kunnen instellingen worden opgeslagen als profielen." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Banden" + +#~ msgid "Average" +#~ msgstr "Gemiddeld" + +#~ msgid "Failed" +#~ msgstr "Mislukt" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Standaardinvoer gebruiken" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Verwijder dit voorinstellingsbestand" + +#~ msgid "Import Presets" +#~ msgstr "Importeer voorinstellingen" + +#~ msgid "Start Service at Login" +#~ msgstr "Automatisch opstarten" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Huidig model" + +#~ msgid "Add to Blocklist" +#~ msgstr "Toevoegen aan zwarte lijst" + +#~ msgid "Blocklist" +#~ msgstr "Zwarte lijst" + +#~ msgid "Add Plugin" +#~ msgstr "Plug-in toevoegen" + +#~ msgid "Speakers" +#~ msgstr "Luidsprekers" + +#~ msgid "Microphone" +#~ msgstr "Microfoon" + +#~ msgid "Plugins" +#~ msgstr "Plug-ins" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Inschakelen" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Inschakelen" + +#~ msgid "Format" +#~ msgstr "Formaat" + +#~ msgid "Latency" +#~ msgstr "Vertraging" + +#~ msgid "idle" +#~ msgstr "inactief" + +#~ msgid "Faster" +#~ msgstr "Sneller" + +#~ msgid "Preserve Formant" +#~ msgstr "Formaat behouden" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Player Name" +#~ msgstr "Spelernaam" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Uitvoerversterking" + +#~ msgid "Channel" +#~ msgstr "Kanaal" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Verdieping" + +#~ msgid "Output Effects" +#~ msgstr "Uitvoereffecten" + +#~ msgid "Settings" +#~ msgstr "Instellingen" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Instellingen" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Duur" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Signaal testen" + +#~ msgid "Signal" +#~ msgstr "Signaal" + +#~ msgid "Show Spectrum" +#~ msgstr "Spectrum tonen" + +#~ msgid "Border" +#~ msgstr "Rand" + +#~ msgid "Spectrum Type" +#~ msgstr "Soort spectrum" + +#~ msgid "Spectrum Color" +#~ msgstr "Spectrumkleur" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Huidig model" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Maximale versterkingsverlaging" + +#~ msgid "Wet" +#~ msgstr "Nat" + +#~ msgid "Dry" +#~ msgstr "Droog" + +#~ msgid "S/C Level" +#~ msgstr "S/C-niveau" + +#~ msgid "Phase Correlation" +#~ msgstr "Fasecorrelatie" + +#~ msgid "Short Term" +#~ msgstr "Korte termijn" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Low-pass" +#~ msgstr "Low-pass" + +#~ msgid "Run in Background" +#~ msgstr "Uitvoeren op achtergrond" + +#~ msgid "ceil" +#~ msgstr "ceil" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Regel het volume en schakel effecten in/uit" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Bevat een equalizer met meegeleverde voorinstellingen" + +#~ msgid "Input Limiter" +#~ msgstr "Invoerbeperking" + +#~ msgid "Calibration" +#~ msgstr "Kalibratie" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatische afvlakking bedienen" + +#~ msgid "Limit" +#~ msgstr "Beperken" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Verzwakking" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Audio-effecten voor PulseAudio-toepassingen" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Audio-effecten voor PulseAudio-toepassingen" + +#~ msgid "Help" +#~ msgstr "Hulp" + +#~ msgid "Calibration Microphone" +#~ msgstr "Microfoon kalibreren" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Pas deze voorinstellingen automatisch toe zodra het huidige apparaat " +#~ "wordt aangekoppeld" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Versie" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Vierkant" + +#~ msgid "Saw" +#~ msgstr "Zaag" + +#~ msgid "Triangle" +#~ msgstr "Driehoek" + +#~ msgid "Silence" +#~ msgstr "Stilte" + +#~ msgid "Pink Noise" +#~ msgstr "Roze ruis" + +#~ msgid "Ticks" +#~ msgstr "Aantal tikken" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussiaanse ruis" + +#~ msgid "Red Noise" +#~ msgstr "Rode ruis" + +#~ msgid "Blue Noise" +#~ msgstr "Blauwe ruis" + +#~ msgid "Violet Noise" +#~ msgstr "Violet-ruis" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Venster" + +#~ msgid "Measure Noise" +#~ msgstr "Ruisniveau meten" + +#~ msgid "Subtract Noise" +#~ msgstr "Ruis verwijderen" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Provided by" +#~ msgstr "Geleverd door" + +#~ msgid "Extended Filter" +#~ msgstr "Uitgebreid filter" + +#~ msgid "Low" +#~ msgstr "Laag" + +#~ msgid "Moderate" +#~ msgstr "Gemiddeld" + +#~ msgid "High" +#~ msgstr "Hoog" + +#~ msgid "Suppression Level" +#~ msgstr "Onderdrukkingsniveau" + +#~ msgid "Delay Agnostic" +#~ msgstr "Agnostische vertraging" + +#~ msgid "Very High" +#~ msgstr "Erg hoog" + +#~ msgid "Noise Suppressor" +#~ msgstr "Ruisonderdrukking" + +#~ msgid "Adaptive Digital" +#~ msgstr "Adaptief digitaal" + +#~ msgid "Fixed Digital" +#~ msgstr "Vastgesteld digitaal" + +#~ msgid "Gain Controller" +#~ msgstr "Versterkingsbediening" + +#~ msgid "Detection Likelihood" +#~ msgstr "Detectieniveau" + +#~ msgid "Very Low" +#~ msgstr "Erg laag" + +#~ msgid "Voice Detector" +#~ msgstr "Stemherkenning" + +#~ msgid "Use Custom Color" +#~ msgstr "Aangepaste kleur gebruiken" + +#~ msgid "Use Gradient" +#~ msgstr "Kleurverloop gebruiken" + +#~ msgid "Gradient Color" +#~ msgstr "Kleurverloop" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importeer een Impulse Response-bestand" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Kies een Impulse Response-bestand" + +#~ msgid "Aggressive Mode" +#~ msgstr "Agressieve modus" + +#~ msgid "Before" +#~ msgstr "Vóór" + +#~ msgid "After" +#~ msgstr "Na" + +#~ msgid "Loudness Range" +#~ msgstr "Bereik van geluidssterkte" + +#~ msgid "Loudness Compensator" +#~ msgstr "Geluidssterkte-compensatie" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "Based on" +#~ msgstr "Gebaseerd op" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Standaard samplesnelheid" + +#~ msgid "Default Source" +#~ msgstr "Standaardbron" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "File" +#~ msgstr "Bestand" + +#~ msgid "Configuration" +#~ msgstr "Instellingen" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Based on a" +#~ msgstr "Gebaseerd op" + +#~ msgid "Low-pass Frequency" +#~ msgstr "Low-pass-frequentie" + +#~ msgid "Advanced" +#~ msgstr "Geavanceerd" + +#~ msgid "Apply APO Preset" +#~ msgstr "APO-voorinstelling toepassen" + +#~ msgid "Detect Silence" +#~ msgstr "Stilte herkennen" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Plug de microfoon opnieuw in om de wijzigingen aan de zwarte lijst toe te " +#~ "passen" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Herstart de speler om de wijzigingen aan de zwarte lijst toe te passen" + +#~ msgid "Muted" +#~ msgstr "Gedempt" + +#~ msgid "Distant Headphones" +#~ msgstr "Koptelefoons veraf" + +#~ msgid "Niceness" +#~ msgstr "Niceness" + +#~ msgid "Priority Type" +#~ msgstr "Soort prioriteit" + +#~ msgid "Priority" +#~ msgstr "Prioriteit" + +#~ msgid "About" +#~ msgstr "Over" + +#~ msgid "Protocol" +#~ msgstr "Protocol" + +#~ msgid "Default Sample Format" +#~ msgstr "Standaard sampleformaat" + +#~ msgid "Channel Mapping" +#~ msgstr "Kanaaltoewijzing" + +#~ msgid "Resamplers" +#~ msgstr "Hersamplers" + +#~ msgid "Pipeline Input" +#~ msgstr "Invoerpijplijn" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Pipeline Output" +#~ msgstr "Uitvoerpijplijn" + +#~ msgid "Block Size" +#~ msgstr "Blokgrootte" + +#~ msgid "Maximum Frequency" +#~ msgstr "Maximale frequentie" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..4cde0ac --- /dev/null +++ b/po/pl.po @@ -0,0 +1,3264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the EasyEffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-18 18:11+0000\n" +"Last-Translator: Krzysztof Marcinek \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Korektor, kompresor i inne efekty audio" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efekty dźwiękowe dla aplikacji PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limiter;kompresor;pogłos;korektor;autogłośność;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +#, fuzzy +msgid "\"Presets\"" +msgstr "Profile" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Włącz" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Programy" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Programy" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Ustawienia" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Profile" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Profile" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Programy" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Gołe ściany" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Programy" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Cel" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Maksymalne wzmocnienie" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +#, fuzzy +msgid "Reset History" +msgstr "Resetuj jakość" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Wzmocnienie wej." + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Wejście" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Wzmocnienie wej." + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Wyjście" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Wzmocnienie wej." + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Zresetuj" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +#, fuzzy +msgid "Device" +msgstr "Urządzenie wejściowe" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nazwa" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Profile" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Kompresor" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Słuchaj" + +# Wpleć/wmieszaj/dodaj +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Wprowadź harmoniczne" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "Trzecie" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "Drugie" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Ilość" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmoniczne" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Zakres" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Podłoga" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Podłoga" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Programy" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Programy" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Programy" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Programy" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Tryb" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +#, fuzzy +msgid "Downward" +msgstr "Dół" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +#, fuzzy +msgid "Compression Mode" +msgstr "Kompresor" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Próg" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Ilość" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Atak" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Czas zaniku" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Próg" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Atak" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Próg" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Wyzwolenie" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Wyzwolenie" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Próg" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Stosunek" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Kolano" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Wzmocnienie" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Łańcuch boczny" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Szczyt" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +#, fuzzy +msgid "Low-Pass" +msgstr "Dolnoprzepustowy" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Równomierny" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Łańcuch boczny" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Źródło" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +#, fuzzy +msgid "Middle" +msgstr "Środek" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Strona" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Lewy" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Prawy" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Łańcuch boczny" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +# Wejście? +#: data/ui/compressor.ui:542 +#, fuzzy +msgid "Feed-back" +msgstr "Feed" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Łańcuch boczny" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Urządzenie wejściowe" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Programy" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reaktywność" + +# Podgląd, albo "patrz w przód", zapas +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Lookahead" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Łańcuch boczny" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Filtr górnoprzepustowy" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Częstotliwość" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +#, fuzzy +msgid "12 dB/oct" +msgstr "12dB/okt dolnoprzepustowy" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +#, fuzzy +msgid "24 dB/oct" +msgstr "24dB/okt dolnoprzepustowy" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +#, fuzzy +msgid "36 dB/oct" +msgstr "36dB/okt dolnoprzepustowy" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Filtr górnoprzepustowy" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Tłumienie wysokich tonów" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Filtr górnoprzepustowy" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Wzmocnienie" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Kanały" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "P" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Kanały" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Płaska odpowiedź" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +#, fuzzy +msgid "Stereo Width" +msgstr "Powiązanie stereo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Widmo" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Autowzmocnienie" + +# Próbkowanie? +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Częstotliwość" + +#: data/ui/convolver.ui:159 +#, fuzzy +msgid "Samples" +msgstr "Resampler" + +#: data/ui/convolver.ui:180 +#, fuzzy +msgid "Duration" +msgstr "Kalibracja" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Płaska odpowiedź" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Wyjście" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +#, fuzzy +msgid "Import Impulse" +msgstr "Importuj profile" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Płaska odpowiedź" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Płaska odpowiedź" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Domyślne" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Odcięcie" + +# Wejście? +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Feed" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Wycisz" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Wykrycie" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Szeroki" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Podzielony" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Podzielony" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Częstotliwość" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Szczyt" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Częstotliwość" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Wzmocnienie" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Częstotliwość" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Poziom" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Częstotliwość" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Szczyt Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Częstotliwość" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Swoboda" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Wykryto" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Redukcja" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Rozmiar ramki" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filtr" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Pasma" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +#, fuzzy +msgid "Split Channels" +msgstr "Kanały" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Płaska odpowiedź" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Przelicz częstotliwości" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "Profile" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +#, fuzzy +msgid "High Pass" +msgstr "Filtr górnoprzepustowy" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Górna wartość" + +#: data/ui/equalizer_band.ui:112 +#, fuzzy +msgid "Low Pass" +msgstr "Dolnoprzepustowy" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Dolna Wartość" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Rezonans" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Dolnoprzepustowy" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Pasma" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Pasma" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Pasma" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Szerokość" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Jakość" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Sufit" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Wykrycie" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Kompresor" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/okt dolnoprzepustowy" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/okt dolnoprzepustowy" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/okt dolnoprzepustowy" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/okt górnoprzepustowy" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/okt górnoprzepustowy" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/okt górnoprzepustowy" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/okt środkowoprzepustowy" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/okt środkowoprzepustowy" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/okt środkowoprzepustowy" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/okt Środkowozaporowy" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/okt środkowozaporowy" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/okt środkowozaporowy" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inercja" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Bramka" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Wyzwolenie" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Nadpróbkowanie" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Szeroki" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Szeroki" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Szerokość" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Szerokość" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Szerokość" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Programy" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Powiązanie stereo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Łańcuch boczny" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Wzmocnienie wej." + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Wzmocnienie wej." + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Wzmocnienie wej." + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Wzmocnienie wej." + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Lewy" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Prawy" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Łańcuch boczny" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Łańcuch boczny" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Rozmiar ramki" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Wyjście" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Sufit" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Importuj profile" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Tryb" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Łańcuch boczny" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Pasma" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Pasma" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Pasma" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Kompresor" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Pasma" + +#: data/ui/multiband_compressor_band.ui:431 +#, fuzzy +msgid "Band Sidechain Options" +msgstr "Łańcuch boczny" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Filtr" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Filtr" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filtr górnoprzepustowy" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Filtr górnoprzepustowy" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Wzmocnienie wej." + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Podzielony" + +#: data/ui/multiband_gate.ui:48 +#, fuzzy +msgid "Split 1/2" +msgstr "Podzielony" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Częstotliwość" + +#: data/ui/multiband_gate.ui:81 +#, fuzzy +msgid "Split 2/3" +msgstr "Podzielony" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Częstotliwość" + +#: data/ui/multiband_gate.ui:114 +#, fuzzy +msgid "Split 3/4" +msgstr "Podzielony" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Częstotliwość" + +#: data/ui/multiband_gate.ui:162 +#, fuzzy +msgid "Sub Band" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Redukcja wzmocnienia" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Wyzwolenie" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Próg" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Wzmocnienie" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Redukcja" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Redukcja wzmocnienia" + +#: data/ui/multiband_gate.ui:522 +#, fuzzy +msgid "Low Band" +msgstr "Dolnoprzepustowy" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Redukcja wzmocnienia" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Wyzwolenie" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Próg" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Wzmocnienie" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Redukcja wzmocnienia" + +#: data/ui/multiband_gate.ui:882 +#, fuzzy +msgid "Mid Band" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Redukcja wzmocnienia" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Wyzwolenie" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Próg" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Wzmocnienie" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Redukcja wzmocnienia" + +#: data/ui/multiband_gate.ui:1242 +#, fuzzy +msgid "High Band" +msgstr "Górnoprzepustowy" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Redukcja wzmocnienia" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Wyzwolenie" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Próg" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Pasma" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Pasma" + +# Uzupełnienie wzmocnienia/ nadrobienie wzmocnienia, wypełnienie +# czasem po prostu Output, więc Wyjście albo Wzmocnienie +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Wzmocnienie" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Redukcja wzmocnienia" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Ogólne" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Użyj domyślnych" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Urządzenie wejściowe" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Użyj domyślnych" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Wzmocnienie wej." + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Pogłos" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Nadpróbkowanie" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Częstotliwość" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Maksymalne wzmocnienie" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Domyślne" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Wzmocnienie wej." + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Profile: " + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Profile: " + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Urządzenie wejściowe" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Importuj profile" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Importuj profile" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +#, fuzzy +msgid "Clients" +msgstr "Centy" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Centy" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Sygnały testowe" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Stan" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Włącz" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanały" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Kanały" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Sinus tabl." + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Biały szum" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Górna wartość" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Jakość" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Format" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Profile" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Czystość" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Wykrycie" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Kompresor" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Centy" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Półtony" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktawy" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Kompresor" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Efekty wejściowe" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "Ogólne" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Urządzenie wejściowe" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Używaj ciemnego motywu" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Widmo" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Punkty" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Wysokość" + +#: data/ui/preferences_spectrum.ui:91 +#, fuzzy +msgid "Line Width" +msgstr "Szerokość" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Częstotliwość" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Maksimum" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maksimum" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Profile: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Utwórz profil" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importuj profile" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Profile: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Profile: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Importuj profile" + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Importuj profile" + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Importuj profile" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Tłumienie wysokich tonów" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Rozmiar pomieszczenia" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Mały" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Średni" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Duży" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Duży/gładki" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experymentalne" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Rozproszenie" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Przedopóźnienie" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Czas zaniku" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Ilość" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Poziom docelowy" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Ilość" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Poziom" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Odcięcie basu" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Odcięcie sopranu" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Otoczenie" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Gołe ściany" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Pokój" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Duża pusta sala" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Duża pełna sala" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Importuj profile" + +#: data/ui/rnnoise.ui:40 +#, fuzzy +msgid "Models" +msgstr "Tryb" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +#, fuzzy +msgid "Active Model" +msgstr "Kompresor" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +#, fuzzy +msgid "Overview" +msgstr "Urządzenie wejściowe" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Poziom" + +#: data/ui/stereo_tools.ui:118 +#, fuzzy +msgid "Stereo Matrix" +msgstr "Powiązanie stereo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Wzmacniacz stereo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Odwróć fazę" + +#: data/ui/stereo_tools.ui:222 +#, fuzzy +msgid "Side Level" +msgstr "Poziom" + +#: data/ui/stereo_tools.ui:258 +#, fuzzy +msgid "Side Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:294 +#, fuzzy +msgid "Middle Level" +msgstr "Środek" + +#: data/ui/stereo_tools.ui:330 +#, fuzzy +msgid "Middle Panorama" +msgstr "Panorama" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Wzmocnienie wej." + +#: data/ui/stereo_tools.ui:419 +#, fuzzy +msgid "Delay L/R" +msgstr "Opóźnienie" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Opóźnienie" + +#: data/ui/stereo_tools.ui:455 +#, fuzzy +msgid "Stereo Base" +msgstr "Wzmacniacz stereo" + +#: data/ui/stereo_tools.ui:491 +#, fuzzy +msgid "Stereo Phase" +msgstr "Wzmacniacz stereo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "Ustawienia" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +#, fuzzy +msgid "Unknown" +msgstr "nieznany" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Kanały" + +#: src/application.cpp:250 +#, fuzzy +msgid "Output Presets: " +msgstr "Presety wyjściowe: " + +#: src/application.cpp:258 +#, fuzzy +msgid "Input Presets: " +msgstr "Presety wejściowe: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Efekty dźwiękowe dla aplikacji PipeWire" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Wyłącz EasyEffects. Przydatne przy pracy w trybie usługi." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Załaduj profil. Przykład: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Resetuj EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Schowaj okno." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Pokaż dostępne profile." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Płaska odpowiedź" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importuj plik Impulse" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Otwórz" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Anuluj" + +#: src/convolver_menu_impulses.cpp:130 +#, fuzzy +msgid "Impulse Response" +msgstr "Płaska odpowiedź" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Wczytaj Impuls" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Usuń Impuls" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Płaska odpowiedź" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Nie można załadować pliku Impulse" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Rejestratory" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Odtwarzacze" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "nieskończoność" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Importuj plik profilu APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Profile APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Wzmocnienie wej." + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Dodaj" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Importuj profile" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "Importuj profile" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Modele RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Wzmacniacz basów" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Głośność basu" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Krystalizator" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "De-Esser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Opóźnienie" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Usuwanie echa" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Korektor" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Exciter" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtr" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limiter" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizer" + +#: src/tags_plugin_name.cpp:42 +#, fuzzy +msgid "Multiband Compressor" +msgstr "Kompresor" + +#: src/tags_plugin_name.cpp:43 +#, fuzzy +msgid "Multiband Gate" +msgstr "Kompresor" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Wysokość" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Pogłos" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Redukcja szumu" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Narzędzia stereo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects to zaawansowane narzędzie do manipulacji dźwiękiem. Zawiera " +#~ "między innymi korektor, limiter, kompresor i narzędzie do generowania " +#~ "pogłosu. Uzupełnieniem tego jest wbudowany analizator widma." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects jest następcą PulseEffects. EasyEffects wspiera jedynie " +#~ "serwer audio PipeWire. Użytkownicy PulseAudio powinni zamiast tego użyć " +#~ "PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Ponieważ EasyEffects używa domyślnego serwera dźwięku PipeWire, będzie on " +#~ "działał z większością, jeśli nie wszystkimi używanymi programami. " +#~ "Wszystkie obsługiwane programy są prezentowane w oknie głównym, gdzie " +#~ "każdy z nich może być aktywowany indywidualnie." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Oprócz sterowania wyjściem dźwiękowym, EasyEffects jest w stanie " +#~ "zastosować efekty do urządzenia wejściowego, takiego jak mikrofon. Jest " +#~ "to przydatne na przykład przy nagrywaniu dźwięku, ale sprawdza się " +#~ "również podczas rozmów głosowych." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Po uruchomieniu programu EasyEffects zapamiętuje on konfigurację użytą " +#~ "podczas ostatniej sesji. Możliwe jest także zapisanie wszystkich " +#~ "bieżących ustawień w postaci profili." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "Główna strona z widocznymi dwoma programami odtwarzającymi dźwięk" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "" +#~ "Strona wzmacniacza basów z widocznymi elementami sterowania dźwiękiem" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "Strona konwolwera przedstawiająca elementy sterujące dźwiękiem" + +#~ msgid "This release adds the following features:" +#~ msgstr "W tym wydaniu dodano następujące funkcje:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Pasma" + +#, fuzzy +#~ msgid "Many translation updates" +#~ msgstr "Uaktualnione tłumaczenia" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Wprowadzono nowe ustawienie umożliwiające użytkownikowi wybranie limitu " +#~ "czasu bezczynności dla odtwarzaczy. Jeśli żaden klient nie odtwarza " +#~ "dźwięku" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "do lub nagrywanych z naszych urządzeń, których filtry zostaną usunięte po " +#~ "upływie limitu czasu. Ma to na celu zapewnienie" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "" +#~ "tego, że nie będziemy marnować mocy procesora na przetwarzanie ciszy." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "Wtyczka automatycznej regulacji wzmocnienia umożliwia teraz użytkownikowi " +#~ "wybór, która z trzech głośności jest używana do obliczania średniej" + +#~ msgid "mean." +#~ msgstr "geometrycznej." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "Wtyczka automatycznej regulacji wzmocnienia umożliwia teraz ustawienie " +#~ "maksymalnej historii i nie używa już trybu histogramu `libebur128`." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Powinno to zapobiec przypadkom, gdy `Zintegrowana` głośność utknie na " +#~ "zawsze w tej samej wartości." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "Ikona EasyEffects została uaktualniona w taki sposób, że powinna być " +#~ "widoczna w pulpitach QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "To wydanie poprawia następujący błąd:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "Opcja wiersza poleceń, która zwraca stan globalnego obejścia, działa " +#~ "ponownie." + +#~ msgid "This release adds the following feature:" +#~ msgstr "W tym wydaniu dodano następującą funkcję:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Filtr krzyżowy powinien lepiej radzić sobie z dynamicznymi przełącznikami " +#~ "opóźnień w systemie PipeWire. W takich sytuacjach nie powinny już " +#~ "występować skoki poziomu głośności." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Naprawiono błąd, który uniemożliwiał prawidłowe działanie mikrofonów " +#~ "monofonicznych z EasyEffects" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Wsparcie dla następnej wersji PipeWire `0.3.44`" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Filtr automatycznej regulacji wzmocnienia powinien lepiej radzić sobie z " +#~ "dynamicznymi przełącznikami opóźnień w systemie PipeWire. W takich " +#~ "sytuacjach nie powinny już występować skoki poziomu głośności." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Dodaliśmy opcję, która umożliwia zresetowanie głośności i stanu " +#~ "wyciszenia naszych urządzeń wirtualnych podczas uruchamiania EasyEffects. " +#~ "Powinno to pomóc w przypadkach, gdy z nieznanych przyczyn nasze " +#~ "urządzenia są wyciszane przez serwer audio." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Lepsza obsługa uśpienia komputera." + +#~ msgid "Updated translations" +#~ msgstr "Uaktualnione tłumaczenia" + +#~ msgid "Average" +#~ msgstr "Średnia" + +#~ msgid "Failed" +#~ msgstr "Niepowodzenie" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Użyj domyślnych" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Kompresor" + +#~ msgid "Import Presets" +#~ msgstr "Importuj profile" + +#~ msgid "Start Service at Login" +#~ msgstr "Uruchom usługę przy logowaniu" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibracja mikrofonu" + +#~ msgid "Plugins" +#~ msgstr "Wtyczki" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Włącz" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Włącz" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Oczekiwanie" + +#~ msgid "Faster" +#~ msgstr "Szybszy" + +#~ msgid "Preserve Formant" +#~ msgstr "Zachowaj formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Wzmocnienie wej." + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Podłoga" + +#~ msgid "Output Effects" +#~ msgstr "Efekty wyjściowe" + +#~ msgid "Settings" +#~ msgstr "Ustawienia" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Ustawienia" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Kalibracja" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Sygnały testowe" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Sygnały testowe" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Widmo" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Widmo" + +#~ msgid "Spectrum Color" +#~ msgstr "Kolor widma" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Redukcja wzmocnienia" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Wysokość" + +#~ msgid "Dry" +#~ msgstr "Suchy" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "Poziom" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Dolnoprzepustowy" + +#~ msgid "Input Limiter" +#~ msgstr "Limiter wejścia" + +#~ msgid "Calibration" +#~ msgstr "Kalibracja" + +#~ msgid "Limit" +#~ msgstr "Limit" + +#~ msgid "ASC" +#~ msgstr "ASC" + +# Tłumienie? +#~ msgid "Attenuation" +#~ msgstr "Tłumienie" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Efekty dźwiękowe dla programu Pulseaudio" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Efekty dźwiękowe dla programu Pulseaudio" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibracja mikrofonu" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Prostokąt" + +#~ msgid "Saw" +#~ msgstr "Piła" + +#~ msgid "Triangle" +#~ msgstr "Trójkąt" + +#~ msgid "Silence" +#~ msgstr "Cisza" + +#~ msgid "Pink Noise" +#~ msgstr "Różowy szum" + +# tyknięcia, kliknięcia +#~ msgid "Ticks" +#~ msgstr "Działki" + +#~ msgid "Gaussian Noise" +#~ msgstr "Szum Gaussa" + +#~ msgid "Red Noise" +#~ msgstr "Szum czerwony" + +#~ msgid "Blue Noise" +#~ msgstr "Szum niebieski" + +#~ msgid "Violet Noise" +#~ msgstr " Szum fioletowy" + +#~ msgid "Volume" +#~ msgstr "Głośność" + +#~ msgid "Window" +#~ msgstr "Okno" + +#~ msgid "Measure Noise" +#~ msgstr "Mierz szum" + +#~ msgid "Subtract Noise" +#~ msgstr "Odejmij szum" + +#~ msgid "Extended Filter" +#~ msgstr "Rozszerzony Filtr" + +#~ msgid "Low" +#~ msgstr "Nisko" + +#~ msgid "Moderate" +#~ msgstr "Średni" + +#~ msgid "High" +#~ msgstr "Wysoki" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Poziom tłumienia" + +#~ msgid "Delay Agnostic" +#~ msgstr "Niezależny od opóźnienia" + +#~ msgid "Very High" +#~ msgstr "Bardzo wysokie" + +#~ msgid "Noise Suppressor" +#~ msgstr "Tłumienie szumu" + +#~ msgid "Adaptive Digital" +#~ msgstr "Cyfrowy adaptacyjny" + +#~ msgid "Fixed Digital" +#~ msgstr "Cyfrowy ustalony" + +#~ msgid "Gain Controller" +#~ msgstr "Kontroler wzmocnienia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Szansa wykrycia" + +#~ msgid "Very Low" +#~ msgstr "Bardzo niskie" + +#~ msgid "Voice Detector" +#~ msgstr "Wykrywanie głosu" + +#~ msgid "Use Custom Color" +#~ msgstr "Użyj własnego koloru" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Kompresor" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Domyślne" + +#, fuzzy +#~ msgid "Default Source" +#~ msgstr "Domyślne" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Kalibracja" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Przelicz częstotliwości" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Ustawienia zaawansowane" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Profile" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Wykrycie" + +#~ msgid "Muted" +#~ msgstr "Wyciszony" + +#~ msgid "Distant Headphones" +#~ msgstr "Odległe słuchawki" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Częstotliwość" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Kanały" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Resampler" + +#~ msgid "Buffer" +#~ msgstr "Bufor" + +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Rozmiar pomieszczenia" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#~ msgid "paused" +#~ msgstr "zatrzymany" + +#~ msgid "playing" +#~ msgstr "gra" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Importuj profile" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Redukcja wzmocnienia" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..40ab654 --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,3466 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# Wellington Wallace Miguel Melo , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: EasyEffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-06-27 22:36+0000\n" +"Last-Translator: Vander \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.13.1-dev\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Equalizador, Compressor e Outros Efeitos de Áudio" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Efeitos de áudio para aplicativos que utilizam PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limitador;compressor;reverberação;equalizador;autovolume;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Predefinições\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Habilitar" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "Excluir" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Silenciar o Aplicativo" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Volume do Aplicativo" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Preferências" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Manual" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Atalhos" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Redefinir as Configurações" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Sobre EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Predefinições" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Menu de Predefinições" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Bypass Global" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Menu Principal" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "Janela do EasyEffects" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Lista de Aplicativos" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "Lista vazia" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "Nenhum aplicativo de áudio disponível" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Alvo" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "Histórico máximo" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "Referência" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentâneo" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Curto Prazo" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrada" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Média Geométrica" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Média Geométrica" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Média Geométrica" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Média Geométrica" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Redefinir Histórico" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativo" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Alcance" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Sonoridade" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Ganho de Saída" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Entrada" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Ganho de Entrada do Plugin" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Saída" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Ganho de Saída do Plugin" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Resetar" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Usando" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Dispositivo" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nome" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Perfil" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Predefinição" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Remover este arquivo de predefinição" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Escutar" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Mistura de Harmônicos" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3°" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2°" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Quantidade" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmônico" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Escopo" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Piso" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Valor do piso" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Ligação" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Nome do Aplicativo" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Mostrar aplicativos bloqueados" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Lista de aplicativos bloqueados" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Mostrar aplicativos bloqueados" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compressor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Modo" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Para Baixo" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Para Cima" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Impulsionando" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Modo de Compressão" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Limiar de Impulso" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Valor do reforço" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Ataque" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Tempo" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Limiar" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Tempo de Ataque" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Limiar de Ataque" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Liberação" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Tempo de liberação" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Limiar de liberação" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Razão" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Joelho" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Ganho de Saída" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Cadeia Lateral" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Pico" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Passa-Baixa" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniforme" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Modo de cadeia lateral" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Fonte" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Meio" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Lado" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Esquerda" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Direita" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Fonte da cadeia lateral" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tipo" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Avanço de alimentação" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Retorno" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +#, fuzzy +msgid "External" +msgstr "Externo" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Tipo de cadeia lateral" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Dispositivo de Entrada" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Pré-Amplificação" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reatividade" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Antevisão" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Filtros da cadeia lateral" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Passa-alta" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frequência" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Desligado" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Filtro Passa-Alta" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Frequências Mais Altas" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Filtro Passa-Alta" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Ganho" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Inclinação" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curva" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Canal esquerdo" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Canal direito" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Resposta de Impulso" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Combinar" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Largura do Stereo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Espectro" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "Escala logarítmica" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Ganho Automático" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Taxa" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Amostras" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Duração" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Resposta de Impulso" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "Primeiro Núcleo" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "Segundo Núcleo" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Saída" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "Nome do Núcleo Combinado" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importar Impulso" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Buscar" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Importar Arquivo com a Resposta de Impulso" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Importar Arquivo com a Resposta de Impulso" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Padrão" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Corte" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Alimentação" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Ignorar" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Mudo" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detecção" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Amplo" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Separado" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "Divisão F1" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frequência" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "Pico F2" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frequência" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "Ganho F1" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frequência" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "Nível F2" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frequência" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Pico Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frequência" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Frouxidão" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detectado" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Redução" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Tamanho do Quadro" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Comprimento do filtro" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "Aplicativos excluídos" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bandas" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +#, fuzzy +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Canais Separados" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Resposta Plana" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calcular Frequências" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "Predefinições" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Sino" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Passa Altas" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "High Shelf" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Passa-Baixa" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Low Shelf" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Rejeita-faixa" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Ressonância" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Passa-Baixa" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Tipo de banda" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Modo Banda" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Inclinação" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Inclinação da banda" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Largura" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Qualidade" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Sozinho" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Teto" + +#: data/ui/exciter.ui:229 +#, fuzzy +msgid "Ceil Value" +msgstr "Valor do Teto" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +#, fuzzy +msgid "Access" +msgstr "Acesso" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Descrição" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Remover este arquivo de predefinição" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Passa-Baixa" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Passa-Baixa" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Passa-Baixa" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Passa-Alta" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Passa-Alta" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Passa-Alta" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Passa-Banda" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Passa-Banda" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Passa-Banda" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Rejeita-Faixa" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Rejeita-Faixa" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct Rejeita-Faixa" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inércia" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Portão" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Tempo de liberação" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Externo" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Gating" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Sobreamostragem" + +#: data/ui/limiter.ui:60 +#, fuzzy +msgid "Dither" +msgstr "Dither" + +#: data/ui/limiter.ui:72 +#, fuzzy +msgid "Herm Thin" +msgstr "Herm Fino" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "Herm Amplo" + +#: data/ui/limiter.ui:74 +#, fuzzy +msgid "Herm Tail" +msgstr "Cauda de Herm" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "Exp Amplo" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "Cauda de Exp" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Linha Fina" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Linha Larga" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "Cauda da Linha" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Nenhuma" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Pré-amplificação de cadeia lateral" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Impulso" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Elo Stereo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Cadeia Lateral Externa" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Ganho Automático" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Ganho Automático" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Ganho Automático" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Ganho Automático" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Esquerda" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Direita" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Cadeia Lateral Esquerda" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Cadeia Lateral Direita" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Padrão" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Plano" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Tamanho do Quadro" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Volume de Saída" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Teto" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Modo operacional" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Clássico" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Moderno" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Impulso de Cadeia Lateral" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Lista de Bandas" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Banda 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Banda 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Banda 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Banda 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Banda 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Banda 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Banda 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Banda 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Início da Banda" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Fim da Banda" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Modo de Compressão" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Ignorar a Banda" + +#: data/ui/multiband_compressor_band.ui:431 +#, fuzzy +msgid "Band Sidechain Options" +msgstr "Cadeia Lateral" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Filtro" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Filtro" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filtro Passa-Alta" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Filtro Passa-Alta" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Ganho de Entrada" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Curva" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Separado" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Disivão 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frequência" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Disivão 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frequência" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Disivão 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frequência" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Banda" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Ignorar" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Redução de Ganho" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Liberação" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Ganho de Saída" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Redução" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Redução de Ganho" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Banda Baixa" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Ignorar" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Redução de Ganho" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Liberação" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Ganho de Saída" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Redução de Ganho" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Banda Média" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Ignorar" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Redução de Ganho" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Liberação" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Ganho de Saída" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Redução de Ganho" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Banda Alta" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Ignorar" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Redução de Ganho" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Ataque" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Liberação" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Limiar" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Bandas" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Ganho de Saída" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Redução de Ganho" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Geral" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Usar Padrão" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Dispositivo de Entrada" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Usar Padrão" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Ganho de Entrada" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Reverberação" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Versão" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Versão" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Amostragem" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Frequência" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Ganho Máximo" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Saída Padrão" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Ganho de Entrada" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Predefinições de Saída" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Lista de Predefinições de Saída" + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Dispositivo de Entrada" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Predefinições de Entrada" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "Lista de Predefinições de Entrada" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Módulos" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Clientes" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Sinais de Teste" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Estado" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Habilitado" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Propriedades" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canais" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Ambos" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Canais" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Forma de onda" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Onda senoidal" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Ruído Branco" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "Alta velocidade" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "Alta qualidade" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "Alta consistência" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formato" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "Deslocado" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Predefinição" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "Transientes" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Clareza" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "Misturado" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "Suave" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detecção" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Compressão" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "Percussivo" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Clipe Macio" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "Estágio" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "Independente" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Centavos" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitons" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oitavas" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Remover este arquivo de predefinição" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "Adicionar efeito" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "Sem efeitos" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Geral" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Dispositivo de Entrada" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Áudio" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Processar Todas as Saídas" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Processar Todas as Entradas" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Estilo" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Usar Tema Escuro" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Espectro" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Forma" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Barras" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Linhas" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Pontos" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Pontos" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Altura" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Largura da Linha" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Preencher" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Cor" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frequência" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Mínimo" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Máximo" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Carregar" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Salvar Configurações atuais para este arquivo de predefinição" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Remover este arquivo de predefinição" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Novo Nome de Predefinição de Saída" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Criar Predefinição" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importar Predefinições" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Pesquisa de Predefinições de Saída" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Lista de Predefinições de Saída" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Novo Nome de Predefinição de Entrada" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Pesquisar Predefinições de Entrada" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Lista de Predefinições de Entrada" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Amortecimento de Alta Frequência" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Tamanho do quarto" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Pequeno" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Médio" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Grande" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Túnel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Grande/Suave" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difusão" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pré Atraso" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Tempo de Decaimento" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Quantidade" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Nível Alvo" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Quantidade" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Nível" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Corte de Grave" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Corte de Agudo" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambiente" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Paredes Vazias" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Quarto" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Grande Salão Vazio" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Discoteca" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Grande Salão Ocupado" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Importar Impulso" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modelos" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +#, fuzzy +msgid "Active Model" +msgstr "Modo Agressivo" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Visão geral" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Abrir o Manual do EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balanço" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Balanço" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Clipe Macio" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Clipe Macio" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matriz Stereo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "ED > ED (Stereo Padrão)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "ED > ML (Stereo para Meio-Lado)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "ML > ED (Meio-Lado para Stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "ED > EE (Canal Esquerdo Mono)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "ED > DD (Canal Direito Mono)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "ED > E+D (Soma Mono E+D)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "ED > DL (Alternar Canais Stereo)" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Base Stereo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inverter Fase" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Nível Lateral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balanço Lateral" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Nível do Meio" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panorama do Meio" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Ganho de Entrada" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Atraso E/D" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Atraso E/D" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Base Stereo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fase Stereo" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "Correndo" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "Suspenso" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Parado" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "Criando" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Erro" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Desconhecido" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Canais" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Predefinições de Saída: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Predefinições de Entrada: " + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Efeitos de Áudio para Programas que Utilizam Pulseaudio" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Sair do EasyEffects. Útil quando executando em modo de serviço." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Carregar uma predefinição. Exemplo: easyeffects -l musica" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Redefinir o EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Mostrar predefinições disponíveis." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Importar Arquivo com a Resposta de Impulso" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importar Arquivo com a Resposta de Impulso" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Abrir" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Cancelar" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Resposta de Impulso" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Resposta de Impulso" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Importar Impulso" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Importar Arquivo com a Resposta de Impulso" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Não Foi Possível Carregar o Arquivo com o Impulso" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Gravadores" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Reprodutores" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "Efeitos" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinito" + +#: src/equalizer_ui.cpp:351 +#, fuzzy +msgid "Import APO Preset File" +msgstr "Importar Predefinições" + +#: src/equalizer_ui.cpp:357 +#, fuzzy +msgid "APO Presets" +msgstr "Predefinições" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Remover este arquivo de predefinição" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Remover" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Ganho de Entrada" + +#: src/plugins_menu.cpp:142 +#, fuzzy +msgid "Add" +msgstr "Adicionar" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Importar Predefinições" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importar Arquivo de Modelo" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "Modelos RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Reforçador de Graves" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Volume do baixo" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolução" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristalizador" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Atraso" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Cancelador de Eco" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Equalizador" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitador" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtro" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limitador" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizador" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compressor Multibandas" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Gate Multibandas" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Altura" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Reverberação" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Redução de Ruído" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Ferramentas Stereo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects é uma ferramenta avançada de edição de áudio. Ele inclui " +#~ "equalizador, limitador, compressor e um plugin de reverberação. Estas " +#~ "ferramentas são complementadas por um analisador de espectro." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects é o sucessor do PulseEffects. EasyEffects suporta apenas o " +#~ "PipeWire como servidor de áudio. Os usuários do PulseAudio devem usar o " +#~ "PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Como o EasyEffects usa o servidor de som PipeWire, ele funcionará com a " +#~ "maioria, se não todos os aplicativos que você usa. Todos os aplicativos " +#~ "suportados são apresentados na janela principal, onde cada um pode ser " +#~ "ativado individualmente." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Além de manipular a saída de som, o EasyEffects é capaz de aplicar " +#~ "efeitos a um dispositivo de entrada, como um microfone. Isso é, por " +#~ "exemplo, útil na gravação de áudio, mas também funciona bem durante " +#~ "conversas de voz." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Quando o EasyEffects for iniciado, ele lembrará convenientemente a " +#~ "configuração usada na última sessão. Também é possível salvar todas as " +#~ "configurações atuais como perfis." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "A página principal mostrando dois aplicativos de saída de áudio" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "A página do aprimoramento de graves mostrando controles de áudio" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "A página de convolução mostrando os controles de áudio" + +#~ msgid "This release adds the following features:" +#~ msgstr "Esta versão adiciona os seguintes recursos:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Este lançamento corrige os seguintes bugs:" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "A interface do plugin de tom foi melhorada" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "" +#~ "O ícone do nosso aplicativo é agora compatível com ambientes que usam QT" + +#~ msgid "" +#~ "Our blocklist code will use the `application.id` tag if the stream sets it" +#~ msgstr "" +#~ "Nosso código de lista de bloqueio usará a tag `application.id` se o fluxo " +#~ "a definir" + +#~ msgid "" +#~ "In order to avoid problems with the mouse scroll the entries in the " +#~ "applications list shown in our `Players/Recorders`" +#~ msgstr "" +#~ "Para evitar problemas com mouse, role as entradas na lista de aplicativos " +#~ "mostrada em nossos `Reprodutores/Gravadores`" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "Tab não mostram mais uma escala de volume. Mais detalhes sobre o problema " +#~ "e a solução para ele podem ser encontrados em #1211" + +#~ msgid "and #1427" +#~ msgstr "e #1427" + +#~ msgid "" +#~ "When no application is available for display in the `Players/Recorders` a " +#~ "message will be shown to the user" +#~ msgstr "" +#~ "Quando nenhum aplicativo estiver disponível para exibição em " +#~ "`Reprodutores/Gravadores` uma mensagem será mostrada ao usuário" + +#~ msgid "Many translation updates" +#~ msgstr "Muitas atualizações de tradução" + +#, fuzzy +#~ msgid "" +#~ "Fixed a bug where EasyEffects crashed when the number of points displayed " +#~ "in the spectrum was changed while" +#~ msgstr "" +#~ "Corrigido um bug em que o EasyEffects travava quando o número de pontos " +#~ "exibidos no espectro era alterado enquanto" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "nosso pipeline estava ativo e o widget de espectro estava visível" + +#~ msgid "" +#~ "The pipeline latency value displayed in our window could be wrong in some " +#~ "situations. This was fixed." +#~ msgstr "" +#~ "O valor de latência do pipeline exibido em nossa janela pode estar errado " +#~ "em algumas situações. Isso foi corrigido." + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Há uma nova configuração que permite ao usuário selecionar um tempo " +#~ "limite de inatividade para o pipeline. Quando nenhum cliente está " +#~ "reproduzindo" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "ou gravando de nossos dispositivos, os filtros serão desconectados após o " +#~ "tempo limite ser alcançado. Isso é feito para garantir que" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "não desperdiçamos energia da CPU processando silêncio." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "O plugin de ganho automático agora permite que o usuário selecione quais " +#~ "dos três tipos de sonoridade são usados para calcular a" + +#~ msgid "mean." +#~ msgstr "média geométrica." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "O plugin de ganho automático agora permite que o histórico máximo seja " +#~ "definido e não usa mais o modo de histograma `libebur128`." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Isto deve evitar os casos em que o ruído \"Integrado\" fica preso para " +#~ "sempre no mesmo valor." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "O ícone do EasyEffects foi atualizado de uma forma que deve torná-lo " +#~ "visível nos desktops QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Esta versão corrige o seguinte bug:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "A opção de linha de comando que retorna o estado de desvio global está " +#~ "funcionando novamente." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Esse lançamento adiciona o seguinte recurso:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "O filtro de alimentação cruzada deve lidar melhor com os interruptores de " +#~ "latência dinâmica PipeWire's. Os saltos no nível de volume não devem mais " +#~ "acontecer nestas situações." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Corrigido um bug que impedia que os microfones mono funcionassem " +#~ "corretamente com o EasyEffects" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Suporte à próxima versão do PipeWire `0.3.44`" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "O filtro de ganho automático deve lidar melhor com as opções de latência " +#~ "dinâmica do PipeWire. Saltos no nível de volume não devem mais acontecer " +#~ "nessas situações." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Adicionamos uma opção que permite os estados de volume e mudo de nossos " +#~ "dispositivos virtuais serem reiniciados quando EasyEffects inicia. Isto " +#~ "deve ajudar nos casos em que nossos dispositivos são silenciados pelo " +#~ "servidor de áudio por razões desconhecidas." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Melhor suporte para suspensão do computador." + +#~ msgid "Updated translations" +#~ msgstr "Traduções atualizadas" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Corrigido um bug em que tentar criar um perfil de carregamento automático " +#~ "sem ter predefinições causava o travamento do aplicativo." + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "Corrigido um bug em que definir uma banda de equalizador `qualidade` para " +#~ "`zero` levaria a uma falha do aplicativo." + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita é usado para criar algumas partes de nossa janela e para lidar " +#~ "com a alternância entre temas claros e escuros." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "O menu de configurações foi redesenhado usando widgets LibAdwaita." + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "O recurso de importação predefinida do equalizador APO foi aprimorado " +#~ "para aplicar não apenas o filtro Bell, mas também outros suportados" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "A função `Redefinir todas as configurações` em nosso menu deve funcionar " +#~ "no Flatpak agora." + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "Temos uma nova opção que permite ao usuário desabilitar nossos menus " +#~ "`auto-ocultar`. Isso pode ajudar a solucionar alguns bugs que os menus " +#~ "popover têm atualmente no gtk4." + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "Análise mais robusta para importar predefinições de APO salvas com " +#~ "vírgula como separador de milhares na banda de frequência central." + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "A biblioteca fmt é uma nova dependência, pelo menos enquanto os " +#~ "compiladores c++ não implementarem seus recursos. A expectativa é que " +#~ "isso aconteça nos próximos anos." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM e GLIBMM não são mais uma dependência. Agora usamos gtk4 " +#~ "diretamente." + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "Agora é possível combinar respostas de impulso na interface Convolução. " +#~ "Um novo arquivo de impulso é gerado e deve estar visível na lista de " +#~ "impulsos." + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "Aprimorados os desenhos de `eixo x` aprimorados em nossas plotagens. " +#~ "Agora o número de rótulos é ajustado dinamicamente dependendo da largura " +#~ "da nossa janela." + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "A documentação foi atualizada refletindo os novos recursos do " +#~ "EasyEffects. Referências antigas sobre PulseEffects foram removidas. O " +#~ "botão de documentação foi adicionado na seção de menu." + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "Quando um botão giratório é preenchido com um valor fora do intervalo, " +#~ "agora ele é atualizado com o valor mais baixo/mais alto em vez de " +#~ "redefinir para o anterior." + +#~ msgid "" +#~ "The application window now remembers the maximized state and restores it " +#~ "on the next opening event." +#~ msgstr "" +#~ "A janela do aplicativo agora lembra o estado maximizado e o restaura no " +#~ "próximo evento de abertura." + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "A biblioteca `tbb` é uma nova dependência" + +#~ msgid "" +#~ "The Limiter and the Multiband Compressor plugins can now use an optional " +#~ "external sidechain." +#~ msgstr "" +#~ "Os plugins limitador e compressor multibanda agora podem usar uma cadeia " +#~ "lateral externa opcional." + +#~ msgid "" +#~ "The Autogain plugin now allows the user to select which Loudness is used " +#~ "as reference for the volume correction." +#~ msgstr "" +#~ "O plugin Ganho Automático agora permite que o usuário selecione qual " +#~ "volume que é utilizado como referência para a correção do volume." + +#~ msgid "Optional Cubic Volume can be enabled in General Settings." +#~ msgstr "O Volume Cúbico opcional pode ser ativado em Configurações Gerais." + +#~ msgid "Prevented a case in which Spectrum was crashing." +#~ msgstr "Impediu um caso em que o Spectrum estava travando." + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "O Pavucontrol não é mais adicionado à lista de aplicativos de entrada em " +#~ "sistemas com localização diferente do inglês." + +#~ msgid "" +#~ "The convolver impulse response menu was improved to workaround an issue " +#~ "where the impulse files was not loaded when only one was available in the " +#~ "menu" +#~ msgstr "" +#~ "O menu de resposta ao impulso de convolução foi aprimorado para " +#~ "solucionar um problema em que os arquivos de impulso não eram carregados " +#~ "quando apenas um estava disponível no menu" + +#~ msgid "Average" +#~ msgstr "Médio" + +#~ msgid "Failed" +#~ msgstr "Falhou" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Usar Padrão" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Remover este arquivo de predefinição" + +#~ msgid "Import Presets" +#~ msgstr "Importar Predefinições" + +#~ msgid "Start Service at Login" +#~ msgstr "Inicializar Serviço no Login" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Modo Agressivo" + +#~ msgid "Add to Blocklist" +#~ msgstr "Adicionar à Lista de Bloqueio" + +#~ msgid "Blocklist" +#~ msgstr "Lista Negra" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Microfone de Calibração" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Habilitar" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Habilitar" + +#~ msgid "Format" +#~ msgstr "Formato" + +#~ msgid "Latency" +#~ msgstr "Latência" + +#~ msgid "Faster" +#~ msgstr "Mais Rápido" + +#~ msgid "Preserve Formant" +#~ msgstr "Preservar Formante" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Ganho de Entrada" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Canais" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Piso" + +#~ msgid "Output Effects" +#~ msgstr "Efeitos de Saída" + +#~ msgid "Settings" +#~ msgstr "Configurações" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Configurações" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Duração" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Sinais de Teste" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Sinais de Teste" + +#~ msgid "Show Spectrum" +#~ msgstr "Mostrar Espectro" + +#~ msgid "Border" +#~ msgstr "Borda" + +#~ msgid "Spectrum Type" +#~ msgstr "Tipo de Espectro" + +#~ msgid "Spectrum Color" +#~ msgstr "Cor do Espectro" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Modo Agressivo" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Redução de Ganho" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Pesos" + +#~ msgid "Dry" +#~ msgstr "Seco" + +#~ msgid "S/C Level" +#~ msgstr "Nível de S/C" + +#~ msgid "Short Term" +#~ msgstr "Curto Prazo" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Passa-Baixa" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Definir o volume e ligar / desligar efeitos" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Inclui um equalizador com predefinições incorporadas" + +#~ msgid "Input Limiter" +#~ msgstr "Limitador de Entrada" + +#~ msgid "Calibration" +#~ msgstr "Calibração" + +#~ msgid "Limit" +#~ msgstr "Limite" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuação" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Efeitos de Áudio para Programas que Utilizam Pulseaudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Efeitos de áudio para programas que Utilizam Pulseaudio" + +#~ msgid "Help" +#~ msgstr "Ajuda" + +#~ msgid "Calibration Microphone" +#~ msgstr "Microfone de Calibração" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Aplique automaticamente esta predefinição sempre que o dispositivo usado " +#~ "atualmente for conectado no sistema" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Versão" + +#~ msgid "Sine" +#~ msgstr "Seno" + +#~ msgid "Square" +#~ msgstr "Quadrada" + +#~ msgid "Saw" +#~ msgstr "Serra" + +#~ msgid "Triangle" +#~ msgstr "Triângulo" + +#~ msgid "Silence" +#~ msgstr "Silencio" + +#~ msgid "Pink Noise" +#~ msgstr "Ruído Rosa" + +#~ msgid "Ticks" +#~ msgstr "Tique-Taque" + +#~ msgid "Gaussian Noise" +#~ msgstr "Ruído Gaussiano" + +#~ msgid "Red Noise" +#~ msgstr "Ruído Vermelho" + +#~ msgid "Blue Noise" +#~ msgstr "Ruído Azul" + +#~ msgid "Violet Noise" +#~ msgstr "Ruído Violeta" + +#~ msgid "Volume" +#~ msgstr "Volume" + +#~ msgid "Window" +#~ msgstr "Janela" + +#~ msgid "Measure Noise" +#~ msgstr "Medir Ruído" + +#~ msgid "Subtract Noise" +#~ msgstr "Subtrair Ruído" + +#~ msgid "Extended Filter" +#~ msgstr "Filtro Estendido" + +#~ msgid "Low" +#~ msgstr "Baixo" + +#~ msgid "Moderate" +#~ msgstr "Moderado" + +#~ msgid "High" +#~ msgstr "Alto" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Nível de Supressão" + +#~ msgid "Delay Agnostic" +#~ msgstr "Atraso Agnóstico" + +#~ msgid "Very High" +#~ msgstr "Muito Alto" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supressor de Ruído" + +#~ msgid "Adaptive Digital" +#~ msgstr "Digital Adaptativo" + +#~ msgid "Fixed Digital" +#~ msgstr "Digital Fixo" + +#~ msgid "Gain Controller" +#~ msgstr "Controlador de Ganho" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilidade de Detecção" + +#~ msgid "Very Low" +#~ msgstr "Muito Baixo" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voz" + +#~ msgid "Use Custom Color" +#~ msgstr "Usar Cor Customizada" + +#~ msgid "Use Gradient" +#~ msgstr "Usar Gradiente" + +#~ msgid "Gradient Color" +#~ msgstr "Cor do Gradiente" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Arquivo da Resposta de Impulso" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Selecione o Arquivo com a Resposta de Impulso" + +#~ msgid "Aggressive Mode" +#~ msgstr "Modo Agressivo" + +#~ msgid "Before" +#~ msgstr "Antes" + +#~ msgid "After" +#~ msgstr "Depois" + +#~ msgid "Loudness Range" +#~ msgstr "Faixa de Sonoridade" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Taxa de Amostragem Padrão" + +#~ msgid "Default Source" +#~ msgstr "Entrada Padrão" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "File" +#~ msgstr "Arquivo" + +#~ msgid "Configuration" +#~ msgstr "Configuração" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Servidor" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Frequências Mais Baixas" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Configurações Avançadas" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Predefinições" + +#~ msgid "Detect Silence" +#~ msgstr "Detectar Silêncio" + +#~ msgid "Muted" +#~ msgstr "Mudo" + +#~ msgid "Distant Headphones" +#~ msgstr "Fones de Ouvido Distantes" + +#~ msgid "Priority Type" +#~ msgstr "Tipo de Prioridade" + +#~ msgid "Niceness" +#~ msgstr "Gentileza" + +#~ msgid "Priority" +#~ msgstr "Prioridade" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frequência" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Frequência" + +#~ msgid "About" +#~ msgstr "Sobre" + +#~ msgid "Protocol" +#~ msgstr "Protocolo" + +#~ msgid "Default Sample Format" +#~ msgstr "Formato de Amostra Padrão" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapeamento de Canal" + +#~ msgid "Resamplers" +#~ msgstr "Resamplers" + +#~ msgid "Pipeline Input" +#~ msgstr "Entrada da Pipeline" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Pipeline Output" +#~ msgstr "Saída da Pipeline" + +#~ msgid "Block Size" +#~ msgstr "Tamanho do Bloco" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#~ msgid "paused" +#~ msgstr "pausado" + +#~ msgid "playing" +#~ msgstr "tocando" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Importar Predefinições" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Redução de Ganho" + +#~ msgid "Exponent" +#~ msgstr "Expoente" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..1299fec --- /dev/null +++ b/po/ro.po @@ -0,0 +1,3117 @@ +# Romanian translation for EasyEffects +# Copyright (C) 2021 +# This file is distributed under the same license as the easyeffects package. +# Andrei Dobrete , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2021-03-02 23:30+0200\n" +"Last-Translator: Andrei Dobrete \n" +"Language-Team: \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && " +"n%100<=19) ? 1 : 2);\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Egalizator, compresor și Alte Efecte Audio" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +#, fuzzy +msgid "Audio Effects for PipeWire Applications" +msgstr "Efecte Audio pentru Aplicații PulseAudio" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "limitator;compresor;reverberație;egalizator;autovolum" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "”Presetări”" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Activează" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplicații" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplicații" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Setări" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Presetări" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Presetări" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Evitare Globală" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "EasyEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Aplicații" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Pereți Goi" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplicații" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Țintă" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Maxim" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Momentar" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Pe Termen Scurt" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrat" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Utilizarea Mijlocului Geometric" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Utilizarea Mijlocului Geometric" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Utilizarea Mijlocului Geometric" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Utilizarea Mijlocului Geometric" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Resetare Istoric" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relativ" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Gamă" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Intensitate" + +#: data/ui/autogain.ui:324 +#, fuzzy +msgid "Output Gain" +msgstr "Output" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Input" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Input Pipeline" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Output" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Output Pipeline" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Resetare" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Nume" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Presetări" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Șterge fișierul de presetări" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Ascultă" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Blend Harmonics" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "Al treilea" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "Al doilea" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Cantitate" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonics" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Scop" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Podea" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Podea" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplicații" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Arată programele din Lista de Blocare în Fila Principală" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Arată programele din Lista de Blocare în Fila Principală" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Arată programele din Lista de Blocare în Fila Principală" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Compresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Mod" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "În Jos" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "În Sus" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Mod de Compresie" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Prag de Boost" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Cantitate" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Atac" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "În Timp Real" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Prag" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Atac" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Prag" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Eliberare" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "În Timp Real" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Prag Relativ de Eliberare" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Raport" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Genunchi" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Compoziție" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Lanț Lateral" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Vârf" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Low-Pass" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Uniform" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Lanț Lateral" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Sursă" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Mijloc" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Parte" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Stânga" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Dreapta" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Lanț Lateral" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Scrie" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Feed-forward" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Feed-back" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Lanț Lateral" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Nivel Input" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Preamplificare" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reactivitate" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Privire Înainte" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Lanț Lateral" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "High Pass" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frecvență" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Oprit" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Mod Filtru High-pass" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Frecvență High-pass" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Mod Filtru Low-pass" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Gain" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Pantă" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Curbă" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Canale" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Despică Canalele" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Răspuns Impuls" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Lățime Stereo" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spectru " + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Auto Gain" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Rată" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Probe" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Durație" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Răspuns Impuls" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importă Impuls" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Importă Fișier Impulse" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Importă Fișier Impulse" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Prestablilt" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Cutoff" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Feed" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Evitare" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Mut" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detectare" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Lat" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Despică" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "F1 Despică" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frecvență" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2 Vârf" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frecvență" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1 Gain" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frecvență" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2 Nivel" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frecvență" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2 Vârf Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frecvență" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Laxitate" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Detectat" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Reducere" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Dimensiune Cadru" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filtru" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Benzi" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Despică Canalele" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Răspuns Plat" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Calculează Frecvențele" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "Presetări APO" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Clopot" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "High Pass" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "High Shelf" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Low Pass" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Low Shelf" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Crestătură" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Rezonanță" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "All Pass" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Scrie" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Mod" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Pantă" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Pantă" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Lățime" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Calitate" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Solo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Tavan" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Detectare" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Șterge fișierul de presetări" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Lowpass" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Lowpass" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Lowpass" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Highpass" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Highpass" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Highpass" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Bandpass" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Bandpass" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Bandpass" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Bandreject" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Bandreject" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18dB/oct Bandreject" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Inerție" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Gate" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "În Timp Real" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Integrat" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Gating" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Supraprelevare" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Lat" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Lat" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Lățime Linie" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Lățime Linie" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Masă Sinusoidală" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Niciunul" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Preamplificare" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Link Stereo" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Lanț Lateral" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Nivelare Automată" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Nivelare Automată" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Nivelare Automată" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Nivelare Automată" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Gain" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Dreapta" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Lanț Lateral" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Lanț Lateral" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standard" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Plat" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Dimensiune FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Output" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Tavan" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Importă Model" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Mod" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Lanț Lateral" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Benzi" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Benzi" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Benzi" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Mod de Compresie" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Evitare" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Mod Filtru Low-pass" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Frecvență Low-pass" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Filtru High Pass" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Frecvență High-pass" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "F1 Gain" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Curbă" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Despică" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Despicare 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frecvență" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Despicare 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frecvență" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Despicare 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frecvență" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Sub Band" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Evitare" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Detectare" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Atac" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Eliberare" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Compoziție" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Reducere" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Reducere" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Low Band" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Evitare" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Detectare" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Atac" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Eliberare" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Compoziție" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Reducere" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Mid Band" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Evitare" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Detectare" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Atac" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Eliberare" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Compoziție" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Reducere" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "High Band" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Evitare" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Detectare" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Atac" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Eliberare" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Prag" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Compoziție" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Reducere" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "General" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Folosește Prestabilit" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Nivel Input" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Folosește Prestabilit" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Reverberație" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Versiune" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Versiune" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Rata de Sample Prestabilită" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Frecvență Minimă" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Gain-ul Maxim" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Sink-ul Prestabilit" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Efecte Output" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Presetări pentru Output:" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Presetări pentru Output:" + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Nivel Input" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Presetări pentru Input:" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Presetări pentru Input:" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Module" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Module" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Clienți" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Clienți" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Semnale de Testare" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Stare" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Activează" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Canale" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Canale" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Masă Sinusoidală" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Zgomot Alb" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "High Shelf" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Calitate" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Format" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Presetări" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Claritate" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detectare" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Compresie" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Softclip" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Cents" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Semitonuri" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Octave" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Șterge fișierul de presetări" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Efecte Input" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "General" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Server" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Procesează Toate Output-urile" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Procesează Toate Input-urile" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +#, fuzzy +msgid "Inactivity Timeout" +msgstr "Expirarea Activității" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Folosește Tema Întunecată" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Spectru " + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Bări " + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Linii" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Puncte" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Înălțime" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Lățime Linie" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Umple" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +#, fuzzy +msgid "Color" +msgstr "Culoare Axă" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frecvență" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Maxim" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maxim" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Încarcă" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Salvează setările curente în acest fișier cu presetări" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Șterge fișierul de presetări" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Presetări pentru Output:" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Creează Presetare" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Importă Presetări" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Presetări pentru Output:" + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Presetări pentru Output:" + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Presetări pentru Input:" + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Presetări pentru Input:" + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Presetări pentru Input:" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Amortizare Frecvențe Înalte" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Dimensiunea Camerei" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Mic" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Mediu" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Mare" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Mare/neted" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimental" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Difuzie" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Pre Întârziere" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Timp Decay" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Cantitate" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Nivelul Țintă" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Cantitate" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "F2 Nivel" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Bass Tăiat" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Treble Tăiat" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ambianță" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Pereți Goi" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Cameră" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Hol Gol Mare" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disco" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Hol Plin Mare" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importă Model" + +#: data/ui/rnnoise.ui:40 +#, fuzzy +msgid "Models" +msgstr "Mod" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +#, fuzzy +msgid "Standard Model" +msgstr "Model Standard RNNoise" + +#: data/ui/rnnoise.ui:90 +#, fuzzy +msgid "RNNoise Models List" +msgstr "Model Standard RNNoise" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Model Activ" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Model Standard RNNoise" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Resetează EasyEffects." + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +#, fuzzy +msgid "Close the Window" +msgstr "Ascunde Fereastra." + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Matrice Stereo" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Prestabilit Stereo)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Stereo către Mijloc)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Mijloc către Stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (Mono Canal Stânga)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Mono Canal Dreapta)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Mono L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Canalele Stereo Inversate)" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Bază Stereo" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Inversează Faza" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Nivel Lateral" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Balans Lateral" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Nivel Mijloc" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Panoramă Mijloc" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Balans" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Întârziere L/R" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Întârziere L/R" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Bază Stereo" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fază Stereo" + +#: src/app_info.cpp:64 +#, fuzzy +msgid "Running" +msgstr "rulează" + +#: src/app_info.cpp:66 +#, fuzzy +msgid "Suspended" +msgstr "suspendat" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "se creează" + +#: src/app_info.cpp:72 +#, fuzzy +msgid "Error" +msgstr "eroare" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Canale" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Presetări pentru Output:" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Presetări pentru Input:" + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Efecte audio pentru aplicații PulseAudio" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" +"Închideți EasyEffects. Folositor când este folosit în modul de serviciu." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Încarcă o presetare. Exemplu: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Resetează EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Ascunde Fereastra." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Ocolire Globală. 1 pentru a activa, 2 pentru a dezactiva și 3 pentru a afla " +"statusul" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Arată presetările valabile." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Importă Fișier Impulse" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Importă Fișier Impulse" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Deschide" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Anulare" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Răspuns Impuls" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Importă Impuls" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Importă Impuls" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Importă Fișier Impulse" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Nu s-a putut Încărca Fișierul Impulse" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +#, fuzzy +msgid "Recorders" +msgstr "Bordură" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "infinit" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Importă Fișierul de Presetare APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Presetări APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Șterge fișierul de presetări" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Efecte Output" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Importă Presetări" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importă Fișier de Model" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Model Standard RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Amplificator Bass" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Intensitate" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Convolver" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Crossfeed" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Cristalizator" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Întârziere" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Anulator de Ecou" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Egalizator" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Excitator" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filtru" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Limitator" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Maximizator" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Compresor Multiband" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Multiband Gate" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Pitch" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Reverberație" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Reducere Zgomot" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Unelte Stereo" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#, fuzzy +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects este un set avansat de unelte pentru manipularea audio. " +#~ "Numind doar câteva din uneltele din acesta, sunt incluse un egalizator, " +#~ "limitator, compresor și o unealtă pentru reverberație." + +#, fuzzy +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Pentru că EasyEffects utilizează serverul de sunet prestabilit " +#~ "PulseAudio, acesta va funcționa cu majoritatea, dacă nu cumva chiar toate " +#~ "programele pe care le folosiți. Toate programele suportate sunt " +#~ "prezentate în fereastra principală, unde fiecare poate fi activată " +#~ "individual." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Pe lângă faptul că EasyEffects poate manipula output-ul de sunet, se " +#~ "poate folosi și pentru a aplica efecte pe un dispozitiv de input, ca un " +#~ "microfon. Acest lucru este util, spre exemplu, în înregistrarea audio, " +#~ "dar funcționează bine și în timpul conversațiilor voce." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Când EasyEffects este pornit, acesta va reține configurația din sesiunea " +#~ "anterioară. Este de asemenea posibil să salvați setările curente ca și " +#~ "profile." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Benzi" + +#~ msgid "Average" +#~ msgstr "În Medie" + +#~ msgid "Failed" +#~ msgstr "A Eșuat" + +#~ msgid "Use Default" +#~ msgstr "Folosește Prestabilit" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Șterge fișierul de presetări" + +#~ msgid "Import Presets" +#~ msgstr "Importă Presetări" + +#~ msgid "Start Service at Login" +#~ msgstr "Începe Serviciul la Login" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Model Activ" + +#~ msgid "Add to Blocklist" +#~ msgstr "Adaugă la Lista de Blocare" + +#~ msgid "Blocklist" +#~ msgstr "Lista de Blocare" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Calibrare Microfon" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Activează" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Activează" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latență" + +#~ msgid "idle" +#~ msgstr "inactiv" + +#~ msgid "Faster" +#~ msgstr "Mai Repede " + +#~ msgid "Preserve Formant" +#~ msgstr "Păstrează Formant" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Setează volumul și pornește/oprește efectele" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Include un egalizator cu presetări încorporate." + +#~ msgid "Input Limiter" +#~ msgstr "Limitator de Input" + +#~ msgid "Calibration" +#~ msgstr "Calibrare" + +#~ msgid "Help" +#~ msgstr "Ajutor" + +#~ msgid "Based on" +#~ msgstr "Bazat pe" + +#~ msgid "Detect Silence" +#~ msgstr "Detectează Tăcerea" + +#~ msgid "Weights" +#~ msgstr "Greutăți" + +#~ msgid "Provided by" +#~ msgstr "Furnizat de" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Reconectați microfonul pentru a aplica noile schimbări la Lista de Blocare" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Reporniți playerul pentru a aplica schimbările noi la Lista de Blocare" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Pătrat" + +#~ msgid "Saw" +#~ msgstr "Ferăstrău" + +#~ msgid "Triangle" +#~ msgstr "Triunghi" + +#~ msgid "Silence" +#~ msgstr "Liniște" + +#~ msgid "Pink Noise" +#~ msgstr "Zgomot Roz" + +#~ msgid "Ticks" +#~ msgstr "Ticăituri" + +#~ msgid "Gaussian Noise" +#~ msgstr "Zgomot Gaussian" + +#~ msgid "Red Noise" +#~ msgstr "Zgomot Roșu" + +#~ msgid "Blue Noise" +#~ msgstr "Zgomot Albastru" + +#~ msgid "Violet Noise" +#~ msgstr "Zgomot Violet" + +#~ msgid "Volume" +#~ msgstr "Volum" + +#~ msgid "Window" +#~ msgstr "Fereastră" + +#~ msgid "Measure Noise" +#~ msgstr "Măsoară Zgomotul" + +#~ msgid "Subtract Noise" +#~ msgstr "Scade Zgomotul" + +#~ msgid "Advanced" +#~ msgstr "Avansat" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importă Fișier de Răspuns Impuls" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Selectează Fișierul de Răspuns Impuls" + +#~ msgid "Aggressive Mode" +#~ msgstr "Mod Agresiv" + +#~ msgid "Before" +#~ msgstr "Înainte" + +#~ msgid "After" +#~ msgstr "După" + +#~ msgid "Loudness Range" +#~ msgstr "Gama de Sunet" + +#~ msgid "Apply APO Preset" +#~ msgstr "Aplică Presetare APO" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "Apply" +#~ msgstr "Aplică" + +#~ msgid "Muted" +#~ msgstr "Mut" + +#~ msgid "Distant Headphones" +#~ msgstr "Căști Departe" + +#~ msgid "Niceness" +#~ msgstr "Niceness" + +#~ msgid "Priority Type" +#~ msgstr "Tipul Priorității" + +#~ msgid "Priority" +#~ msgstr "Prioritate" + +#~ msgid "About" +#~ msgstr "Despre" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Reducere Maximă a Gain-ului" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Control Automatic de Smoothing" + +#~ msgid "Limit" +#~ msgstr "Limită" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Atenuare" + +#~ msgid "Loudness Compensator" +#~ msgstr "Compensator de Intensitate" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Gain Reduction" +#~ msgstr "Reducere Gain" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Aplică automat această presetare oricând dispozitivul folosit acum este " +#~ "conectat la sistem" + +#~ msgid "Default Source" +#~ msgstr "Sursa Prestabilită" + +#~ msgid "Protocol" +#~ msgstr "Protocol" + +#~ msgid "Default Sample Format" +#~ msgstr "Formatul de Sample Prestabilit" + +#~ msgid "Channel Mapping" +#~ msgstr "Mapping-ul Canalelor" + +#~ msgid "File" +#~ msgstr "Fișier" + +#~ msgid "Configuration" +#~ msgstr "Configurare" + +#~ msgid "Resamplers" +#~ msgstr "Resampleri" + +#~ msgid "Buffer" +#~ msgstr "Buffer" + +#~ msgid "Block Size" +#~ msgstr "Dimensiune Bloc" + +#~ msgid "Dry" +#~ msgstr "Uscat" + +#~ msgid "Show Spectrum" +#~ msgstr "Arată Spectrul" + +#~ msgid "Use Custom Color" +#~ msgstr "Folosește Culoare Personalizată" + +#~ msgid "Use Gradient" +#~ msgstr "Folosește Gradient" + +#~ msgid "Sampling" +#~ msgstr "Sampling" + +#~ msgid "Maximum Frequency" +#~ msgstr "Frecvență Maximă" + +#~ msgid "Spectrum Type" +#~ msgstr "Tip Spectru" + +#~ msgid "Spectrum Color" +#~ msgstr "Culoare Spectru" + +#~ msgid "Gradient Color" +#~ msgstr "Culoare Gradient" + +#~ msgid "S/C Level" +#~ msgstr "Nivel S/C" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Extended Filter" +#~ msgstr "Filtru Extins" + +#~ msgid "Low" +#~ msgstr "Jos" + +#~ msgid "Moderate" +#~ msgstr "Moderat" + +#~ msgid "High" +#~ msgstr "Înalt" + +#~ msgid "Suppression Level" +#~ msgstr "Nivel de Suprimare" + +#~ msgid "Delay Agnostic" +#~ msgstr "Întârziere Agnostică" + +#~ msgid "Very High" +#~ msgstr "Foarte Înalt" + +#~ msgid "Noise Suppressor" +#~ msgstr "Supresor de Zgomot" + +#~ msgid "Adaptive Digital" +#~ msgstr "Digital Adaptiv" + +#~ msgid "Fixed Digital" +#~ msgstr "Digital Fix" + +#~ msgid "Gain Controller" +#~ msgstr "Controlor de Gain" + +#~ msgid "Detection Likelihood" +#~ msgstr "Probabilitatea Detecției" + +#~ msgid "Very Low" +#~ msgstr "Foarte Jos" + +#~ msgid "Voice Detector" +#~ msgstr "Detector de Voce" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..38d13ea --- /dev/null +++ b/po/ru.po @@ -0,0 +1,3670 @@ +# EasyEffects Russian translation +# This file is distributed under the same license as the EasyEffects package. +# ⓒ Mikhail Novosyolov [mikhailnov] , 2017-2019 +# ⓒ Georgiy Starodubtsov [Mewsimka] , 2018 +# ⓒ Denis Goncharov, 2018 +# ⓒ Vladimir Penchikov , 2018 +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-22 11:20+0000\n" +"Last-Translator: IDeathByte \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Эквалайзер, компрессор и прочие звуковые эффекты" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Звуковые эффекты для приложений PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "лимитер;компрессор;ребербатор;эквалайзер;автогромкость;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Предустановки\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "Включить/выключить это приложение" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "Включить" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "Список Исключений: Добавить/удалить приложение" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "Исключить" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Заглушить Приложение" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "Изменить громкость приложения" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Громкость Приложения" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Настройки" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Руководство" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "_Горячие клавиши" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Сброс настроек" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_О программе EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Предустановки" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Меню предустановок" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "Включить/выключить общий обход" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Общий обход" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Главное меню" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "Окно EasyEffects" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Список приложений" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "Пустой список" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "Нет доступных приложений аудио" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Целевая громкость" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "Исторически максимальный" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "База" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Моментальные измерения" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "Краткосрочные измерения" + +# Время интеграции — это величина, характеризующая быстродействие измерителя. +# https://tech.ebu.ch/docs/factsheets/Factsheet-R128-2011-RUS.pdf +# В документе выше переводчик перевел 'Integrated' как 'Интегрированные', +# хотя сам же написал, что это "измерения от начала до конца" +# Яндекс.Переводчик перевел лучше — "Комплексные измерения" +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Комплексные измерения" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "Среднее геометрическое (MSI)" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "Среднее геометрическое (MS)" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "Среднее геометрическое (MI)" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "Среднее геометрическое (SI)" + +# #, fuzzy +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Сброс истории" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Относительное значение" + +# ??? Не уверен в переводе +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Диапазон" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Громкость" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Усиление выхода" + +# ############################################### +# https://github.com/wwmm/easyeffects/pull/289 +# Left here for future thinking +# msgid "Influence of measurements with momentary integration time" +# msgstr "Влияние измерений с моментальным временем интеграции" +# msgid "Influence of measurements with short integration time" +# msgstr "Влияние измерений с малым временем интеграции" +# msgid "Influence of integrated measurements" +# msgstr "Влияние комплексных измерений" +# ############################################### +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Вход" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Усиление входа" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Выход" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Усиление выхода" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Сброс" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Используется" + +# #, fuzzy +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Устройство" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Название" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Профиль" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Предустановка" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "Удалить автозагружаемую предустановку" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Прослушать" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Смешение гармоник" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3-ий" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2-ой" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Величина" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Гармоники" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Диапазон частот" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Нижний порог" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Величина нижнего порога" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Указатель" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Название приложения" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "Добавить в чёрный список приложений" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "Чёрный список приложений" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "Отобразить чёрный список приложений" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Компрессор" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Режим" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Нисходящий" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Восходящий" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Усиление" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Режим сжатия" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Порог усиления" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Величина Усиления" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Атака" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "Время" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Порог срабатывания" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "Время атаки" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "Порог атаки" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Восстановление" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "Время восстановления" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "Порог восстановления" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Степень сжатия" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Колено (излом)" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Усиление вверх" + +# #, fuzzy +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Сайдчейн" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Пик" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS (среднеквадратичный уровень сигнала)" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Фильтр НЧ" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Равномерно" + +# #, fuzzy +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Режим сайдчейна" + +# #, fuzzy +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Источник" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Средний" + +# #, fuzzy +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Боковой" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Левый" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Правый" + +# #, fuzzy +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Источник сайдчейна" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Тип" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Прямая связь" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Обратная связь" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "Внешний" + +# #, fuzzy +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Тип сайдчейна" + +# #, fuzzy +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Устройство ввода" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "Предусиление" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Скорость реакции" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Задержка (lookahead)" + +# #, fuzzy +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Фильтры сайдчейна" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Фильтр ВЧ" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Частота" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Откл" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 Дб/окт" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 Дб/окт" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 Дб/окт" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Режим высокочастотного фильтра" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Частота высокочастотного фильтра" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Режим низкочастотного фильтра" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Усиление" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "Огибающая" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Кривая" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "Л" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Левый Канал" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "П" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Правый Канал" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Импульсы" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "Объединить" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Ширина стерео" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Спектр" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "Логарифмическая шкала" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "Нормализация громкости" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Частота" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Образцы" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Длительность" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "Объединить импульсные характеристики" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "Первое ядро" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "Второе ядро" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Имя файла на выходе" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "Имя суммарного ядра" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Импортировать импульс" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Поиск" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "Поиск файла импульса" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "Список файлов импульса" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "По умолчанию" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Усечение" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Подача" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Обход" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Приглушить" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Определение" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Ширина" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Частота раздела" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "Ч1 раздела" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "Частота 1 раздела" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "Ч1 пик" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "Частота 2 пик" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "Ч1 усиление" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "Частота 1 усиление" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "Ч2 уровень" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "Частота 2 уровень" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "Ч2 пик добротности" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "Частота 2 пик добротности" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Допуск на срабатывание" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Определено" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Ослабление" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Размер кадра" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Длина фильтра" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "Приложения чёрного списка" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Число полос" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Разделить каналы" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Плоская АЧХ" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Подсчитать частоты" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "Загрузить предустановку APO" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Колокол" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Высокочастотный фильтр" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Высокочастотный полочный фильтр" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Фильтр низких частот" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Низкочастотный полочный фильтр" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Вырез" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Резонансы" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Фазовый" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Тип полосы" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Режим полосы" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Наклон" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Наклон полосы" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Ширина" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Качество" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Соло" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "Потолок" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "Величина потолка" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "Доступ" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Описание" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Удалить этот файл модели" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12 дБ/окт фильтр НЧ" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24 дБ/окт фильтр НЧ" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36 дБ/окт фильтр НЧ" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12 дБ/окт фильтр ВЧ" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24 дБ/окт фильтр ВЧ" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36 дБ/окт фильтр ВЧ" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6 дБ/окт полосовой" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12 дБ/окт полосовой" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18 дБ/окт полосовой" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6 дБ/окт полосно-заграждающий" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12 дБ/окт полосно-заграждающий" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "18 дБ/окт полосно-заграждающий" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Инертность" + +# http://wikisound.org/Гейт: шумовой гейт или просто гейт — это электронное устройство или плагин динамической обработки, который используется для контроля уровня звукового сигнала. Гейт пропускает или глушит сигнал в зависимости от установленного порогового значения. Он очень часто используется для подавления шума в паузах. +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Шумовые ворота (гейт)" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "Зона" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "Гистерезис" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "Зона Атаки" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "Зона Срабатывания" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "Внутренний" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Гейтинг" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Передискретизация" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "Подмешивание шума" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "Эрмит узкий" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "Эрмит широкий" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "Эрмит хвост" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "Эрмит нос" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "Эксп. узкий" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "Эксп. широкий" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "Эксп. хвост" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "Эксп. нос" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Лин. узкий" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Лин. широкий" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "Лин. хвост" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "Лин. нос" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Нет" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "Половинный x2(2L)" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "Половинный x2(3L)" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "Половинный x3(2L)" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "Половинный x3(3L)" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "Половинный x4(2L)" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "Половинный x4(3L)" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "Половинный x6(2L)" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "Половинный x6(3L)" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "Половинный x8(2L)" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "Половинный x8(3L)" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "Полный x2(2L)" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "Полный x2(3L)" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "Полный x3(2L)" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "Полный x3(3L)" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "Полный x4(2L)" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "Полный x4(3L)" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "Полный x6(2L)" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "Полный x6(3L)" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "Полный x8(2L)" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "Полный x8(3L)" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "Усиление сайдчейна" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Предусиление сайдчейна" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Усиление" + +# В данном режиме «Компрессор» обрабатывает сигналы сразу двух каналов (стерео), уравнивая их уровни. +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Стереосвязка" + +# #, fuzzy +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Внешняя Цепочка" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "Источник Внешней Цепочки" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "Автовыравнивание" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "Атака автовыравнивания" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "Восстановление автовыравнивания" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "Колено автовыравнивания" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "Усиление левого" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "Усиление правого" + +# #, fuzzy +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Левый сайдчейн" + +# #, fuzzy +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Правый сайдчейн" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Стандартный" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Плоский" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Размер FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "Размер быстрого преобразования Фурье" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Громкость на выходе" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Верхний порог" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Режим работы" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Классический" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Современный" + +# #, fuzzy +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Усиление сайдчейна" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "БП розового" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "СП розового" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "БП коричневого" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "СП коричневого" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Полосы" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Полоса 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Полоса 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Полоса 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Полоса 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Полоса 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Полоса 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Полоса 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Полоса 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "Начало полосы" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "Конец полосы" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Режим компрессии полосы" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "Обход полосы" + +# #, fuzzy +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Параметры сайдчейна полосы" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Фильтр среза НЧ" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Частота фильтра среза НЧ" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Фильтр среза ВЧ" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Частота фильтра среза ВЧ" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "Предусиление" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Усиление полосы" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "Огибающая полосы" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "Кривая полосы" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "Режим раздела" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Разделение 1/2" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "Частота раздела 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Разделение 2/3" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "Частота раздела 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Разделение 3/4" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "Частота раздела 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Подполоса" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "Полоса 1 обход" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "Полоса 1 соло" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "Полоса 1 обнаружение" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "Полоса 1 атака" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "Полоса 1 восстановление" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "Полоса 1 порог" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "Полоса 1 соотношение" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "Полоса 1 колено" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "Полоса 1 усиление вверх" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Максимум подавления" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "Полоса 1 макс. подавление" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Низкие частоты" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "Полоса 2 обход" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "Полоса 2 соло" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "Полоса 2 обнаружение" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "Полоса 2 атака" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "Полоса 2 восстановление" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "Полоса 2 порог" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "Полоса 2 соотношение" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "Полоса 2 колено" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "Полоса 2 усиление вверх" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "Полоса 2 макс. подавление" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Средние частоты" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "Полоса 3 обход" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "Полоса 3 соло" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "Полоса 3 обнаружение" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "Полоса 3 атака" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "Полоса 3 восстановление" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "Полоса 3 порог" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "Полоса 3 соотношение" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "Полоса 3 колено" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "Полоса 3 усиление вверх" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "Полоса 3 макс. подавление" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Высокие частоты" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "Полоса 4 обход" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "Полоса 4 соло" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "Полоса 4 обнаружение" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "Полоса 4 атака" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "Полоса 4 восстановление" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "Полоса 4 порог" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "Полоса 4 соотношение" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "Полоса 4 колено" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "Полоса 4 усиление вверх" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "Полоса 4 макс. подавление" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Общие" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "Управление Устройством" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" +"Рекомендуется НЕ устанавливать источники EasyEffects в качестве Устройства " +"По-умолчанию во внешних приложениях (таких как Настройки Gnome и Параметры " +"Системы Plasma)." + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Использовать стандартный вход" + +# #, fuzzy +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "Выбрать устройство ввода" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Использовать стандартный выход" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "Выбрать устройство вывода" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Информация о сервере" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Версия оболочки" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Версия библиотеки" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Частота дискретизации" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "Минимальное квантование" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "Максимальное квантование" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "Стандартное квантование" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "Автозагрузка предустановок" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Устройства вывода" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Предустановки выхода" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "Создать ассоциацию" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "Добавить в автозагрузку предустановку выхода" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Список автозагружаемых предустановок выхода" + +# #, fuzzy +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Устройства ввода" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Предустановки входа" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "Добавить в автозагрузку предустановку входа" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "Список автозагружаемых предустановок входа" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Модули" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "Список модулей" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Клиенты" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "Список клиентов" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Проверочный сигнал" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Состояние" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "Включено" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Свойства" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Каналы" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "Оба" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Оба канала" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Форма волны" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Синусоида" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Белый шум" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "Высокая скорость" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "Высокое качество" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "Высокая согласованность" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "Форманта" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "Смещённый" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "Сохраняемый" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "Переходные звуки" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "Чёткость" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "Смешанный" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "Гладкий" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "Детектор" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "Составной" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "Ударный" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "Мягкий" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "Фаза" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "Ламинарный" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "Независимый" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Центы" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Полутона" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Октавы" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "Удалить этот эффект" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "Включить/отключить эффект" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "Изменить позицию эффекта" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "Добавить эффект" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "Список используемых плагинов" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "Без эффектов" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "Аудиопоток не изменён" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "Найти плагин" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Список плагинов" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Общие" + +# #, fuzzy +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Служба" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "Запускать службу при старте системы" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "Завершать работу при закрытии окна" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Аудио" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "Обрабатывать все выходные потоки" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "Обрабатывать все входные потоки" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "Игнорировать потоки с монитора устройств" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "Использовать кубическую громкость" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "Сбрасывать громкость виртуальных устройств EasyEffects при запуске" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "Тайм-аут бездействия" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "Стиль" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Использовать тёмную тему" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "Скрывать меню по щелчку вне фокуса" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Спектр" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Форма" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Полосы" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Линии" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Точки" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Пункты" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Высота" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Ширина линии" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Заполнять" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "Отобразить границы полос" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "Скруглённые углы" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Цвет" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Линии и полосы" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Разметка осей" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Диапазон частот" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Минимум" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Максимум" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Загрузить" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Сохранить текущие настройки в этот файл предустановки" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Удалить этот файл с предустановками" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Имя новой предустановки выхода" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "Создать новую предустановку" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "Импорт предустановки" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Поиск предустановки выхода" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Список предустановок выхода" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Имя новой предустановки входа" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Поиск предустановки входа" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Список предустановок входа" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Высокочастотное демпфирование" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Размер комнаты" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Маленькая" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Средняя" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Огромная" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Туннель" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Большой/плавный" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Экспериментальный" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Диффузия" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Предзадержка" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Время распада" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "Влажность" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "Уровень влаж." + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "Сухость" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "Уровень сух." + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Срез басов" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Срез тембра" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Окр. среда" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Пустые стены" + +# Taking lingual shortcuts to squeeze it in the text box +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Комната" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Большой пустой зал" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Диско" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Большой занятый чем-то зал" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Импортировать модель" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Модели" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Стандартная модель" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "Список моделей RNNoise" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "Модель Не Загружена" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Активная модель" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Стандартная модель RNNoise" + +# #, fuzzy +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Обзор" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "Открыть руководство EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Полноэкраный режим / выйти из полного экрана" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Закрыть окно" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "Выход из EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Баланс" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Баланс входа" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Софтклиппер" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "Уровень софтклипа" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Матрица стерео" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "ЛП > ЛП (стерео по умолчанию)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "Стерео > Моно-Раздельно" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "Моно-Раздельно > Стерео" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "Стерео > Моно левый канал" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "Стерео > Моно правый канал" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "Стерео > Моно левый+правый каналы" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "Стерео > Поменять каналы местами" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Режим стерео" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Инвертировать фазу" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Боковой уровень" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Боковой баланс" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Средний уровень" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Срединная панорама" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Баланс выхода" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Задержка Л/П" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Задержка левый правый" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Стерео база" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Стерео фаза" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "Выполняется" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "Приостановлено" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Простаивает" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "Создание" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Ошибка" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Неизвестно" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "каналы" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Предустановки выхода: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Предустановки входа: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Звуковые эффекты для приложений PipeWire" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Выход из EasyEffects. Полезно при запуске в режиме службы." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Загрузить предустановку. Пример: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Сброс настроек EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Скрыть окно." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "Глобальный обход. 1 — включить, 2 — отключить, 3 — получение статуса" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Показать доступные предустановки." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "Не Стандартный Файл" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "Файл Импульса Может Быть Поврежден или Не Поддерживается" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "Поддерживаются только Стерео файлы импульса" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "Файл импульса не импортирован" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Импортировать файл импульса" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Открыть" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Отмена" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Импульсная реакция" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Загрузить импульс" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "Удалить Импульс" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "Нет загруженного файла импульса" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "Не удалось загрузить файл импульса" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Рекордеры" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Проигрыватели" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "Эффекты" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "бесконечно" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Импортировать файл предустановки APO" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "Предустановки APO" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" +"Предустановки APO не загружены. Формат файла может быть не верным. " +"Пожалуйста, проверьте его содержимое." + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Удалить автозагрузку предустановки" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Удалить" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Устройство вывода" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Добавить" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Импорт предустановки" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" +"Выбранная модель не загружена. Данный формат может быть не поддерживаемым. " +"Возвращение на стандартную модель." + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Импорт файла модели" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "Модели RNNoise" + +# Энхансер (он же Эксайтер) — это прибор, который генерирует высшие гармоники низких частот, благодаря чему повышается локализация низких частот и их «читаемость». +# «Бас-Энхансер» или «Глубокий бас» +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Усиление басов (бас-энхансер)" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "Громкость баса" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Конвольвер" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Перекрёстная подача" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Кристаллизатор" + +# http://wikisound.org/Деэссер; предназначен для уменьшения или устранения избыточно шипящих звуков в записи человеческого голоса +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Антишипение (деэссер)" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Задержка" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Эхоподавление" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Эквалайзер" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Эксайтер" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Фильтр" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Ограничитель уровня звука (лимитер)" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Максимизатор" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Многополосный компрессор" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Многополосные шумовые ворота" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Высота тона" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Реверберация" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Подавление шума" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Стереокорректоры" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "Закрыть (Нажмите ESC)" + +#~ msgid "Wellington Wallace" +#~ msgstr "Веллингтон Уоллис" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects — это продвинутый набор инструментов для работы со звуком. " +#~ "Приложение включает в себя эквалайзер, ограничитель (лимитер), " +#~ "компрессор, утилиту для реверберации и многое другое. Более того, имеется " +#~ "встроенный анализатор аудиоспектра." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects является наследником PulseEffects. EasyEffects поддерживает " +#~ "только PipeWire в качестве аудио-сервера. Пользователи PulseAudio должны " +#~ "продолжать использовать PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Так как EasyEffects использует стандартный сервер PipeWire, программа " +#~ "будет работать с большинством используемых вами приложений. Все " +#~ "поддерживаемые приложения представлены в главном окне, где каждое может " +#~ "быть настроено индивидуально." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Помимо изменения звука на выходе, EasyEffects также может использовать " +#~ "звуковые эффекты для входных аудио-потоков, таких как микрофон. К " +#~ "примеру, это может быть полезно во время аудиозаписи или голосовой " +#~ "конференции." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "При запуске, EasyEffects автоматически подгрузит ваши настройки из " +#~ "предыдущей сессии. Также вы можете сохранить ваши текущие настройки в " +#~ "качестве загружаемого профиля." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "Главная страница отображает приложения с выходными аудио-потоками" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "Страница усиления басов отображает настройки аудио" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "Страница конвольвера отображает настройки аудио" + +#~ msgid "This release adds the following features:" +#~ msgstr "Этот выпуск привносит следующие возможности:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Этот выпуск исправляет следующие ошибки:" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "Улучшен интерфейс плагина высоты тона" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "" +#~ "Значок нашего приложения теперь совместим с рабочими столами, " +#~ "использующими QT" + +#~ msgid "" +#~ "Our blocklist code will use the `application.id` tag if the stream sets it" +#~ msgstr "" +#~ "Наш код чёрного списка будет использовать тег `application.id`, если " +#~ "поток укажет его" + +#~ msgid "" +#~ "In order to avoid problems with the mouse scroll the entries in the " +#~ "applications list shown in our `Players/Recorders`" +#~ msgstr "" +#~ "Во избежание проблем с колесом мыши записи в списке приложений " +#~ "отображаются в `Проигрыватели/Рекордеры`" + +#~ msgid "" +#~ "tab do not show a volume scale anymore. More details about the problem " +#~ "and the solution for it can be found on #1211" +#~ msgstr "" +#~ "вкладка больше не показывает шкалу громкости. Подробнее о проблеме и её " +#~ "решении можно узнать в #1211" + +#~ msgid "and #1427" +#~ msgstr "и #1427" + +#~ msgid "" +#~ "When no application is available for display in the `Players/Recorders` a " +#~ "message will be shown to the user" +#~ msgstr "" +#~ "Когда ни одно приложение не доступно для отображения в `Проигрывателях/" +#~ "Рекордерах`, пользователю будет показано сообщение" + +#~ msgid "Many translation updates" +#~ msgstr "Крупное обновление переводов" + +#, fuzzy +#~ msgid "" +#~ "Fixed a bug where EasyEffects crashed when the number of points displayed " +#~ "in the spectrum was changed while" +#~ msgstr "" +#~ "Исправлена ошибка, при которой EasyEffeects аварийно завершал работу, " +#~ "когда изменялось количество точек, отображаемых в спектре, в то время как" + +#~ msgid "our pipeline was active and the spectrum widget was visible" +#~ msgstr "наш канал обработки был активен, и виджет спектра отображался" + +#~ msgid "" +#~ "The pipeline latency value displayed in our window could be wrong in some " +#~ "situations. This was fixed." +#~ msgstr "" +#~ "Значение задержки канала обработки, отображаемое в нашем окне, могло быть " +#~ "неверным в некоторых ситуациях. Это было исправлено." + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "" +#~ "Появился новый параметр, позволяющая пользователю выбирать тайм-аут " +#~ "бездействия для канала обработки. Когда ни один клиент не играет" + +#~ msgid "" +#~ "to or recording from our devices the filters will be unlinked after the " +#~ "timeout is reached. This is done to make sure" +#~ msgstr "" +#~ "или записывает с наших устройств, фильтры будут отключены после " +#~ "достижения тайм-аута. Это делается для уверенности в том, что" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "не тратится мощность процессора на обработку тишины." + +#~ msgid "" +#~ "The autogain plugin now allows the user to select which of the three " +#~ "loudness are used to calculate the geometric" +#~ msgstr "" +#~ "Плагин нормализации громкости теперь позволяет пользователю выбрать один " +#~ "из трёх уровней для расчета среднего" + +#~ msgid "mean." +#~ msgstr "геометрического." + +#~ msgid "" +#~ "The autogain plugin now allows the maximum history to be set and does not " +#~ "use `libebur128` histogram mode anymore." +#~ msgstr "" +#~ "Плагин нормализации громкости теперь позволяет устанавливать максимальную " +#~ "историю и больше не использует режим гистограммы «libebur128»." + +#~ msgid "" +#~ "This should avoid the cases where the `Integrated` loudness gets stuck " +#~ "forever in the same value." +#~ msgstr "" +#~ "Это поможет избегать случаев, когда «встроенная» громкость навсегда " +#~ "застревает на одном и том же значении." + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "Значок EasyEffects был обновлён таким образом, чтобы сделать его видимым " +#~ "на рабочих столах QT." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "В этом выпуске исправлены следующие ошибки:" + +#~ msgid "" +#~ "The command line option that returns the global bypass state is working " +#~ "again." +#~ msgstr "" +#~ "Параметр командной строки, возвращающий состояние глобального обхода, " +#~ "снова работает." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Этот выпуск добавляет следующие возможности:" + +#~ msgid "" +#~ "The crossfeed filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Фильтр перекрестной подачи должен лучше работать с динамическим " +#~ "изменением задержек PipeWire. Больше не должны возникать ситуации, " +#~ "приводящие к скачкам громкости." + +#~ msgid "" +#~ "Fixed a bug that prevented mono microphones from properly working with " +#~ "EasyEffects" +#~ msgstr "" +#~ "Исправлена ошибка, не дававшая моно-микрофонам корректно работать с " +#~ "EasyEffects" + +#~ msgid "Support for the next PipeWire release `0.3.44`" +#~ msgstr "Поддержка PipeWire версии `0.3.44`" + +#~ msgid "" +#~ "The autogain filter should deal better with PipeWire's dynamic latency " +#~ "switches. Jumps in volume level should not happen anymore in these " +#~ "situations." +#~ msgstr "" +#~ "Фильтр автогейн должен лучше работать с динамическим изменением задержек " +#~ "PipeWire. Теперь ситуации со скачками уровня громкости больше не должны " +#~ "возникать." + +#~ msgid "" +#~ "We added an option that allows the volume and mute state of our virtual " +#~ "devices to be reset when EasyEffects starts. It should help with the " +#~ "cases were our devices are muted by the audio server for unknown reasons." +#~ msgstr "" +#~ "Мы добавили опцию, позволяющую сбрасывать уровень громкости и заглушение " +#~ "устройства во время запуска EasyEffects. Это должно помочь в случае, " +#~ "когда ваши устройства по неизвестным причинам заглушаются аудио-сервером." + +#~ msgid "Better support for computer suspending." +#~ msgstr "Улучшена поддержка спящего режима." + +#~ msgid "Updated translations" +#~ msgstr "Обновление перевода" + +#~ msgid "" +#~ "Fixed a bug where trying to create an autoloading profile without having " +#~ "presets caused the application to crash." +#~ msgstr "" +#~ "Исправлена ошибка, при которой попытка создать профиль для автозагрузки, " +#~ "не имеющий предустановок, приводила к вылету приложения." + +#~ msgid "" +#~ "Fixed a bug where setting a equalizer band `quality` to `zero` would lead " +#~ "to an application crash." +#~ msgstr "" +#~ "Исправлена ошибка, при которой установка полосы эквалайзера в \"ноль\" " +#~ "приводила к аварийному завершению приложения." + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita используется для создания некоторых частей окна приложения и " +#~ "управления переключением между тёмной и светлой темами." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "" +#~ "Дизайн меню настроек приложения был изменен с использованием виджетов " +#~ "LibAdwaita." + +#~ msgid "" +#~ "Equalizer APO preset import feature has been improved to apply not only " +#~ "the Bell filter, but also other supported ones" +#~ msgstr "" +#~ "Функция импорта предустановок для Equalizer APO была улучшена: теперь " +#~ "возможно применить не только \"Bell\", но и другие поддерживаемые фильтры" + +#~ msgid "" +#~ "The `Reset All Settings` function in our menu should work in Flatpak now." +#~ msgstr "" +#~ "Функция «Сброс всех настроек» в меню теперь должна работать и с Flatpak." + +#~ msgid "" +#~ "We have a new option that allows the user to disable our menus " +#~ "`autohide`. This may help to workaround some bugs Popover menus currently " +#~ "have on gtk4." +#~ msgstr "" +#~ "Теперь у нас есть новая опция, которая позволяет пользователю отключить " +#~ "\"автоскрытие\" меню. Это должно помочь обойти некоторые ошибки " +#~ "наложения, имеющиеся в gtk4." + +#~ msgid "" +#~ "More robust parsing to import APO presets saved with comma as thousands " +#~ "separator in central frequency band." +#~ msgstr "" +#~ "Большинство сложных для обработки при импорте предустановок APO, " +#~ "сохранены с использованием запятой в качестве разделителя в центральный " +#~ "полосе частот." + +#~ msgid "" +#~ "The fmt library is a new dependency At least while the c++ compilers do " +#~ "not implement its features. This is expected to happen in the next years." +#~ msgstr "" +#~ "Библиотека fmt является новой зависимостью, поскольку компилятор C++ на " +#~ "данный момент не может реализовать ее возможности. Поддержка ожидается в " +#~ "ближайшие несколько лет." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM и GLIBMM больше не являются зависимостями. Теперь мы используем " +#~ "gtk4 напрямую." + +#~ msgid "" +#~ "It is now possible to combine impulse responses in the Convolver " +#~ "interface. A new impulse file is generated and it should be visible in " +#~ "the impulse list." +#~ msgstr "" +#~ "Теперь вы можете объединять характеристики импульсов в интерфейсе " +#~ "Конвольвера. Новые файлы импульсов созданы и должны быть видны в списке." + +#~ msgid "" +#~ "Improved `x axis` drawings in our plots. Now the number of labels is " +#~ "adjusted dynamically depending on our window width." +#~ msgstr "" +#~ "Улучшена горизонтальная отрисовка внутри окна приложения. Теперь " +#~ "количество элементов изменяется динамически в зависимости от ширины окна." + +#~ msgid "" +#~ "The documentation has been updated reflecting the new EasyEffects " +#~ "features. Old references about PulseEffects have been removed. The " +#~ "documentation button has been added in the menu section." +#~ msgstr "" +#~ "Была обновлена пользовательская документация в связи с добавлением в " +#~ "EasyEffects новых возможностей. Старые отсылки к PulseEffects были " +#~ "удалены. Кнопка для вызова документации была добавлена в качестве секции " +#~ "Меню." + +#~ msgid "" +#~ "When a spinbutton is filled with an out of range value, now it is updated " +#~ "with the lowest/highest value rather than resetting to the previous one." +#~ msgstr "" +#~ "Когда регулятор установлен в положение, превышающее возможное значение, " +#~ "он будет обновлен до наименьшего/высшего значения, наиболее " +#~ "соответствующего предыдущему." + +#~ msgid "" +#~ "The application window now remembers the maximized state and restores it " +#~ "on the next opening event." +#~ msgstr "" +#~ "Окно приложения теперь запоминает свое состояние, и будет восстановлено " +#~ "при его следующем открытии." + +#~ msgid "The `tbb` library is a new dependency" +#~ msgstr "Библиотека tbb теперь является новой зависимостью" + +#~ msgid "" +#~ "The Limiter and the Multiband Compressor plugins can now use an optional " +#~ "external sidechain." +#~ msgstr "" +#~ "Плагины Лимитер и Многополосный компрессор теперь могут использоваться в " +#~ "качестве опционального внешнего сайдчейна." + +#~ msgid "" +#~ "The Autogain plugin now allows the user to select which Loudness is used " +#~ "as reference for the volume correction." +#~ msgstr "" +#~ "Плагин Автогейн теперь позволяет пользователям выбрать, какая громкость " +#~ "будет использоваться в качестве значения для коррекции её уровня." + +#~ msgid "" +#~ "The APO Profile Import feature of Equalizer plugin now parses the \"Pre " +#~ "Amplification\" parameter." +#~ msgstr "" +#~ "Функция импорта предустановок APO для плагина Эквалайзера, теперь " +#~ "считывает параметры Предусиления." + +#~ msgid "Optional Cubic Volume can be enabled in General Settings." +#~ msgstr "" +#~ "Теперь в главных настройках можно выбрать Кубический Уровень в качестве " +#~ "опции." + +#~ msgid "" +#~ "PipeWire monitor streams are now excluded and removed from the " +#~ "applications list." +#~ msgstr "" +#~ "Монитор источников PipeWire был исключён и удалён из списка приложений." + +#~ msgid "Hopefully crashes like the one reported at [1172]( are fixed." +#~ msgstr "" +#~ "Надеемся, что ошибки вылета приложения, указанные в отчете [1172] были " +#~ "исправлены." + +#~ msgid "Prevented a case in which Spectrum was crashing." +#~ msgstr "" +#~ "Предотвращена ошибка, связанная со Спектром, приводящая к аварийному " +#~ "завершению приложения." + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "Pavucontrol больше не указывается в списке приложений с источниками " +#~ "аудиопотоков в системах, локализация которых отличается от английской." + +#~ msgid "" +#~ "Improved compatibility with WirePlumber. This is needed to run on systems " +#~ "that decided to use it instead of the" +#~ msgstr "" +#~ "Улучшена совместимость с WirePlumber, необходимая для работы в системах, " +#~ "использующих го в качестве основного" + +#~ msgid "built-in PipeWire session manager. More information at issue [1144](" +#~ msgstr "" +#~ "менеджера управления сессиями PipeWire. Больше информации в отчете [1144]" + +#~ msgid "" +#~ "When trying to add an autoloading profile for a device already in the " +#~ "list its target preset will be updated. This way we can change the " +#~ "profile preset without having to remove and recreating it." +#~ msgstr "" +#~ "При попытке добавить профиль для автозагрузки для устройства, " +#~ "находящегося в списке, его цель будет обновлена. С помощью этого, мы " +#~ "сможем изменять предустановки профиля без необходимости удалять и " +#~ "пересоздавать его заново." + +#~ msgid "" +#~ "The preset autoloading support implementation was redesigned again. It " +#~ "should work on more hardware now. For more information see issue [1051](" +#~ msgstr "" +#~ "Реализация поддержки автозагрузки профилей была заново переписана. Теперь " +#~ "она должна работать с большим количеством оборудования. Более детальная " +#~ "информация в отчете [1051]" + +#~ msgid "" +#~ "If the Limiter or the Maximizer are set in the last position of the " +#~ "plugin stack, new plugins are added at the second to last position in " +#~ "order to prevent hardware damage on eventually high output level." +#~ msgstr "" +#~ "Лимитер и Максимизатор теперь устанавливаются в последнюю позицию цепочки " +#~ "плагинов. Новые плагины добавляются в предыдущую секцию с целью " +#~ "предотвращения порчи оборудования чрезмерным выходным уровнем громкости." + +#~ msgid "" +#~ "Removing an application from the blocklist, its previous enabled state is " +#~ "restored." +#~ msgstr "" +#~ "При удалении приложения из черного списка, его предшествующее состояние " +#~ "будет восстановлено." + +#~ msgid "" +#~ "Sometimes when removing imported models from the noise reduction plugin " +#~ "the current used model was not properly updated. This should be fixed now." +#~ msgstr "" +#~ "Иногда, во время удаления импортированной модели в плагине " +#~ "шумоподавления, текущая используемая модель не обновлялась корректно. " +#~ "Теперь должно работать как положено." + +#~ msgid "" +#~ "When editing presets files in an external editor, duplicated entries " +#~ "won't be shown in our presets menu." +#~ msgstr "" +#~ "Во время правки файла предустановок во внешнем редакторе, повторяющиеся " +#~ "параметры не будут отображаться в меню." + +#~ msgid "Now the blocklist is correctly set when switching presets." +#~ msgstr "" +#~ "Теперь чёрный список правильно устанавливается при смене предустановок." + +#~ msgid "" +#~ "Now the status of the global bypass button is correctly updated when " +#~ "changing plugin stack." +#~ msgstr "" +#~ "Теперь статус при нажатии на кнопку глобального обхода корректно " +#~ "отображается при смене набора плагинов." + +#~ msgid "" +#~ "Missing icons on the system should not be shown inside the application " +#~ "info UI" +#~ msgstr "" +#~ "Потерянные системные значки теперь не должны отображаться внутри " +#~ "пользовательского интерфейса приложения" + +#~ msgid "" +#~ "Some icons not showing in Plasma DE with Breeze icon theme should appear " +#~ "now." +#~ msgstr "" +#~ "Некоторые значки, которые не отображались в окружении рабочего стола " +#~ "Plasma с темой Breeze, теперь должны отображаться." + +#~ msgid "Updated Chinese translation." +#~ msgstr "Обновлен Китайский перевод." + +#~ msgid "Updated Italian translation." +#~ msgstr "Обновлен перевод на Итальянский." + +#~ msgid "Added support for the compressor parameter `Boost Amount`" +#~ msgstr "В компрессор добавлена поддержка параметра `Boost Amount`" + +#~ msgid "" +#~ "The multiband compressor plugin now uses the stereo multiband compressor " +#~ "plugin from Linux Studio Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Плагин многополосного компрессора теперь использует плагин стерео " +#~ "многополосного компрессора из набора плагинов Linux Studio Plugins взамен " +#~ "Calf Studio." + +#~ msgid "" +#~ "The limiter plugin now uses the stereo limiter plugin from Linux Studio " +#~ "Plugins instead of the one from Calf Studio." +#~ msgstr "" +#~ "Плагин лимитера теперь использует стерео плагин лимитера из набора Linux " +#~ "Studio Plugins взамен Calf Studio." + +#~ msgid "" +#~ "LV2 filters now are spawned in PipeWire graph only when loaded the first " +#~ "time. Once loaded, they remain connected until EasyEffects shutdown." +#~ msgstr "" +#~ "Наборы LV2 фильтров отображаются в графе PipeWire только во время первой " +#~ "загрузки. Однажды загруженные, они останутся включёнными до тех пор пока " +#~ "EasyEffects продолжает работу." + +#~ msgid "The echo canceller sampling rate is now properly set." +#~ msgstr "" +#~ "Теперь для модуля эхоподавления возможно установить частотный спектр." + +#~ msgid "" +#~ "The threshold parameter from the deesser plugin is now saved to the " +#~ "preset file." +#~ msgstr "" +#~ "Уровень порогового значения в плагине антишипения (деэссера) теперь " +#~ "сохраняется в файле предустановки." + +#~ msgid "" +#~ "Improved band splitting for crystalizer with new default intensity values." +#~ msgstr "" +#~ "Улучшено полосное разделение для кристаллизатора с новыми значениями " +#~ "интенсивности по умолчанию." + +#~ msgid "" +#~ "Depending on the input gain or output gain values the corresponding level " +#~ "bars could not be aligned." +#~ msgstr "" +#~ "Зависимости во входных и выходных уровнях громкости теперь коррелируют со " +#~ "значениями регулятора, которые ранее нельзя было выровнять." + +#~ msgid "" +#~ "When adding more equalizer bands they are set to `Bell` instead of `Off`." +#~ msgstr "" +#~ "При добавлении новых полос в эквалайзер их значение равно «Bell» вместо " +#~ "«Отключено»." + +#~ msgid "" +#~ "Equalizer APO presets loading is now working properly on locales " +#~ "different than C." +#~ msgstr "" +#~ "Предустановки для Эквалайзера APO теперь работают корректно с языками, " +#~ "отличными от С." + +#~ msgid "Improved linking management between port filter nodes in PipeWire." +#~ msgstr "" +#~ "Улучшено взаимодействие между точками пересечения портов фильтров в " +#~ "PipeWire." + +#~ msgid "" +#~ "The crystalizer plugin signal amplification was too high before. It " +#~ "should be within more reasonable levels now." +#~ msgstr "" +#~ "Ранее, усиление сигнала в плагине кристаллизатора было слишком высоким. " +#~ "Установлены более адекватные значения." + +#~ msgid "" +#~ "Improved the resampler used in the plugins that require one(like the " +#~ "rnnoise plugin)" +#~ msgstr "Улучшена работа ресемлера с некоторыми плагинами (rnnoise и пр.)" + +#~ msgid "Setting multiple autoloading presets should be fine now" +#~ msgstr "" +#~ "Установка множества предустановок для автозагрузки теперь должно работать " +#~ "корректно" + +#~ msgid "Transient windows are now properly set for some plugins dialogs" +#~ msgstr "" +#~ "Временные окна для взаимодействия с некоторыми плагинами теперь работают " +#~ "корректно" + +#~ msgid "" +#~ "The convolver impulse response menu was improved to workaround an issue " +#~ "where the impulse files was not loaded when only one was available in the " +#~ "menu" +#~ msgstr "" +#~ "Была исправлена ошибка меню конвольвера, при которой файлы импульсов не " +#~ "подгружались, если на выбор доступна только одна опция" + +#~ msgid "" +#~ "Fixed a bug that could make the pitch plugin to not be properly " +#~ "initialized" +#~ msgstr "" +#~ "Исправлена ошибка, при которой плагин высоты тона не мог правильно " +#~ "инициализироваться" + +#~ msgid "" +#~ "The saturation warning should not displace its neighbor widgets anymore" +#~ msgstr "" +#~ "Предупреждение о переполнении больше не должно менять расположение " +#~ "соседних виджетов" + +#~ msgid "Fixed the locale in a few widgets" +#~ msgstr "Исправлен перевод некоторых виджетов" + +#~ msgid "Fixed wrong alignment in a few widgets" +#~ msgstr "Исправлено неправильное выравнивание некоторых виджетов" + +#~ msgid "" +#~ "The Loudness plugin is being used again for the reasons described at This " +#~ "means that is an optional dependency again." +#~ msgstr "" +#~ "По указаным выше причинам, лагин работы с громкостью теперь снова " +#~ "доступен. Это значит, что он снова добавлен в список опциональных " +#~ "зависимостей." + +#~ msgid "" +#~ "Fixed a segmentation fault that happened when optional dependencies were " +#~ "not installed" +#~ msgstr "" +#~ "Исправлена ошибка сегментирования, возникавшая в случае, когда " +#~ "опциональные зависимости не были установлены" + +#~ msgid "Improved equalizer interface." +#~ msgstr "Улучшен интерфейс эквалайзера." + +#~ msgid "" +#~ "Now we use a sidechain LSP compressor that allows the user to select and " +#~ "external source as the sidechain input." +#~ msgstr "" +#~ "Теперь используется компрессор LSP, что позволяет пользователю выбрать " +#~ "внешний источник в качестве входного сайдчейна." + +#~ msgid "We now support the LSP compressor `Boosting` mode." +#~ msgstr "Теперь компрессор LSP поддерживает режим 'Усиление'." + +#~ msgid "" +#~ "When `split-channels` is enabled in the equalizer the imported APO preset " +#~ "will be applied only to the channel being visualized in the window. This " +#~ "will allow to import different presets for each channel instead of just " +#~ "settings the same values to both." +#~ msgstr "" +#~ "Когда 'смещение каналов' активировано в эквалайзере, предустановки " +#~ "импортированные из APO будут применены только к каналу, отображаемому в " +#~ "окне. Это позволяет применять различные предустановки для каждого канала " +#~ "вместо установки одинакового значения в обоих каналах." + +#~ msgid "" +#~ "Fixed some segmentation faults that could happen when creating a preset " +#~ "autoloading profile or removing presets" +#~ msgstr "" +#~ "Исправлены ошибки сегментирования, возникавшие при создании или удалении " +#~ "предустановок, используемых для автозагрузки" + +#~ msgid "" +#~ "This is one of the biggest releases that I have ever made. The amount of " +#~ "changes is so big that it is hard to talk about everything here." +#~ msgstr "" +#~ "Этот выпуск является одним из самых крупных, что мы делали за всё время. " +#~ "Объём изменений обширен, поэтому очень трудно описать их все." + +#~ msgid "" +#~ "The following are just the most import ones. People interested on the " +#~ "journey that got us here can take" +#~ msgstr "" +#~ "Перечисленные изменения являются самыми важными на наш взгляд. Если вам " +#~ "интересны возможности, предоставляемые приложением, просто возьмите" + +#~ msgid "a look at and" +#~ msgstr "и опробуйте их" + +#~ msgid "" +#~ "The application and its repository have been renamed from PulseEffects to " +#~ "`EasyEffects`" +#~ msgstr "Приложение и его репозиторий были переименованы в 'EasyEffects'" + +#~ msgid "gtkmm3 was replaced by gtkmm4" +#~ msgstr "gtkmm3 был заменен на gtkmm4" + +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "Фильтры GStreamer были заменены на собственные фильтры PipeWire." + +#~ msgid "" +#~ "Many features were reimplemented from scratch. The preset autoloading is " +#~ "one example. Another remarkable change will be seen in the plugins " +#~ "selection menu. Now the user can show in the window only the plugins that " +#~ "he/she wants to use." +#~ msgstr "" +#~ "Множество возможностей былы переписаны с нуля. Например предустановки для " +#~ "автозагрузки. Другие изменения, которые стоит упомянуть, можно увидеть в " +#~ "меню выбора плагинов. Теперь пользователь может отобразить в окне только " +#~ "те плагины, которые посчитает необходимыми." + +#~ msgid "" +#~ "Boost is no longer a dependency. The price paid for that was a little " +#~ "change in our presets structures. With some patience it is possible to " +#~ "edit PulseEffects presets in a text editor and make them work in " +#~ "EasyEffects. Hopefully someone will come up with a script for this in the " +#~ "feature." +#~ msgstr "" +#~ "Библиотека Boost более не является зависимостью. Ценой данного решения " +#~ "является небольшое изменение структуры предустановок. Имея немного " +#~ "терпения, можно отредактировать предустановки PulseEffects в любом " +#~ "текстовом редакторе, чтобы сделать их совместимыми с EasyEffects. " +#~ "Надеемся, кто нибудь создаст скрипт для автоматизации данной возможности." + +#~ msgid "" +#~ "New libraries are being used and some of the librarires that were " +#~ "optional before are now required" +#~ msgstr "" +#~ "Наличие некоторых новых библиотек, ранее считавшиеся опциональными, " +#~ "теперь является обязательным" + +#~ msgid "Average" +#~ msgstr "Средняя" + +#~ msgid "Failed" +#~ msgstr "Не удалось" + +#~ msgid "Use Default" +#~ msgstr "Установить по умолчанию" + +#~ msgid "Remove this plugin" +#~ msgstr "Удалить этот плагин" + +#~ msgid "Import Presets" +#~ msgstr "Импорт предустановок" + +#~ msgid "Start Service at Login" +#~ msgstr "Запуск службы при запуске" + +#~ msgid "Reset Our Devices Volume on Startup" +#~ msgstr "Сброс громкости устройств при запуске" + +#~ msgid "Activate" +#~ msgstr "Активировать" + +#~ msgid "Add to Blocklist" +#~ msgstr "Добавить в чёрный список" + +#~ msgid "Blocklist" +#~ msgstr "Чёрный список" + +#~ msgid "Add Plugin" +#~ msgstr "Добавить плагин" + +#~ msgid "Speakers" +#~ msgstr "Динамики" + +#~ msgid "Microphone" +#~ msgstr "Микрофон" + +#~ msgid "Plugins" +#~ msgstr "Плагины" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Включено" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Включено" + +#~ msgid "Format" +#~ msgstr "Формат" + +#~ msgid "Latency" +#~ msgstr "Задержка" + +#~ msgid "idle" +#~ msgstr "простаивание" + +#~ msgid "Faster" +#~ msgstr "Быстрее" + +#~ msgid "Preserve Formant" +#~ msgstr "Сохранить формат" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Усиление выхода" + +#~ msgid "Channel" +#~ msgstr "Канал" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Нижний порог" + +#~ msgid "Output Effects" +#~ msgstr "Эффекты для вывода звука" + +#~ msgid "Settings" +#~ msgstr "Настройки" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Настройки" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Продолжительность" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Проверочный сигнал" + +#~ msgid "Signal" +#~ msgstr "Сигнал" + +#~ msgid "Show Spectrum" +#~ msgstr "Показывать спектр" + +#~ msgid "Border" +#~ msgstr "Граница" + +#~ msgid "Spectrum Type" +#~ msgstr "Тип спектра" + +#~ msgid "Spectrum Color" +#~ msgstr "Цвет спектра" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Активная модель" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Увеличение ослабления" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Вес в расчете громкости" + +#~ msgid "Dry" +#~ msgstr "Влажность" + +#~ msgid "S/C Level" +#~ msgstr "Уровень Раздельный/Центр" + +#~ msgid "Phase Correlation" +#~ msgstr "Корреляция фазы" + +#~ msgid "Short Term" +#~ msgstr "Короткие измерения" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Low-pass" +#~ msgstr "Низкочастотный фильтр" + +#~ msgid "Preamp" +#~ msgstr "Предусилитель" + +#~ msgid "Run in Background" +#~ msgstr "Запускать в фоновом режиме" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Настройка громкости и вкл/откл эффектов" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Содержит эквалайзер с предустановками" + +#~ msgid "Input Limiter" +#~ msgstr "Ограничитель ввода" + +#~ msgid "Calibration" +#~ msgstr "Калибровка" + +#~ msgid "Limit" +#~ msgstr "Ограничение" + +#~ msgid "ASC" +#~ msgstr "Адаптивное управление наклоном" + +#~ msgid "Attenuation" +#~ msgstr "Затухание" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Аудиоэффекты для приложений PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Аудиоэффекты для приложений PulseAudio" + +#~ msgid "Help" +#~ msgstr "Справка" + +#~ msgid "Calibration Microphone" +#~ msgstr "Калибровка корректировки микрофона" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Автоматически применять этот набор предустановок, когда текущее звукое " +#~ "устройство подключают к системе" + +#, fuzzy +#~ msgid "Version" +#~ msgstr "Версия" + +#~ msgid "Sine" +#~ msgstr "Синусоида" + +#~ msgid "Square" +#~ msgstr "Квадратный" + +#~ msgid "Saw" +#~ msgstr "Пилообразный" + +#~ msgid "Triangle" +#~ msgstr "Треугольный" + +#~ msgid "Silence" +#~ msgstr "Тишина" + +#~ msgid "Pink Noise" +#~ msgstr "Розовый шум" + +#~ msgid "Ticks" +#~ msgstr "Тики" + +#~ msgid "Gaussian Noise" +#~ msgstr "Гауссовский шум" + +#~ msgid "Red Noise" +#~ msgstr "Красный шум" + +#~ msgid "Blue Noise" +#~ msgstr "Голубой шум" + +#~ msgid "Violet Noise" +#~ msgstr "Фиолетовый шум" + +#~ msgid "Volume" +#~ msgstr "Громкость" + +#~ msgid "Window" +#~ msgstr "Окно" + +#~ msgid "Measure Noise" +#~ msgstr "Измерение шума" + +#~ msgid "Subtract Noise" +#~ msgstr "Вычетание шума" + +#~ msgid "Extended Filter" +#~ msgstr "Расширенный фильтр" + +#~ msgid "Low" +#~ msgstr "Низкочастотный фильтр" + +#~ msgid "Moderate" +#~ msgstr "Средний" + +#~ msgid "High" +#~ msgstr "Высокий" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Уровень подавления" + +#~ msgid "Delay Agnostic" +#~ msgstr "Задержка" + +#~ msgid "Very High" +#~ msgstr "Очень высокий" + +#~ msgid "Noise Suppressor" +#~ msgstr "Простой шумодав" + +# # TODO: Mode/Режим заменить на "Режим сжатия" +#~ msgid "Adaptive Digital" +#~ msgstr "Адаптивное цифровое сжатие" + +#~ msgid "Fixed Digital" +#~ msgstr "Фиксированное цифровое сжатие" + +#~ msgid "Gain Controller" +#~ msgstr "Автоконтроль усиления (AGC)" + +#~ msgid "Detection Likelihood" +#~ msgstr "Вероятность обнаружения" + +#~ msgid "Very Low" +#~ msgstr "Очень низкий" + +#~ msgid "Voice Detector" +#~ msgstr "Обнаруживатель голоса" + +#~ msgid "Use Custom Color" +#~ msgstr "Использовать свой цвет" + +#~ msgid "Use Gradient" +#~ msgstr "Использовать градиент" + +#~ msgid "Gradient Color" +#~ msgstr "Цвет градиента" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Импортировать файл импульсной реакции" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Выбрать файл с импульсной реакцией" + +#~ msgid "Aggressive Mode" +#~ msgstr "Агрессивный режим" + +#~ msgid "Before" +#~ msgstr "До" + +#~ msgid "After" +#~ msgstr "После" + +#~ msgid "Loudness Range" +#~ msgstr "Диапазон громкости" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#, fuzzy +#~ msgid "Default Clock Rate" +#~ msgstr "Частота дискретизации по умолчанию" + +#~ msgid "Default Source" +#~ msgstr "Устройство ввода по умолчанию" + +#~ msgid "Server" +#~ msgstr "Сервер" + +#~ msgid "File" +#~ msgstr "Файл" + +#~ msgid "Configuration" +#~ msgstr "Параметры" + +#, fuzzy +#~ msgid "server" +#~ msgstr "Сервер" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Подсчитать частоты" + +# #, fuzzy +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Параметры" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Предустановки" + +#~ msgid "Detect Silence" +#~ msgstr "Определять тишину" + +#~ msgid "Muted" +#~ msgstr "Приглушенный" + +#~ msgid "Distant Headphones" +#~ msgstr "Находящиеся далеко наушники" + +#~ msgid "Priority Type" +#~ msgstr "Тип приоритета процесса" + +#~ msgid "Niceness" +#~ msgstr "Приоритет процесса (nice)" + +#~ msgid "Priority" +#~ msgstr "Приоритет" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Частота" + +#, fuzzy +#~ msgid "Maximum Frequency" +#~ msgstr "Частота" + +#~ msgid "About" +#~ msgstr "О программе" + +#~ msgid "Protocol" +#~ msgstr "Версия протокола сервера" + +#~ msgid "Default Sample Format" +#~ msgstr "Спецификация отсчётов по умолчанию" + +#~ msgid "Channel Mapping" +#~ msgstr "Схема каналов" + +#~ msgid "Resamplers" +#~ msgstr "Ресемплеры" + +#~ msgid "Buffer" +#~ msgstr "Буфер" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Эквалайзер - Выход" + +# Taking lingual shortcuts to squeeze it in the text box +#~ msgid "Block Size" +#~ msgstr "Размер блока" + +#~ msgid "Resampler" +#~ msgstr "Ресемплер" + +#~ msgid "paused" +#~ msgstr "на паузе" + +#~ msgid "playing" +#~ msgstr "воспроизводится" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Импортировать предустановки" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Увеличение ослабления" + +#~ msgid "Exponent" +#~ msgstr "Степень" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 0000000..fa4f556 --- /dev/null +++ b/po/sk.po @@ -0,0 +1,3255 @@ +# Slovak translation for Pulseeffects. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mlocik97 , 2020. +# Jose Riha , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2021-07-01 17:22+0200\n" +"Last-Translator: Jose Riha\n" +"Language-Team: \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.1\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ekvalizér, kompresor a ďalšie audio efekty" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Zvukové efekty pre aplikácie využívajúce PipeWire" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "obmedzovač;kompresor;ozvena;ekvalizér;automatická hlasitosť;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Predvoľby\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Povolené" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +#, fuzzy +msgid "Mute Application" +msgstr "Aplikácie" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +#, fuzzy +msgid "Application Volume" +msgstr "Aplikácie" + +#: data/ui/application_window.ui:6 +#, fuzzy +msgid "_Preferences" +msgstr "Referenčný Signál" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +#, fuzzy +msgid "_Shortcuts" +msgstr "Krátkodobá" + +#: data/ui/application_window.ui:20 +#, fuzzy +msgid "_Reset Settings" +msgstr "Nastavenia" + +#: data/ui/application_window.ui:26 +#, fuzzy +msgid "_About EasyEffects" +msgstr "Vstupné efekty" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Predvoľby" + +#: data/ui/application_window.ui:54 +#, fuzzy +msgid "Presets Menu" +msgstr "Predvoľby" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "Globálne premostenie" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +#, fuzzy +msgid "EasyEffects Window" +msgstr "PulseEffects" + +#: data/ui/apps_box.ui:17 +#, fuzzy +msgid "Applications List" +msgstr "Aplikácie" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Prázdne steny" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Aplikácie" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Cieľ" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Maximálna" + +#: data/ui/autogain.ui:86 +#, fuzzy +msgid "Reference" +msgstr "Referenčný Signál" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Okamžitá" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Krátkodobá" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Integrovaná" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Použiť geometrický priemer" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Použiť geometrický priemer" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Použiť geometrický priemer" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Použiť geometrický priemer" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Vymazať históriu" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Relatívna" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Rozsah" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Hlasitosť" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Výstupný Zisk" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Vstup" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +#, fuzzy +msgid "Plugin Input Gain" +msgstr "Výstupný Zisk" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Výstup" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +#, fuzzy +msgid "Plugin Output Gain" +msgstr "Výstupný Zisk" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Obnoviť pôvodné hodnoty" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Názov" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Predvoľby" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Odstrániť predvoľbu" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Počúvať" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Miešať harmonické kmity" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3." + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2." + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Množstvo" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonickosť" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Rozsah" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Spodná hranica" + +#: data/ui/bass_enhancer.ui:229 +#, fuzzy +msgid "Floor Value" +msgstr "Spodná hranica" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +#, fuzzy +msgid "Application Name" +msgstr "Aplikácie" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Zobraziť aplikácie zo zoznamu blokovaných na hlavnej karte" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Aplikácie" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Zobraziť aplikácie zo zoznamu blokovaných na hlavnej karte" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompresor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Režim" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Dole" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Hore" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Mód kompresora" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Zvýrazniť prah" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Množstvo" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Nábeh" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "V reálnom čase" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Prah" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Nábeh" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Prah" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Uvoľnenie" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Uvoľnenie" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Relatívny prah uvoľnenia" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Pomer" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Prechod" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Pozdvihnutie" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Postranný reťazec" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Vrchol" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Dolná priepusť" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Rovnomerný" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Postranný reťazec" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Zdroj" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Stredný" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Postranný" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Ľavý" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Pravý" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Postranný reťazec" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Typ" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "Kanál-Vpred" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Kanál-Vzad" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Postranný reťazec" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +#, fuzzy +msgid "Input Device" +msgstr "Obmedzovač na vstupe" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Predzosilnenie" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Reaktivita" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "Výhľad" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +#, fuzzy +msgid "Sidechain Filters" +msgstr "Postranný reťazec" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +#, fuzzy +msgid "High-Pass" +msgstr "Horné pásmo" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frekvencia" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Vyp" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "Nízka pásmová priepusť 12dB/okt" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "Nízka pásmová priepusť 24dB/okt" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "Nízka pásmová priepusť 36dB/okt" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +#, fuzzy +msgid "High-Pass Filter Mode" +msgstr "Režim filtra vysokej priepuste" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +#, fuzzy +msgid "High-Pass Filter Frequency" +msgstr "Frekvencia vysokej priepuste" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +#, fuzzy +msgid "Low-Pass Filter Mode" +msgstr "Režim filtra vysokej priepuste" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Zisk" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Sklon" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Krivka" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "Ľ" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +#, fuzzy +msgid "Left Channel" +msgstr "Kanály" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "P" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +#, fuzzy +msgid "Right Channel" +msgstr "Rozdeliť kanály" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Odpoveď impulzu" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Šírka sterea" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +#, fuzzy +msgid "Log Scale" +msgstr "Mierka" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Automatická hlasitosť" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Kmitočet" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Vzorky" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Trvanie" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Odpoveď impulzu" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +#, fuzzy +msgid "Output File Name" +msgstr "Výstup" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importovať impulz" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Načítať súbor impulzu" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Načítať súbor impulzu" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Predvolený" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Zrezanie" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Kanál" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Premostiť" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Stíšený" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Detekcia" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Široký" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Rozdeliť" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "Rozdeliť F1" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Frekvencia" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "Vrchol F2" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Frekvencia" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "Zisk F1" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Frekvencia" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "Úroveň F2" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Frekvencia" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2 vrchol Q" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Frekvencia" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Nedbanlivosť" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Zistené" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Redukcia" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Veľkosť rámca" + +#: data/ui/echo_canceller.ui:55 +#, fuzzy +msgid "Filter Length" +msgstr "Filter" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Pásma" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Rozdeliť kanály" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Vyhladiť" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Vypočítať frekvencie" + +#: data/ui/equalizer.ui:175 +#, fuzzy +msgid "Load APO Preset" +msgstr "APO predvoľby" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Zvonček" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Horné pásmo" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Horný prah" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Spodné pásmo" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Spodný prah" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Zárez" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Rezonancia" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Dolné Pásmo" + +#: data/ui/equalizer_band.ui:123 +#, fuzzy +msgid "Band Type" +msgstr "Premostiť" + +#: data/ui/equalizer_band.ui:153 +#, fuzzy +msgid "Band Mode" +msgstr "Pásma" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Sklon" + +#: data/ui/equalizer_band.ui:180 +#, fuzzy +msgid "Band Slope" +msgstr "Sklon" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Šírka" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kvalita" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Sólo" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Strop" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +#, fuzzy +msgid "Description" +msgstr "Detekcia" + +#: data/ui/factory_rnnoise_listview.ui:24 +#, fuzzy +msgid "Remove this model file" +msgstr "Odstrániť predvoľbu" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "Nízka pásmová priepusť 12dB/okt" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "Nízka pásmová priepusť 24dB/okt" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "Nízka pásmová priepusť 36dB/okt" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "Vysoká pásmová priepusť 12dB/okt" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "Vysoká pásmová priepusť 24dB/okt" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "Vysoká pásmová priepusť 36dB/okt" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "Pásmová priepusť 6dB/okt" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "Pásmová priepusť 12dB/okt" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "Pásmová priepusť 18dB/okt" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "Vylúčenie pásma 6dB/okt" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "Vylúčenie pásma 12dB/okt" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "Vylúčenie pásma 18dB/okt" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Zotrvačnosť" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Brána" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Uvoľnenie" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Integrovaná" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Hradlo" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Prevzorkovanie" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Široký" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Široký" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Šírka čiary" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Šírka čiary" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Šírka čiary" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Žiadny" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Predzosilnenie" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Spojenie sterea" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Postranný reťazec" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Automatické úrovne" + +#: data/ui/limiter.ui:505 +#, fuzzy +msgid "Auto Leveling Attack" +msgstr "Automatické úrovne" + +#: data/ui/limiter.ui:541 +#, fuzzy +msgid "Auto Leveling Release" +msgstr "Automatické úrovne" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "Automatické úrovne" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Ľavý" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Pravý" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Postranný reťazec" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Postranný reťazec" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Štandardný" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Rovný" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "Veľkosť FFT" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +#, fuzzy +msgid "Output Volume" +msgstr "Výstup" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Strop" + +#: data/ui/multiband_compressor.ui:31 +#, fuzzy +msgid "Operating Mode" +msgstr "Importovať model" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +#, fuzzy +msgid "Modern" +msgstr "Režim" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Postranný reťazec" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +#, fuzzy +msgid "Bands List" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:153 +#, fuzzy +msgid "Band 1" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:170 +#, fuzzy +msgid "Band 2" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:197 +#, fuzzy +msgid "Band 3" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:224 +#, fuzzy +msgid "Band 4" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:251 +#, fuzzy +msgid "Band 5" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:278 +#, fuzzy +msgid "Band 6" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:305 +#, fuzzy +msgid "Band 7" +msgstr "Pásma" + +#: data/ui/multiband_compressor.ui:332 +#, fuzzy +msgid "Band 8" +msgstr "Pásma" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Pásma" + +#: data/ui/multiband_compressor_band.ui:108 +#, fuzzy +msgid "Band Compression Mode" +msgstr "Mód kompresora" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Premostiť" + +#: data/ui/multiband_compressor_band.ui:431 +#, fuzzy +msgid "Band Sidechain Options" +msgstr "Postranný reťazec" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Režim filtra nízkej priepuste" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Režim filtra nízkej priepuste" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Horný prechod" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Horný prechod" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +#, fuzzy +msgid "Band Gain" +msgstr "Vstupné Zosilnenie" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +#, fuzzy +msgid "Band Curve" +msgstr "Krivka" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Rozdeliť" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "Rozdeliť 1/2" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Frekvencia" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "Rozdeliť 2/3" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Frekvencia" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "Rozdeliť 3/4" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Frekvencia" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Spodné pásmo" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Premostiť" + +#: data/ui/multiband_gate.ui:187 +#, fuzzy +msgid "Band 1 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Redukcia zosilnenia" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Nábeh" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Uvoľnenie" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Prah" + +#: data/ui/multiband_gate.ui:347 +#, fuzzy +msgid "Band 1 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Pozdvihnutie" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Redukcia" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Redukcia zosilnenia" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Nízke pásmo" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Premostiť" + +#: data/ui/multiband_gate.ui:547 +#, fuzzy +msgid "Band 2 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Redukcia zosilnenia" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Nábeh" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Uvoľnenie" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Prah" + +#: data/ui/multiband_gate.ui:707 +#, fuzzy +msgid "Band 2 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Pozdvihnutie" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Redukcia zosilnenia" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Stredné pásmo" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Premostiť" + +#: data/ui/multiband_gate.ui:907 +#, fuzzy +msgid "Band 3 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Redukcia zosilnenia" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Nábeh" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Uvoľnenie" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Prah" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Pozdvihnutie" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Redukcia zosilnenia" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Vysoké pásmo" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Premostiť" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Redukcia zosilnenia" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Nábeh" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Uvoľnenie" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Prah" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Pásma" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Pozdvihnutie" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Redukcia zosilnenia" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Všeobecné" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +#, fuzzy +msgid "Use Default Input" +msgstr "Použiť predvolený" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Obmedzovač na vstupe" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +#, fuzzy +msgid "Use Default Output" +msgstr "Použiť predvolený" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Výstupné efekty" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Ozvena (reverb)" + +#: data/ui/pipe_manager_box.ui:116 +#, fuzzy +msgid "Header Version" +msgstr "Verzia" + +#: data/ui/pipe_manager_box.ui:127 +#, fuzzy +msgid "Library Version" +msgstr "Verzia" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Predvolená rýchlosť vzorkovania" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Minimálna frekvencia" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Maximálny zisk" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Predvolené Zoslabnutie" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Výstupné efekty" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Výstupné predvoľby:" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Výstupné predvoľby:" + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Obmedzovač na vstupe" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Vstupné predvoľby: " + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Vstupné predvoľby: " + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Moduly" + +#: data/ui/pipe_manager_box.ui:429 +#, fuzzy +msgid "Modules List" +msgstr "Moduly" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "Klienti" + +#: data/ui/pipe_manager_box.ui:461 +#, fuzzy +msgid "Clients List" +msgstr "Klienti" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Skúšobné signály" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Stav" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Povolené" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanály" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Kanály" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Sínusová tabuľka" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Biely šum" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Horný prah" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Kvalita" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Formát" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Predvoľby" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Krehkosť" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Detekcia" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Kompresia" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Softclip" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Centy" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Poltóny" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktávy" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Odstrániť predvoľbu" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "Vstupné predvoľby: " + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "Všeobecné" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Server" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Spracovať všetky výstupy" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Spracovať všetky vstupy" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +#, fuzzy +msgid "Inactivity Timeout" +msgstr "Čas. limit aktivity" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Použiť tmavý motív" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Pruhy" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Čiary" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Body" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Výška" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Šírka čiary" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Výplň" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +#, fuzzy +msgid "Color" +msgstr "Farba osi" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frekvencia" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Maximálna" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Maximálna" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "Načítať" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Uložiť aktuálne nastavenia do tejto predvoľby" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Odstrániť predvoľbu" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Výstupné predvoľby: " + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Vytvoriť predvoľbu" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Načítať predvoľbu" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Výstupné predvoľby: " + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Výstupné predvoľby: " + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Vstupné predvoľby: " + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Vstupné predvoľby: " + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Vstupné predvoľby: " + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Vysokofrekvenčné tlmenie" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Veľkosť miestnosti" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Malá" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Stredná" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Veľká" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tunel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Veľká/hladká" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Experimentálna" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Rozptyl" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Predoneskorenie" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Čas dozvuku" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Množstvo" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Cieľová úroveň" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Množstvo" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Úroveň F2" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Odrezanie basov" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Odrezanie výšok" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Okolie" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Prázdne steny" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Miestnosť" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Veľká miestnosť (prázdna)" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disko" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Veľká miestnosť (plná)" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "Importovať model" + +#: data/ui/rnnoise.ui:40 +#, fuzzy +msgid "Models" +msgstr "Režim" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +#, fuzzy +msgid "Standard Model" +msgstr "Štandardný model RNNoise" + +#: data/ui/rnnoise.ui:90 +#, fuzzy +msgid "RNNoise Models List" +msgstr "Štandardný model RNNoise" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Aktívny model" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "Štandardný model RNNoise" + +#: data/ui/shortcuts.ui:11 +#, fuzzy +msgid "Overview" +msgstr "Server" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "Obnoviť PulseEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +#, fuzzy +msgid "Close the Window" +msgstr "Skryť okno" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "Vstupné efekty" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Vyváženie" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Vyváženie" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Softclip" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Stereo matica" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "ĽP > PĽ (štandardné Stereo)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "ĽP > SS (stereo ku strednej strane)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "SS > ĽP (stredná strana ku stereu)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "ĽP > ĽĽ (mono ľavý kanál)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "ĽP > PP (mono pravý kanál)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "ĽP > Ľ+P (mono sčítanie Ľ+P)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "ĽP > PĽ (stereo preklopené Kanály)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Režim sterea" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Preklopiť fázu" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Úroveň strán" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Vyváženie strán" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Stredová úroveň" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Stredná paronáma" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Výstupný Zisk" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Oneskorenie Ľ/P" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "Oneskorenie Ľavo/Pravo" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Základ sterea" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Fáza sterea" + +#: src/app_info.cpp:64 +#, fuzzy +msgid "Running" +msgstr "beží" + +#: src/app_info.cpp:66 +#, fuzzy +msgid "Suspended" +msgstr "pozastavené" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "vytváram" + +#: src/app_info.cpp:72 +#, fuzzy +msgid "Error" +msgstr "chyba" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Kanály" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Výstupné predvoľby: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Vstupné predvoľby: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "Zvukové efekty pre aplikácie využívajúce PipeWire" + +#: src/application.cpp:503 +#, fuzzy +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "Ukončiť PulseEffect. Užitočné pre beh v režime služby." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Načítať predvoľby. Napr.: easyffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Obnoviť EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Skryť okno." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" +"Globálne premostenie. 1 pre zapnutie, 2 pre vypnutie, 3 pre získanie stavu" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Zobraziť dostupné predvoľby." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Načítať súbor impulzu" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Načítať súbor impulzu" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Otvoriť" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "Zrušiť" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Odpoveď impulzu" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "Načítať impulz" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Importovať impulz" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Načítať súbor impulzu" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Nedá sa načítať súbor s impulzom" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +#, fuzzy +msgid "Recorders" +msgstr "Okraj" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Prehrávače" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "nekonečno" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "Načítať APO predvoľbu" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "APO predvoľby" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +#, fuzzy +msgid "Remove Autoloading Preset" +msgstr "Odstrániť predvoľbu" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Výstupné efekty" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Pridať" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Načítať predvoľbu" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Importovať model zo súboru" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Štandardný model RNNoise" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Vylepšovač hĺbok" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Hlasitosť" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Zbaľovač" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Prelínanie kanálov" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Kryštalizátor" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Oneskorenie" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Rušenie ozveny" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ekvalizér" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Budič" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Filter" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Obmedzovač" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Zosilňovač" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Viacpásmový kompresor" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Viacpásmová brána" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Výška tónu" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Ozvena (reverb)" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Redukcia šumu" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Stereo nástroje" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects je pokročilý nástroj pre úpravu zvuku. Obsahuje ekvalizér, " +#~ "obmedzovač, kompresor, nástroj ozveny a množstvo ďalších efektov. Pre " +#~ "doplnenie je napríklad zabudovaný aj analyzátor spektra." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects je následovník PulseEffects. EasyEffects podporuje len " +#~ "zvukový server PipeWire. Použivatelia PulseAudio by mali používať " +#~ "PulseEffects." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Pretože EasyEffects štandardne používa zvukový server PulseWire, funguje " +#~ "s väčšinou (ak nie so všetkými) aplikácií. Všetky podprované programy sú " +#~ "zobrazené v hlavnom okne, kde je ich možné individuálne povoliť." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Popri práci s úpravou výstupného zvuku, EasyEffects je možné použiť aj na " +#~ "úpravu vstupných zvukov z mikrofónu. To môžete využiť napríklad pri " +#~ "nahrávaní, ale funguje to dobre aj pri audiohovoroch." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "Keď je EasyEffects spustený, zapamätá si posledné používané nastavenia. " +#~ "Taktiež je možné uložiť všetky aktuálne nastavenia ako profily." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "Hlavná stránka ukazujújca dve výstupové aplikácie." + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Pásma" + +#, fuzzy +#~ msgid "Many translation updates" +#~ msgstr "Aktualizované preklady" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "neplýtvame výkonom procesora počas ticha." + +#~ msgid "mean." +#~ msgstr "geometrický priemer." + +#~ msgid "This release adds the following feature:" +#~ msgstr "Toto vydanie pridáva následujúcu vlastnosť:" + +#~ msgid "Updated translations" +#~ msgstr "Aktualizované preklady" + +#~ msgid "Average" +#~ msgstr "Priemerná" + +#~ msgid "Failed" +#~ msgstr "Zlyhalo" + +#, fuzzy +#~ msgid "Use Default" +#~ msgstr "Použiť predvolený" + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Odstrániť predvoľbu" + +#~ msgid "Import Presets" +#~ msgstr "Načítať predvoľbu" + +#~ msgid "Start Service at Login" +#~ msgstr "Spustiť službu pri prihlásení" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Aktívny model" + +#~ msgid "Add to Blocklist" +#~ msgstr "Pridať na zoznam blokovaných" + +#~ msgid "Blocklist" +#~ msgstr "Zoznam blokovaných" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibrovať mikrofón" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Povolené" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Povolené" + +#~ msgid "Format" +#~ msgstr "Formát" + +#~ msgid "Latency" +#~ msgstr "Odozva" + +#~ msgid "idle" +#~ msgstr "nečinné" + +#~ msgid "running" +#~ msgstr "beží" + +#~ msgid "suspended" +#~ msgstr "pozastavené" + +#~ msgid "creating" +#~ msgstr "vytváram" + +#~ msgid "error" +#~ msgstr "chyba" + +#~ msgid "unknown" +#~ msgstr "neznáme" + +#~ msgid "Faster" +#~ msgstr "Rýchlo" + +#~ msgid "Preserve Formant" +#~ msgstr "Zachovať zložku rozhodujúcu o farbe zvuku" + +#~ msgid "Cmoy" +#~ msgstr "Slúchadlový zosilňovač (CMoy)" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Výstupný Zisk" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanály" + +#, fuzzy +#~ msgid "Value" +#~ msgstr "Spodná hranica" + +#, fuzzy +#~ msgid "Output Effects" +#~ msgstr "Výstupné efekty" + +#~ msgid "Settings" +#~ msgstr "Nastavenia" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Nastavenia" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Trvanie" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Skúšobné signály" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Skúšobné signály" + +#~ msgid "Show Spectrum" +#~ msgstr "Zobraziť spektrum" + +#~ msgid "Border" +#~ msgstr "Okraj" + +#~ msgid "Spectrum Type" +#~ msgstr "Typ spektra" + +#~ msgid "Spectrum Color" +#~ msgstr "Farba spektra" + +#, fuzzy +#~ msgid "Remove Model" +#~ msgstr "Aktívny model" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Najvyššia redukcia zisku" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "Váhy" + +#~ msgid "Dry" +#~ msgstr "Skúšobný" + +#~ msgid "S/C Level" +#~ msgstr "S/C Úroveň" + +#~ msgid "Short Term" +#~ msgstr "Krátkodobá" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Dolná priepusť" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Nastaviť hlasitosť a zapnúť/vypnúť efekty" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Zahŕňa ekvalizér s prednastavenými profilmi" + +#~ msgid "Input Limiter" +#~ msgstr "Obmedzovač na vstupe" + +#~ msgid "Calibration" +#~ msgstr "Kalibrácia" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "Automatické vyhladenie" + +#~ msgid "Limit" +#~ msgstr "Obmedzenie" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Zoslabenie" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Zvukové efekty pre aplikácie využívajúce PulseAudio" + +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Zvukové efekty pre aplikácie PulseAudio" + +#~ msgid "Help" +#~ msgstr "Pomocník" + +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrovať mikrofón" + +#~ msgid "Based on" +#~ msgstr "Na základe" + +#~ msgid "Detect Silence" +#~ msgstr "Detekcia ticha" + +#~ msgid "Provided by" +#~ msgstr "Poskytuje" + +#~ msgid "Reconnect the microphone to apply new changes made to the Blocklist" +#~ msgstr "" +#~ "Znovu pripojiť mikrofón pre použitie zmien vykonaných v zozname " +#~ "blokovaných" + +#~ msgid "Restart the player to apply new changes made to the Blocklist" +#~ msgstr "Reštartovať prehrávač, aby sa uplatnili zmeny v zozname blokovaných" + +#~ msgid "Sine" +#~ msgstr "Sínus" + +#~ msgid "Square" +#~ msgstr "Štvorec" + +#~ msgid "Saw" +#~ msgstr "Píla" + +#~ msgid "Triangle" +#~ msgstr "Trojuholník" + +#~ msgid "Silence" +#~ msgstr "Ticho" + +#~ msgid "Pink Noise" +#~ msgstr "Ružový Šum" + +#~ msgid "Ticks" +#~ msgstr "Tiky" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussový šum" + +#~ msgid "Red Noise" +#~ msgstr "Červený šum" + +#~ msgid "Blue Noise" +#~ msgstr "Modrý šum" + +#~ msgid "Violet Noise" +#~ msgstr "Fialový Šum" + +#~ msgid "Volume" +#~ msgstr "Hlasitosť" + +#~ msgid "Window" +#~ msgstr "Okno" + +#~ msgid "Measure Noise" +#~ msgstr "Merať šum" + +#~ msgid "Subtract Noise" +#~ msgstr "Odčítať šum" + +#~ msgid "Low-pass Frequency" +#~ msgstr "Frekvencia nízkej priepuste" + +#~ msgid "Advanced" +#~ msgstr "Pokročilé" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Importovať súbor s odpoveďou impulzu" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Vyberte súbor s odpoveďou impulzu" + +#~ msgid "Aggressive Mode" +#~ msgstr "Agresívny režim" + +#~ msgid "Before" +#~ msgstr "Pred" + +#~ msgid "After" +#~ msgstr "Po" + +#~ msgid "Loudness Range" +#~ msgstr "Dynamický Rozsah" + +#~ msgid "Apply APO Preset" +#~ msgstr "Použiť APO predvoľby" + +#~ msgid "Apply" +#~ msgstr "Použiť" + +#~ msgid "Muted" +#~ msgstr "Stíšený" + +#~ msgid "Distant Headphones" +#~ msgstr "Vzdialené slúchadlá" + +#~ msgid "Niceness" +#~ msgstr "Hodnota nice" + +#~ msgid "Priority Type" +#~ msgstr "Typ priority" + +#~ msgid "Priority" +#~ msgstr "Priorita" + +#~ msgid "About" +#~ msgstr "O programe" + +#~ msgid "Loudness Compensator" +#~ msgstr "Kompenzácia hlasitosti" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Automaticky použiť toto nastavenie, ak je aktuálne používané zariadenie " +#~ "pripojené" + +#~ msgid "Default Source" +#~ msgstr "Predvolený bdroj" + +#~ msgid "Protocol" +#~ msgstr "Protokol" + +#~ msgid "Default Sample Format" +#~ msgstr "Predvolený formát vzorkovania" + +#~ msgid "Channel Mapping" +#~ msgstr "Priradenie kanála" + +#~ msgid "File" +#~ msgstr "Súbor" + +#~ msgid "Configuration" +#~ msgstr "Konfigurácia" + +#~ msgid "Resamplers" +#~ msgstr "Prevzorkovače" + +#~ msgid "Pipeline Input" +#~ msgstr "Pipeline vstup" + +#~ msgid "Buffer" +#~ msgstr "Vyrovnávacia pamäť" + +#~ msgid "Pipeline Output" +#~ msgstr "Pipeline výstup" + +#~ msgid "Block Size" +#~ msgstr "Veľkosť bloku" + +#~ msgid "Use Custom Color" +#~ msgstr "Použiť vlastnú Farbu" + +#~ msgid "Use Gradient" +#~ msgstr "Použiť tieňovanie" + +#~ msgid "Sampling" +#~ msgstr "Vzorkovanie" + +#~ msgid "Maximum Frequency" +#~ msgstr "Maximálna frekvencia" + +#~ msgid "Gradient Color" +#~ msgstr "Farba prechodu" + +#~ msgid "WebRTC" +#~ msgstr "WebRTC" + +#~ msgid "Extended Filter" +#~ msgstr "Rozšírený filter" + +#~ msgid "Low" +#~ msgstr "Nízky" + +#~ msgid "Moderate" +#~ msgstr "Stredný" + +#~ msgid "High" +#~ msgstr "Vysoký" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "Delay Agnostic" +#~ msgstr "Absolútne oneskorenie" + +#~ msgid "Very High" +#~ msgstr "Veľmi vysoká" + +#~ msgid "Noise Suppressor" +#~ msgstr "Potlačenie šumu" + +#~ msgid "Adaptive Digital" +#~ msgstr "Prispôsobivý digitálny" + +#~ msgid "Fixed Digital" +#~ msgstr "Pevný digitálny" + +#~ msgid "Gain Controller" +#~ msgstr "Ovládač zosilnenia" + +#~ msgid "Detection Likelihood" +#~ msgstr "Pravdepodobnosť zistenia" + +#~ msgid "Very Low" +#~ msgstr "Veľmi nízka" + +#~ msgid "Voice Detector" +#~ msgstr "Detekcia reči" + +#~ msgid "Resampler" +#~ msgstr "Prevzorkovač" + +#~ msgid "paused" +#~ msgstr "pozastavené" + +#~ msgid "playing" +#~ msgstr "hrá" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "Import APO Presets" +#~ msgstr "Načítať APO predvoľbu" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Redukcia zosilnenia" + +#~ msgid "Exponent" +#~ msgstr "Exponent" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..f2a1b68 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,2901 @@ +# Swedish translation of EasyEffects application. +# Copyright (C) 2017 +# This file is distributed under the same license as the easyeffects package. +# Patrik Nilsson , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-01-15 15:15+0000\n" +"Last-Translator: Mattias Münster \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.10.1\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "Ljudeffekter för PipeWire-applikationer" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "" +"limiter;begränsare;kompressor;eko;efterklang;equalizer;utjämnare;auto;volym;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Förinställningar\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Sinustabell" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Tysta applikationen" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Applikationsvolym" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "_Återställ inställningar" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "_Om EasyEffects" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Profiler" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Förinställningsmeny" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects-fönster" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Applikationslista" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Applikationsnamn" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Målvärde (dB)" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Frekvens (Hz)" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Återställ historik" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Utgångsförstärkning (dB)" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Ingång" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Plugin ingångsförstärkning (dB)" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Utgång" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Plugin utgångsförstärkning (dB)" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Återställ" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "Använder" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Enhet" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "Namn" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Profil" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "Förinställning" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Ta bort denna modellfil" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Lyssna" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Applikationsnamn" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Visa blocklistade applikationer" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Applikationslista" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Visa blocklistade applikationer" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Kompressor" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "Förstärkning" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Komprimeringsläge" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "Tröskelvärde för förstärkning (dB)" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Förstärkningsmängd" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Attack (ms)" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Tröskelvärde (dB)" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "Attacktid (ms)" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "Tröskelvärde för attack (dB)" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Släpp (s)" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "Tid för frisläppning (s)" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "Tröskelvärde för frisläppning (dB)" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Förhållande (n:1)" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Knävärde (dB)" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Makeup (dB)" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Sidokedja" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Topp" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Lågpass" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "Sidokedjeläge" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Mitten" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Sida" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "Sidokedjekälla" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Respons" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "Typ av sidokedja" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Ingångsenhet" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "Förförstärkning" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Sidokedjefilter" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Högpass" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Frekvens (Hz)" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Högpassfilterläge" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Högpassfilterfrekvens" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Lågpassfilterläge" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Förstärkning" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "V" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Vänster kanal" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "H" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Höger kanal" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "Impulser" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Stereobredd" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Takt" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Prover" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Varaktighet" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "Kombinera impulssvar" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Utdatafilnamn" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Importera impuls" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "Sök impulsfil" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "Lista över impulsfiler" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Gräns (Hz)" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Mata (dB)" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Upptäckt" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "Frekvens 1 delning (Hz)" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2 topp" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "Frekvens 2 topp (Hz)" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1 förstärkning (dB)" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "Frekvens 1 förstärkning (Hz)" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2 nivå" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "Frekvens 2 nivå (Hz)" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "F2 topp Q" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "Frekvens 2 topp Q" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Upptäckt" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "Reduktion" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Ramstorlek" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Filterlängd" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Delade kanaler" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Platt respons" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "Ladda APO-förinställning" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Högpass" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Hög hylla" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Lågpass" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Låg hylla" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "Lågpass" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Bandtyp" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Bandläge" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Bredd" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kvalitet" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "Tak (dB)" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Beskrivning" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Ta bort denna modellfil" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Tid för frisläppning (s)" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "Linje tunn" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "Linje bred" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "Linje svans" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "Sidokedjeförförstärkning" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "Förstärkning" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Stereolänk" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "Extern sidokedja" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "Automatisk utjämning" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "Automatisk utjämningsattack" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "Automatisk utjämningsutlösning" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "Automatisk knäutjämning" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "Förstärkning vänster" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "Sidokedja vänster" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "Sidokedja höger" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "FFT-storlek" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Utgångsvolym" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Tak" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Driftläge" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "Sidokedjeförstärkning" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Lista över band" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Bandkomprimeringsläge" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "Alternativ för bandsidokedja" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "Lågklippt filter" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "Lågklippt filterfrekvens" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "Högklippt filter" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "Högklippt filterfrekvens" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Bandförstärkning" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "Delat läge" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "Delad frekvens 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "Delad frekvens 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "Delad frekvens 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Underband" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "Förbikoppling av band 1" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "Band 1 solo" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "Band 1-detektering" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "Band 1 attack" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "Band 1 släpp" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "Band 1 tröskel" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "Band 1-förhållande" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "Band 1 knä" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "Band 1 sammansättning" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Maximal minskning" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "Band 1 max reduktion" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Lågt band" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "Förbikoppling av band 2" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "Band 2 solo" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "Band 2-detektering" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "Band 2 attack" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "Band 2 släpp" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "Tröskelvärde för band 2" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "Band 2-förhållande" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "Band 2 knä" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "Band 2 sammansättning" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "Band 2 max reduktion" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Mittband" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "Förbikoppling av band 3" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "Band 3 solo" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "Band 3-detektering" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "Band 3 attack" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "Band 3 släpp" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "Band 3 tröskelvärde" + +#: data/ui/multiband_gate.ui:1067 +#, fuzzy +msgid "Band 3 Ratio" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Makeup (dB)" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Förstärkningsreducering" + +#: data/ui/multiband_gate.ui:1242 +#, fuzzy +msgid "High Band" +msgstr "Högpass" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Release (s)" + +#: data/ui/multiband_gate.ui:1267 +#, fuzzy +msgid "Band 4 Solo" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Förstärkningsreducering" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Attack (ms)" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Release (s)" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Tröskelvärde (dB)" + +#: data/ui/multiband_gate.ui:1427 +#, fuzzy +msgid "Band 4 Ratio" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Makeup (dB)" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Förstärkningsreducering" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Allmänt" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "" + +#: data/ui/pipe_manager_box.ui:65 +#, fuzzy +msgid "Custom Input Device" +msgstr "Ingångs-begränsning" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "" + +#: data/ui/pipe_manager_box.ui:101 +#, fuzzy +msgid "Custom Output Device" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/pipe_manager_box.ui:112 +#, fuzzy +msgid "Server Information" +msgstr "Efterljud (eko)" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +#, fuzzy +msgid "Sampling Rate" +msgstr "Resampler" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "Frekvens (Hz)" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Frekvens (Hz)" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Frekvens (Hz)" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +#, fuzzy +msgid "Output Devices" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/pipe_manager_box.ui:249 +#, fuzzy +msgid "Output Presets" +msgstr "Profiler" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "Profiler" + +#: data/ui/pipe_manager_box.ui:329 +#, fuzzy +msgid "Input Devices" +msgstr "Ingångs-begränsning" + +#: data/ui/pipe_manager_box.ui:341 +#, fuzzy +msgid "Input Presets" +msgstr "Öppna förinställning" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "Öppna förinställning" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:475 +#, fuzzy +msgid "Test Signal" +msgstr "Testsignal" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Sinustabell" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanaler" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +#, fuzzy +msgid "Both Channels" +msgstr "Kanaler" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +#, fuzzy +msgid "Sine Wave" +msgstr "Sinustabell" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Vitt brus" + +#: data/ui/pitch.ui:33 +#, fuzzy +msgid "High Speed" +msgstr "Hög hylla" + +#: data/ui/pitch.ui:34 +#, fuzzy +msgid "High Quality" +msgstr "Kvalitet" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Format" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Förinställning" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Upptäckt" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Ingen komprimering" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Ta bort denna modellfil" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +#, fuzzy +msgid "Add Effect" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +#, fuzzy +msgid "_General" +msgstr "Allmänt" + +#: data/ui/preferences_general.ui:10 +#, fuzzy +msgid "Service" +msgstr "Ingångs-begränsning" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Använd mörkt tema" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +#, fuzzy +msgid "_Spectrum" +msgstr "Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Punkter" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "" + +#: data/ui/preferences_spectrum.ui:91 +#, fuzzy +msgid "Line Width" +msgstr "Bredd" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +#, fuzzy +msgid "Frequency Range" +msgstr "Frekvens (Hz)" + +#: data/ui/preferences_spectrum.ui:188 +#, fuzzy +msgid "Minimum" +msgstr "Frekvens (Hz)" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +#, fuzzy +msgid "Save current settings to this preset file" +msgstr "Spara nuvarande inställningar som profil" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +#, fuzzy +msgid "New Output Preset Name" +msgstr "Profiler" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Ta bort profil" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Öppna förinställning" + +#: data/ui/presets_menu.ui:90 +#, fuzzy +msgid "Search Output Preset" +msgstr "Profiler" + +#: data/ui/presets_menu.ui:151 +#, fuzzy +msgid "Output Presets List" +msgstr "Profiler" + +#: data/ui/presets_menu.ui:199 +#, fuzzy +msgid "New Input Preset Name" +msgstr "Öppna förinställning" + +#: data/ui/presets_menu.ui:237 +#, fuzzy +msgid "Search Input Preset" +msgstr "Öppna förinställning" + +#: data/ui/presets_menu.ui:298 +#, fuzzy +msgid "Input Presets List" +msgstr "Öppna förinställning" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Rumsstorlek" + +#: data/ui/reverb.ui:70 +#, fuzzy +msgid "Small" +msgstr "Litet rum" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "" + +#: data/ui/reverb.ui:72 +#, fuzzy +msgid "Large" +msgstr "Målvärde (dB)" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "" + +#: data/ui/reverb.ui:129 +#, fuzzy +msgid "Pre Delay" +msgstr "Release (ms)" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Målvärde (dB)" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Nivå" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "" + +#: data/ui/reverb.ui:565 +#, fuzzy +msgid "Ambience" +msgstr "Tystnad" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "" + +#: data/ui/reverb.ui:585 +#, fuzzy +msgid "Room" +msgstr "Rumsstorlek" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Platt respons" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +#, fuzzy +msgid "Active Model" +msgstr "Ingen komprimering" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +#, fuzzy +msgid "Overview" +msgstr "Ingångs-begränsning" + +#: data/ui/shortcuts.ui:16 +#, fuzzy +msgid "Open the EasyEffects Manual" +msgstr "EasyEffects" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +#, fuzzy +msgid "Quit EasyEffects" +msgstr "EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +#, fuzzy +msgid "Balance" +msgstr "Ljudförstärkare" + +#: data/ui/stereo_tools.ui:69 +#, fuzzy +msgid "Input Balance" +msgstr "Ljudförstärkare" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Nivå" + +#: data/ui/stereo_tools.ui:118 +#, fuzzy +msgid "Stereo Matrix" +msgstr "Ljudförstärkare" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +#, fuzzy +msgid "LR > LL (Mono Left Channel)" +msgstr "Kanaler" + +#: data/ui/stereo_tools.ui:132 +#, fuzzy +msgid "LR > RR (Mono Right Channel)" +msgstr "Kanaler" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +#, fuzzy +msgid "Stereo Mode" +msgstr "Ljudförstärkare" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "" + +#: data/ui/stereo_tools.ui:222 +#, fuzzy +msgid "Side Level" +msgstr "Nivå" + +#: data/ui/stereo_tools.ui:258 +#, fuzzy +msgid "Side Balance" +msgstr "Ljudförstärkare" + +#: data/ui/stereo_tools.ui:294 +#, fuzzy +msgid "Middle Level" +msgstr "Nivå" + +#: data/ui/stereo_tools.ui:330 +#, fuzzy +msgid "Middle Panorama" +msgstr "Panorama" + +#: data/ui/stereo_tools.ui:410 +#, fuzzy +msgid "Output Balance" +msgstr "Ingångsförstärkning (dB)" + +#: data/ui/stereo_tools.ui:419 +#, fuzzy +msgid "Delay L/R" +msgstr "Release (ms)" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Release (ms)" + +#: data/ui/stereo_tools.ui:455 +#, fuzzy +msgid "Stereo Base" +msgstr "Ljudförstärkare" + +#: data/ui/stereo_tools.ui:491 +#, fuzzy +msgid "Stereo Phase" +msgstr "Ljudförstärkare" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +#, fuzzy +msgid "Creating" +msgstr "Inställningar" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +#, fuzzy +msgid "channels" +msgstr "Kanaler" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Utgångsförinställningar: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Ingångsförinställningar: " + +#: src/application.cpp:413 +#, fuzzy +msgid "Audio effects for PipeWire applications" +msgstr "Ljudeffekter för PulseAudio applikationer" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "Återställ EasyEffects." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "" + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Lista över impulsfiler" + +#: src/convolver_menu_impulses.cpp:125 +#, fuzzy +msgid "Import Impulse File" +msgstr "Platt respons" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +#, fuzzy +msgid "Cancel" +msgstr "Ljudförstärkare" + +#: src/convolver_menu_impulses.cpp:130 +#, fuzzy +msgid "Impulse Response" +msgstr "Platt respons" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Platt respons" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Platt respons" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Lista över impulsfiler" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Sök impulsfil" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "" + +#: src/equalizer_ui.cpp:351 +#, fuzzy +msgid "Import APO Preset File" +msgstr "Öppna förinställning" + +#: src/equalizer_ui.cpp:357 +#, fuzzy +msgid "APO Presets" +msgstr "Profiler" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Ta bort" + +#: src/plugins_box.cpp:570 +#, fuzzy +msgid "Output Device" +msgstr "Ingångsförstärkning (dB)" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +#, fuzzy +msgid "Import Preset" +msgstr "Öppna förinställning" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +#, fuzzy +msgid "Import Model File" +msgstr "Platt respons" + +#: src/rnnoise_ui.cpp:137 +#, fuzzy +msgid "RNNoise Models" +msgstr "Ingen komprimering" + +#: src/tags_plugin_name.cpp:26 +#, fuzzy +msgid "Bass Enhancer" +msgstr "Ljudförstärkare" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +#, fuzzy +msgid "Crystalizer" +msgstr "Utjämnare" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +#, fuzzy +msgid "Delay" +msgstr "Release (ms)" + +#: src/tags_plugin_name.cpp:34 +#, fuzzy +msgid "Echo Canceller" +msgstr "Ljudförstärkare" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Utjämnare" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +#, fuzzy +msgid "Filter" +msgstr "Filter typ" + +#: src/tags_plugin_name.cpp:39 +#, fuzzy +msgid "Limiter" +msgstr "Gränsvärde (dB)" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "" + +#: src/tags_plugin_name.cpp:42 +#, fuzzy +msgid "Multiband Compressor" +msgstr "Kompressor" + +#: src/tags_plugin_name.cpp:43 +#, fuzzy +msgid "Multiband Gate" +msgstr "Kompressor" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +#, fuzzy +msgid "Reverberation" +msgstr "Efterljud (eko)" + +#: src/tags_plugin_name.cpp:46 +#, fuzzy +msgid "Noise Reduction" +msgstr "Förstärkningsreducering" + +#: src/tags_plugin_name.cpp:47 +#, fuzzy +msgid "Stereo Tools" +msgstr "Ljudförstärkare" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects är ett avancerat verktyg för manipulation av ljud. Det " +#~ "innehåller en ljudutjämnare (equalizer), ljudbegränsare (limiter), " +#~ "kompressor och ett efterklangsverktyg (eko), för att bara nämna några få. " +#~ "Där finns även en inbyggd frekvensanalysator som kompletterar dessa." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "Eftersom EasyEffects använder sig av standard PipeWire som ljudserver " +#~ "stödjer den de flesta, om inte alla, program du använder. Alla " +#~ "applikationer som stöds presenteras i huvudfönstret, där var och en kan " +#~ "aktiveras individuellt." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Förutom att manipulera dina programs ljud kan EasyEffects tillämpa " +#~ "effekter på en ingångsenhet, såsom en mikrofon. Detta är exempelvis " +#~ "användbart vid ljudinspelning, men det fungerar även bra under röstsamtal." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "När EasyEffects startas kommer det ihåg konfigurationen som användes " +#~ "under den senaste sessionen. Det är också möjligt att spara alla aktuella " +#~ "inställningar som profiler." + +#, fuzzy +#~ msgid "Remove this plugin" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Import Presets" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Microphone" +#~ msgstr "Kalibrering och mikrofon korrigering" + +#, fuzzy +#~ msgid "enabled" +#~ msgstr "Sinustabell" + +#, fuzzy +#~ msgid "disabled" +#~ msgstr "Sinustabell" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Latency" +#~ msgstr "Latens" + +#, fuzzy +#~ msgid "Output Channel" +#~ msgstr "Ingångsförstärkning (dB)" + +#, fuzzy +#~ msgid "Channel" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Output Effects" +#~ msgstr "Ingångs-begränsning" + +#~ msgid "Settings" +#~ msgstr "Inställningar" + +#, fuzzy +#~ msgid "Settings Menu" +#~ msgstr "Inställningar" + +#, fuzzy +#~ msgid "Documentation" +#~ msgstr "Kalibrering" + +#, fuzzy +#~ msgid "Enable Test Signal" +#~ msgstr "Testsignal" + +#, fuzzy +#~ msgid "Signal" +#~ msgstr "Testsignal" + +#, fuzzy +#~ msgid "Show Spectrum" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Spectrum Type" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Spectrum Color" +#~ msgstr "Spektrum" + +#, fuzzy +#~ msgid "Maximum Gain Reduction" +#~ msgstr "Förstärkningsreducering" + +#, fuzzy +#~ msgid "S/C Level" +#~ msgstr "Nivå" + +#, fuzzy +#~ msgid "Low-pass" +#~ msgstr "Lågpass" + +#~ msgid "Input Limiter" +#~ msgstr "Ingångs-begränsning" + +#~ msgid "Calibration" +#~ msgstr "Kalibrering" + +#, fuzzy +#~ msgid "Limit" +#~ msgstr "Gränsvärde (dB)" + +#~ msgid "Attenuation" +#~ msgstr "Försvagning" + +#~ msgid "Audio Effects for PulseAudio Applications" +#~ msgstr "Ljudeffekter för PulseAudio applikationer" + +#, fuzzy +#~ msgid "Audio effects for PulseAudio applications" +#~ msgstr "Ljudeffekter för PulseAudio applikationer" + +#, fuzzy +#~ msgid "Calibration Microphone" +#~ msgstr "Kalibrering och mikrofon korrigering" + +#~ msgid "Sine" +#~ msgstr "Sinus" + +#~ msgid "Square" +#~ msgstr "Fyrkant" + +#~ msgid "Saw" +#~ msgstr "Sågtand" + +#~ msgid "Triangle" +#~ msgstr "Triangel" + +#, fuzzy +#~ msgid "Silence" +#~ msgstr "Tystnad" + +#~ msgid "Pink Noise" +#~ msgstr "Skärt brus" + +#~ msgid "Ticks" +#~ msgstr "Tickande" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gaussiskt brus" + +#~ msgid "Red Noise" +#~ msgstr "Rött brus" + +#~ msgid "Blue Noise" +#~ msgstr "Blått brus" + +#~ msgid "Violet Noise" +#~ msgstr "Violett brus" + +#~ msgid "Volume" +#~ msgstr "Volym" + +#, fuzzy +#~ msgid "Window" +#~ msgstr "Mellanrum (s)" + +#~ msgid "Measure Noise" +#~ msgstr "Mät brus" + +#~ msgid "Subtract Noise" +#~ msgstr "Ta bort brus" + +#, fuzzy +#~ msgid "High" +#~ msgstr "Högpass" + +#, fuzzy +#~ msgid "Suppression Level" +#~ msgstr "Förstärkningsreducering" + +#, fuzzy +#~ msgid "Very High" +#~ msgstr "Högpass" + +#, fuzzy +#~ msgid "Noise Suppressor" +#~ msgstr "Kompressor" + +#, fuzzy +#~ msgid "Detection Likelihood" +#~ msgstr "Försvagning" + +#, fuzzy +#~ msgid "Voice Detector" +#~ msgstr "Försvagning" + +#, fuzzy +#~ msgid "Select the impulse Response File" +#~ msgstr "Platt respons" + +#, fuzzy +#~ msgid "Aggressive Mode" +#~ msgstr "Ingen komprimering" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Kalibrering" + +#, fuzzy +#~ msgid "Low-pass Frequency" +#~ msgstr "Återställ frekvens" + +#, fuzzy +#~ msgid "Advanced" +#~ msgstr "Inställningar" + +#, fuzzy +#~ msgid "Apply APO Preset" +#~ msgstr "Profiler" + +#, fuzzy +#~ msgid "Detect Silence" +#~ msgstr "Försvagning" + +#, fuzzy +#~ msgid "Minimum Frequency" +#~ msgstr "Frekvens (Hz)" + +#, fuzzy +#~ msgid "Channel Mapping" +#~ msgstr "Kanaler" + +#, fuzzy +#~ msgid "Resamplers" +#~ msgstr "Resampler" + +#, fuzzy +#~ msgid "Buffer" +#~ msgstr "Latens" + +#, fuzzy +#~ msgid "Pipeline Output" +#~ msgstr "Ljudutjämnare - Utgång" + +#, fuzzy +#~ msgid "Block Size" +#~ msgstr "Rumsstorlek" + +#~ msgid "Resampler" +#~ msgstr "Resampler" + +#, fuzzy +#~ msgid "Import APO Presets" +#~ msgstr "Öppna förinställning" + +#, fuzzy +#~ msgid "Gain Detection" +#~ msgstr "Förstärkningsreducering" diff --git a/po/th.po b/po/th.po new file mode 100644 index 0000000..6d24937 --- /dev/null +++ b/po/th.po @@ -0,0 +1,2491 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +msgid "Release Zone Start" +msgstr "" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:171 +msgid "Default Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +msgid "Crisp" +msgstr "" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "" + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "" + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "" + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 0000000..f1def1f --- /dev/null +++ b/po/tr.po @@ -0,0 +1,3122 @@ +# EasyEffects Türkçe Çeviri Dosyası. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# Serdar Sağlam , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-04-01 14:37+0000\n" +"Last-Translator: Oğuz Ersen \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "Ekolayzır, Sıkıştırıcı ve Diğer Ses Efektleri" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "PipeWire Uygulamaları için Ses Efektleri" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "" +"sınırlayıcı,kompresör,yankı,ekolayzır,otomatikses;yükseltici;sıkıştırıcı;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"Ön Ayarlar\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "" + +#: data/ui/app_info.ui:213 +#, fuzzy +msgid "Enable" +msgstr "Etkinleştir" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "Uygulamayı Sessize Al" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "Uygulama Ses Seviyesi" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "_Tercihler" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "_Kılavuz" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "Kısa_yollar" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "Ayarları _Sıfırla" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "EasyEffects _Hakkında" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "Ön Ayarlar" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "Ön Ayarlar Menüsü" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +#, fuzzy +msgid "Global Bypass" +msgstr "Atla" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "Ana Menü" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects Penceresi" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "Uygulama Listesi" + +#: data/ui/apps_box.ui:27 +#, fuzzy +msgid "Empty List" +msgstr "Boş Duvarlar" + +#: data/ui/apps_box.ui:28 +#, fuzzy +msgid "No Audio Application Available" +msgstr "Uygulama Adı" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "Hedef" + +#: data/ui/autogain.ui:52 +#, fuzzy +msgid "Maximum History" +msgstr "Azami" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "Anlık" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +#, fuzzy +msgid "Short-Term" +msgstr "Kısa Süreli" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "Tümleşik" + +#: data/ui/autogain.ui:101 +#, fuzzy +msgid "Geometric Mean (MSI)" +msgstr "Geometrik Ortalama" + +#: data/ui/autogain.ui:102 +#, fuzzy +msgid "Geometric Mean (MS)" +msgstr "Geometrik Ortalama" + +#: data/ui/autogain.ui:103 +#, fuzzy +msgid "Geometric Mean (MI)" +msgstr "Geometrik Ortalama" + +#: data/ui/autogain.ui:104 +#, fuzzy +msgid "Geometric Mean (SI)" +msgstr "Geometrik Ortalama" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "Geçmişi Sıfırla" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "Göreceli" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "Sınır" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "Yüksek Ses" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "Çıkış Kazancı" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "Giriş" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "Eklenti Giriş Kazancı" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "Çıkış" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "Eklenti Çıkış Kazancı" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "Sıfırla" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "Aygıt" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "İsim" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "Profil" + +#: data/ui/autoload_row.ui:89 +#, fuzzy +msgid "Preset" +msgstr "Ön Ayarlar" + +#: data/ui/autoload_row.ui:114 +#, fuzzy +msgid "Remove this autoload preset" +msgstr "Otomatik Yükleme Ön Ayarını Kaldır" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "Liste" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "Harmonik Karışımları" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3." + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2." + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "Miktar" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "Harmonikler" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "Kapsam" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "Zemin" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "Zemin Değeri" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "Bağ" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "Uygulama Adı" + +#: data/ui/blocklist_menu.ui:42 +#, fuzzy +msgid "Add to Excluded Applications" +msgstr "Kara Listeye Alınan Uygulamaları Göster" + +#: data/ui/blocklist_menu.ui:86 +#, fuzzy +msgid "Excluded Applications List" +msgstr "Kara Listeye Alınan Uygulamalar Listesi" + +#: data/ui/blocklist_menu.ui:99 +#, fuzzy +msgid "Show Excluded Applications" +msgstr "Kara Listeye Alınan Uygulamaları Göster" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "Sıkıştırıcı" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "Kip" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "Aşağıya" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "Yukarıya" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "Sıkıştırma Kipi" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +#, fuzzy +msgid "Boost Threshold" +msgstr "Eşik" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +#, fuzzy +msgid "Boost Amount" +msgstr "Miktar" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "Atak" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +#, fuzzy +msgid "Time" +msgstr "Eş Zamanlı" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "Eşik" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +#, fuzzy +msgid "Attack Time" +msgstr "Atak" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +#, fuzzy +msgid "Attack Threshold" +msgstr "Eşik" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "Bırak" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +#, fuzzy +msgid "Release Time" +msgstr "Eş Zamanlı" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +#, fuzzy +msgid "Release Threshold" +msgstr "Eşik" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "Oran" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "Oynak" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "Süs" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "Yanzincir" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "Doruk" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "RMS" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "Düşük-Geçiş" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "Aynı" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +#, fuzzy +msgid "Sidechain Mode" +msgstr "Yanzincir" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "Kaynak" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "Orta" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "Yan" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "Sol" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "Sağ" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +#, fuzzy +msgid "Sidechain Source" +msgstr "Yanzincir" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "Tür" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "İleri-besleme" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "Geri-besleme" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +#, fuzzy +msgid "Sidechain Type" +msgstr "Yanzincir" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "Giriş Aygıtı" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +#, fuzzy +msgid "PreAmplification" +msgstr "Öntanımlı-yükselticiler" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "Tepkinirlik" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "İlerleme" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "Yanzincir Süzgeçleri" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "Yüksek Geçiş" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "Sıklık" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "Kapalı" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "12 dB/oct" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "24 dB/oct" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "36 dB/oct" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "Yüksek Geçiş Süzgeci Kipi" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "Yüksek Geçiş Süzgeci Frekansı" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "Alçak Geçiş Süzgeci Kipi" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "Kazanç" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +#, fuzzy +msgid "Envelope" +msgstr "Eğim" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "Eğri" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "L" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "Sol Kanal" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "R" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "Sağ Kanal" + +#: data/ui/convolver.ui:61 +#, fuzzy +msgid "Impulses" +msgstr "Dürtü Yanıtı" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "Stereo Genişliği" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "Spektrum" + +#: data/ui/convolver.ui:112 +#, fuzzy +msgid "Log Scale" +msgstr "Ölçek" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +#, fuzzy +msgid "Autogain" +msgstr "Otomatik Kazanç" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "Oran" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "Örnekler" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "Süre" + +#: data/ui/convolver_menu_combine.ui:15 +#, fuzzy +msgid "Combine Impulse Responses" +msgstr "Dürtü Yanıtı" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "Çıkış Dosyası Adı" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "Dürtü Dosyasını İçeri Al" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "Ara" + +#: data/ui/convolver_menu_impulses.ui:27 +#, fuzzy +msgid "Search Impulse File" +msgstr "Dürtü Dosyasını İçe Aktar" + +#: data/ui/convolver_menu_impulses.ui:47 +#, fuzzy +msgid "Impulse Files List" +msgstr "Dürtü Dosyasını İçe Aktar" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "Öntanımlı" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "Kesici" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "Akış" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "Atla" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "Sessiz" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "Keşif" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "Geniş" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "Ayır" + +#: data/ui/deesser.ui:78 +#, fuzzy +msgid "F1 Split" +msgstr "Ayır" + +#: data/ui/deesser.ui:98 +#, fuzzy +msgid "Frequency 1 Split" +msgstr "Sıklık" + +#: data/ui/deesser.ui:111 +#, fuzzy +msgid "F2 Peak" +msgstr "Doruk" + +#: data/ui/deesser.ui:131 +#, fuzzy +msgid "Frequency 2 Peak" +msgstr "Sıklık" + +#: data/ui/deesser.ui:149 +#, fuzzy +msgid "F1 Gain" +msgstr "Kazanç" + +#: data/ui/deesser.ui:177 +#, fuzzy +msgid "Frequency 1 Gain" +msgstr "Sıklık" + +#: data/ui/deesser.ui:184 +#, fuzzy +msgid "F2 Level" +msgstr "Seviye" + +#: data/ui/deesser.ui:212 +#, fuzzy +msgid "Frequency 2 Level" +msgstr "Sıklık" + +#: data/ui/deesser.ui:219 +#, fuzzy +msgid "F2 Peak Q" +msgstr "Q Doruk" + +#: data/ui/deesser.ui:247 +#, fuzzy +msgid "Frequency 2 Peak Q" +msgstr "Sıklık" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "Gevşeklik" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "Saptanan" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +#, fuzzy +msgid "Reduction" +msgstr "Azalım" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Çerçeve Boyutu" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "Süzgeç Uzunluğu" + +#: data/ui/effects_box.ui:114 +#, fuzzy +msgid "Excluded Apps" +msgstr "hariç tutuldu" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "Bantlar" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "IIR" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "FIR" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "FFT" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "SPM" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "Kanalları Böl" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "Düz Yanıt" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "Frekansları Hesapla" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "APO Ön Ayarını Yükle" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "Çan" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "Yüksek Geçiş" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "Yüksek Sığlık" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "Düşük Geçiş" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "Düşük Sığlık" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "Çentik" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "Çınlama" + +#: data/ui/equalizer_band.ui:116 +#, fuzzy +msgid "All Pass" +msgstr "Düşük Geçiş" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "Bant Türü" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "Bant Kipi" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "Eğim" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "Bant Eğimi" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "Genişlik" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "Kalite" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "Tekli" + +#: data/ui/exciter.ui:200 +#, fuzzy +msgid "Ceil" +msgstr "Tavan" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "Tavan Değeri" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "Açıklama" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "Bu model dosyasını kaldır" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "12dB/oct Düşük geçiş" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "24dB/oct Düşük geçiş" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "36dB/oct Düşük geçiş" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "12dB/oct Yüksek geçiş" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "24dB/oct Yüksek geçiş" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "36dB/oct Yüksek geçiş" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "6dB/oct Bant geçişi" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "12dB/oct Bant geçişi" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "18dB/oct Bant geçişi" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "6dB/oct Bant reddet" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "12dB/oct Bant reddet" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "12dB/oct Bant reddet" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "Durağan" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "Aralık" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "Eş Zamanlı" + +#: data/ui/gate.ui:647 +#, fuzzy +msgid "Internal" +msgstr "Tümleşik" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "Geçitleme" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "Aşırı Örnekleme" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +#, fuzzy +msgid "Herm Wide" +msgstr "Geniş" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +#, fuzzy +msgid "Exp Wide" +msgstr "Geniş" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +#, fuzzy +msgid "Line Thin" +msgstr "Hat Genişliği" + +#: data/ui/limiter.ui:81 +#, fuzzy +msgid "Line Wide" +msgstr "Hat Genişliği" + +#: data/ui/limiter.ui:82 +#, fuzzy +msgid "Line Tail" +msgstr "Sinüs Tablosu" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "Hiçbiri" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +#, fuzzy +msgid "Sidechain PreAmplification" +msgstr "Öntanımlı-yükselticiler" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "Stereo Bağ" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +#, fuzzy +msgid "External Sidechain" +msgstr "Yanzincir" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "" + +#: data/ui/limiter.ui:465 +#, fuzzy +msgid "Auto Leveling" +msgstr "Otomatik Kazanç" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "" + +#: data/ui/limiter.ui:576 +msgid "Auto Leveling Knee" +msgstr "" + +#: data/ui/limiter.ui:601 +#, fuzzy +msgid "Gain Left" +msgstr "Kazanç" + +#: data/ui/limiter.ui:628 +#, fuzzy +msgid "Gain Right" +msgstr "Sağ" + +#: data/ui/limiter.ui:655 +#, fuzzy +msgid "Sidechain Left" +msgstr "Yanzincir" + +#: data/ui/limiter.ui:682 +#, fuzzy +msgid "Sidechain Right" +msgstr "Yanzincir" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "Standart" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "Düz" + +#: data/ui/loudness.ui:50 +#, fuzzy +msgid "FFT Size" +msgstr "Çerçeve Boyutu" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "Çıkış Ses Seviyesi" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "Tavan" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "Çalışma Kipi" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "Klasik" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "Çağdaş" + +#: data/ui/multiband_compressor.ui:57 +#, fuzzy +msgid "Sidechain Boost" +msgstr "Yanzincir" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "Bant Listesi" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "Bant 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "Bant 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "Bant 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "Bant 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "Bant 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "Bant 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "Bant 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "Bant 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +#, fuzzy +msgid "Band End" +msgstr "Bantlar" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "Bant Sıkıştırma Kipi" + +#: data/ui/multiband_compressor_band.ui:126 +#, fuzzy +msgid "Band Bypass" +msgstr "Atla" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:523 +#, fuzzy +msgid "Low-Cut Filter" +msgstr "Süzgeç" + +#: data/ui/multiband_compressor_band.ui:551 +#, fuzzy +msgid "Low-Cut Filter Frequency" +msgstr "Frekansları Hesapla" + +#: data/ui/multiband_compressor_band.ui:576 +#, fuzzy +msgid "High-Cut Filter" +msgstr "Yüksek Geçiş Süzgeci" + +#: data/ui/multiband_compressor_band.ui:604 +#, fuzzy +msgid "High-Cut Filter Frequency" +msgstr "Frekansları Hesapla" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "Bant Kazancı" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "Bant Eğrisi" + +#: data/ui/multiband_gate.ui:35 +#, fuzzy +msgid "Split Mode" +msgstr "Ayır" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "1/2 Böl" + +#: data/ui/multiband_gate.ui:68 +#, fuzzy +msgid "Split Frequency 1" +msgstr "Sıklık" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "2/3 Böl" + +#: data/ui/multiband_gate.ui:101 +#, fuzzy +msgid "Split Frequency 2" +msgstr "Sıklık" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "3/4 Böl" + +#: data/ui/multiband_gate.ui:134 +#, fuzzy +msgid "Split Frequency 3" +msgstr "Sıklık" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "Alt Bant" + +#: data/ui/multiband_gate.ui:177 +#, fuzzy +msgid "Band 1 Bypass" +msgstr "Atla" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +#, fuzzy +msgid "Band 1 Detection" +msgstr "Keşif" + +#: data/ui/multiband_gate.ui:243 +#, fuzzy +msgid "Band 1 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:278 +#, fuzzy +msgid "Band 1 Release" +msgstr "Bırak" + +#: data/ui/multiband_gate.ui:312 +#, fuzzy +msgid "Band 1 Threshold" +msgstr "Eşik" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +msgid "Band 1 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:414 +#, fuzzy +msgid "Band 1 Makeup" +msgstr "Süs" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "Azalım" + +#: data/ui/multiband_gate.ui:448 +#, fuzzy +msgid "Band 1 Max Reduction" +msgstr "Azalım" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "Düşük Bant" + +#: data/ui/multiband_gate.ui:537 +#, fuzzy +msgid "Band 2 Bypass" +msgstr "Atla" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +#, fuzzy +msgid "Band 2 Detection" +msgstr "Keşif" + +#: data/ui/multiband_gate.ui:603 +#, fuzzy +msgid "Band 2 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:638 +#, fuzzy +msgid "Band 2 Release" +msgstr "Bırak" + +#: data/ui/multiband_gate.ui:672 +#, fuzzy +msgid "Band 2 Threshold" +msgstr "Eşik" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +msgid "Band 2 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:774 +#, fuzzy +msgid "Band 2 Makeup" +msgstr "Süs" + +#: data/ui/multiband_gate.ui:808 +#, fuzzy +msgid "Band 2 Max Reduction" +msgstr "Azalım" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "Orta Bant" + +#: data/ui/multiband_gate.ui:897 +#, fuzzy +msgid "Band 3 Bypass" +msgstr "Atla" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +#, fuzzy +msgid "Band 3 Detection" +msgstr "Keşif" + +#: data/ui/multiband_gate.ui:963 +#, fuzzy +msgid "Band 3 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:998 +#, fuzzy +msgid "Band 3 Release" +msgstr "Bırak" + +#: data/ui/multiband_gate.ui:1032 +#, fuzzy +msgid "Band 3 Threshold" +msgstr "Eşik" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +msgid "Band 3 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1134 +#, fuzzy +msgid "Band 3 Makeup" +msgstr "Süs" + +#: data/ui/multiband_gate.ui:1168 +#, fuzzy +msgid "Band 3 Max Reduction" +msgstr "Azalım" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "Yüksek Bant" + +#: data/ui/multiband_gate.ui:1257 +#, fuzzy +msgid "Band 4 Bypass" +msgstr "Atla" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +#, fuzzy +msgid "Band 4 Detection" +msgstr "Keşif" + +#: data/ui/multiband_gate.ui:1323 +#, fuzzy +msgid "Band 4 Attack" +msgstr "Atak" + +#: data/ui/multiband_gate.ui:1358 +#, fuzzy +msgid "Band 4 Release" +msgstr "Bırak" + +#: data/ui/multiband_gate.ui:1392 +#, fuzzy +msgid "Band 4 Threshold" +msgstr "Eşik" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +msgid "Band 4 Knee" +msgstr "" + +#: data/ui/multiband_gate.ui:1494 +#, fuzzy +msgid "Band 4 Makeup" +msgstr "Süs" + +#: data/ui/multiband_gate.ui:1528 +#, fuzzy +msgid "Band 4 Max Reduction" +msgstr "Azalım" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "Genel" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "Öntanımlı Girişi Kullan" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "Özel Giriş Aygıtı" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "Öntanımlı Çıkışı Kullan" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "Özel Çıkış Aygıtı" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "Sunucu Bilgileri" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "Başlık Sürümü" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "Kütüphane Sürümü" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "Örnekleme Hızı" + +#: data/ui/pipe_manager_box.ui:149 +msgid "Minimum Quantum" +msgstr "" + +#: data/ui/pipe_manager_box.ui:160 +#, fuzzy +msgid "Maximum Quantum" +msgstr "Azami Kazanç" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "Öntanımlı Sink" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "Çıkış Aygıtları" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "Çıkış Ön Ayarları" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:290 +msgid "Output Autoloading Presets List" +msgstr "Çıkış Otomatik Yükleme Ön Ayarları Listesi" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "Giriş Aygıtları" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "Giriş Ön Ayarları" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "" + +#: data/ui/pipe_manager_box.ui:381 +msgid "Input Autoloading Presets List" +msgstr "Giriş Otomatik Yükleme Ön Ayarları Listesi" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "Modüller" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "Modül Listesi" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "İstemciler" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "İstemci Listesi" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "Test Sinyali" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "Durum" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +#, fuzzy +msgid "Enabled" +msgstr "Etkinleştir" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "Özellikler" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "Kanallar" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "Her İki Kanal" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "Dalga Biçimi" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "Sinüs Dalgası" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "Beyaz Gürültü" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "Yüksek Hız" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "Yüksek Kalite" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "Yüksek Tutarlılık" + +#: data/ui/pitch.ui:49 +#, fuzzy +msgid "Formant" +msgstr "Biçim" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +#, fuzzy +msgid "Preserved" +msgstr "Ön Ayarlar" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "Canlılık" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +#, fuzzy +msgid "Detector" +msgstr "Keşif" + +#: data/ui/pitch.ui:125 +#, fuzzy +msgid "Compound" +msgstr "Sıkıştırma" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +#, fuzzy +msgid "Soft" +msgstr "Yumuşak kırpım" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "Küsür" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "Yarım Ses" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "Oktav" + +#: data/ui/plugin_row.ui:39 +#, fuzzy +msgid "Remove this effect" +msgstr "Bu model dosyasını kaldır" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "Kullanılan Eklentiler Listesi" + +#: data/ui/plugins_box.ui:129 +#, fuzzy +msgid "No Effects" +msgstr "EasyEffects" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "Eklenti Ara" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "Eklenti Listesi" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "_Genel" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "Hizmet" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "" + +#: data/ui/preferences_general.ui:26 +#, fuzzy +msgid "Shutdown on Window Closing" +msgstr "Pencere Kapandığında Kapat" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "Ses" + +#: data/ui/preferences_general.ui:43 +#, fuzzy +msgid "Process All Output Streams" +msgstr "Tüm Çıkışları İşle" + +#: data/ui/preferences_general.ui:55 +#, fuzzy +msgid "Process All Input Streams" +msgstr "Tüm Girişleri İşle" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "Koyu Tema Kullan" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "_Spektrum" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "Şekil" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "Çubuklar" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "Çizgiler" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "Noktalar" + +#: data/ui/preferences_spectrum.ui:46 +msgid "Points" +msgstr "Noktalar" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "Yükseklik" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "Hat Genişliği" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "Dolgu" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "Yuvarlatılmış Köşeler" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "Renk" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "Çizgiler ve Çubuklar" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "Eksen Etiketleri" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "Frekans Aralığı" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "Asgari" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "Azami" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "Geçerli ayarları bu ön ayar dosyasına kaydet" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "Hazır ayar dosyasını kaldır" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "Yeni Çıkış Ön Ayarı Adı" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +#, fuzzy +msgid "Create a new preset" +msgstr "Hazır Ayar Oluştur" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +#, fuzzy +msgid "Import a preset" +msgstr "Ön Ayarı İçe Aktar" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "Çıkış Ön Ayarı Ara" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "Çıkış Ön Ayarları Listesi" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "Yeni Giriş Ön Ayarı Adı" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "Giriş Ön Ayarı Ara" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "Giriş Ön Ayarları Listesi" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "Yüksek Frekans Sönümleme" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "Oda Boyutu" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "Küçük" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "Orta" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "Büyük" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "Tünel" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "Büyük/pürüzsüz" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "Deneysel" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "Yayılma" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "Ön Gecikme" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "Bozunma Süresi" + +#: data/ui/reverb.ui:197 +#, fuzzy +msgid "Wet Amount" +msgstr "Miktar" + +#: data/ui/reverb.ui:225 +#, fuzzy +msgid "Wet Level" +msgstr "Hedef Seviye" + +#: data/ui/reverb.ui:232 +#, fuzzy +msgid "Dry Amount" +msgstr "Miktar" + +#: data/ui/reverb.ui:259 +#, fuzzy +msgid "Dry Level" +msgstr "Seviye" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "Bas Kesim" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "Tiz Kesim" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "Ortam" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "Boş Duvarlar" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "Oda" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "Büyük Boş Salon" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "Disko" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "Büyük Dolu Salon" + +#: data/ui/rnnoise.ui:31 +#, fuzzy +msgid "Import Model" +msgstr "Dürtü Dosyasını İçeri Al" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "Modeller" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "Standart Model" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "Etkin Model" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "Genel Görünüm" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "EasyEffects Kılavuzunu Aç" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "Tam ekran/Tam ekrandan geri yükle" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "Pencereyi Kapat" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "EasyEffects'ten Çık" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "Denge" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "Giriş Dengesi" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "Yumuşak kırpım" + +#: data/ui/stereo_tools.ui:106 +#, fuzzy +msgid "Softclip Level" +msgstr "Yumuşak kırpım" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "Stereo Matris" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (Stereo Öntanımlı)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (Stereo Orta Tarafa)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (Orta Taraftan Stereo)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (Mono Sol Kanal)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (Mono Sağ Kanal)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (Mono İşlem L+R)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (Stereo Kanalları Ters Çevir)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "Stereo Kipi" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "Ters Faz" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "Seviye Tarafı" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "Denge Tarafı" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "Orta Seviye" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "Orta Panorama" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "Çıkış Dengesi" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "Gecikme L/R" + +#: data/ui/stereo_tools.ui:446 +#, fuzzy +msgid "Delay Left Right" +msgstr "Gecikme L/R" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "Stereo Taban" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "Stereo Faz" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "Çalışıyor" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "Askıya alındı" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "Boşta" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "Oluşturuluyor" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "Hata" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "Bilinmiyor" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "kanallar" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "Çıkış Ön Ayarları: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "Giriş Ön Ayarları: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "PipeWire uygulamaları için ses efektleri" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "EasyEffects'ten çık. Servis kipinde çalışırken kullanışlıdır." + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "Bir ön ayar yükle. Örnek: easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "EasyEffects’i Sıfırla." + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "Pencereyi Gizle." + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "Kullanılabilir hazır ayarları göster." + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +#, fuzzy +msgid "Impulse File Not Imported" +msgstr "Dürtü Dosyasını İçe Aktar" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "Dürtü Dosyasını İçe Aktar" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "Aç" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "İptal" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Dürtü Yanıtı" + +#: src/convolver_menu_impulses.cpp:243 +#, fuzzy +msgid "Load Impulse" +msgstr "Dürtü Dosyasını İçeri Al" + +#: src/convolver_menu_impulses.cpp:246 +#, fuzzy +msgid "Remove Impulse" +msgstr "Dürtü Dosyasını İçeri Al" + +#: src/convolver_ui.cpp:323 +#, fuzzy +msgid "No Impulse File Loaded" +msgstr "Dürtü Dosyasını İçe Aktar" + +#: src/convolver_ui.cpp:345 +#, fuzzy +msgid "Failed To Load The Impulse File" +msgstr "Dürtü Dosyası Yüklenemedi" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "Kaydediciler" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "Oynatıcılar" + +#: src/effects_box.cpp:307 +#, fuzzy +msgid "Effects" +msgstr "EasyEffects" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "sonsuzluk" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "APO Ön Ayar Dosyasını İçe Aktar" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "APO Ön Ayarları" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "Otomatik Yükleme Ön Ayarını Kaldır" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "Kaldır" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "Çıkış Aygıtı" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "Ekle" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "Ön Ayarı İçe Aktar" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "Model Dosyasını İçe Aktar" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "Bas Yükseltici" + +#: src/tags_plugin_name.cpp:27 +#, fuzzy +msgid "Bass Loudness" +msgstr "Yüksek Ses" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "Sarsıcı" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "Çapraz Besleme" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "Kristalleştirici" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "Deesser" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "Gecikme" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "Yankı Önleyici" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "Ekolayzır" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "Uyarıcı" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "Süzgeç" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "Sınırlayıcı" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "Yükseltici" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "Çoklu Bant Şıkıştırıcı" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "Çoklu Bant Geçitleme" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "Perde" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "Yankılanma" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "Gürültü Azaltma" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "Stereo Araçları" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects gelişmiş bir ses işleme aracıdır. Ekolayzır, sınırlayıcı, " +#~ "sıkıştırıcı ve yankılanma araçları içerir. Bunları tamamlamak için ayrıca " +#~ "bir spektrum analizörü bulunmaktadır." + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects, PulseEffects'in devamıdır. EasyEffects yalnızca PipeWire'ın " +#~ "ses sunucusunu destekler. PulseAudio kullanıcıları bunun yerine " +#~ "PulseEffects kullanmalıdır." + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "EasyEffects, öntanımlı PipeWire ses sunucusunu kullandığından, " +#~ "kullandığınız uygulamaların tümü olmasa da çoğu ile çalışacaktır. " +#~ "Desteklenen tüm uygulamalar, her birinin ayrı ayrı etkinleştirilebileceği " +#~ "ana pencerede sunulur." + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "Ses çıkışını manipüle etmenin yanı sıra, EasyEffects, mikrofon gibi bir " +#~ "giriş cihazına da efektler uygulayabilir. Bu özellik ses kaydında da " +#~ "kullanışlıdır ve sesli konuşmalarda da iyi çalışır." + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "EasyEffects başlatıldığında, son oturumda kullanılan ayarlamaları " +#~ "rahatlıkla hatırlayacaktır. Tüm mevcut ayarları profil olarak kaydetmek " +#~ "de mümkündür." + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "İki ses çıkışı uygulamasını gösteren ana sayfa" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "Ses denetimlerini gösteren bas yükseltici sayfası" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "Ses denetimlerini gösteren sarsıcı sayfası" + +#~ msgid "This release adds the following features:" +#~ msgstr "Bu sürüm aşağıdaki özellikleri ekler:" + +#~ msgid "This release fixes the following bugs:" +#~ msgstr "Bu sürüm aşağıdaki hataları düzeltir:" + +#, fuzzy +#~ msgid "and #1427" +#~ msgstr "Bant 1" + +#, fuzzy +#~ msgid "Many translation updates" +#~ msgstr "Çeviriler güncellendi" + +#~ msgid "" +#~ "EasyEffects icon has been updated in a way that should make it visible in " +#~ "QT desktops." +#~ msgstr "" +#~ "EasyEffects simgesi, QT masaüstlerinde görünmesini sağlayacak şekilde " +#~ "güncellendi." + +#~ msgid "This release fixes the following bug:" +#~ msgstr "Bu sürüm aşağıdaki hatayı düzeltir:" + +#~ msgid "This release adds the following feature:" +#~ msgstr "Bu sürüm aşağıdaki özelliği ekler:" + +#~ msgid "Better support for computer suspending." +#~ msgstr "Bilgisayarın askıya alınması için daha iyi destek." + +#~ msgid "Updated translations" +#~ msgstr "Çeviriler güncellendi" + +#~ msgid "" +#~ "LibAdwaita is used to create some parts of our window and for handling " +#~ "the switching between dark and light themes." +#~ msgstr "" +#~ "LibAdwaita, penceremizin bazı bölümlerini oluşturmak ve koyu ile açık " +#~ "temalar arasında geçiş yapmak için kullanılır." + +#~ msgid "The settings menu has been redesigned using LibAdwaita widgets." +#~ msgstr "" +#~ "Ayarlar menüsü, LibAdwaita widget'ları kullanılarak yeniden tasarlandı." + +#~ msgid "" +#~ "GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly." +#~ msgstr "" +#~ "GTKMM ve GLIBMM artık bir bağımlılık değil. Artık doğrudan gtk4 " +#~ "kullanıyoruz." + +#~ msgid "" +#~ "Pavucontrol is not added anymore to input applications list on systems " +#~ "with localization different than English." +#~ msgstr "" +#~ "İngilizce'den farklı yerelleştirmeye sahip sistemlerde giriş uygulamaları " +#~ "listesine Pavucontrol artık eklenmiyor." + +#~ msgid "Updated Chinese translation." +#~ msgstr "Çince çeviri güncellendi." + +#~ msgid "Updated Italian translation." +#~ msgstr "İtalyanca çeviri güncellendi." + +#~ msgid "Fixed the locale in a few widgets" +#~ msgstr "Birkaç widget'ta yerel ayar düzeltildi" + +#~ msgid "Fixed wrong alignment in a few widgets" +#~ msgstr "Birkaç widget'ta yanlış hizalama düzeltildi" + +#~ msgid "Improved equalizer interface." +#~ msgstr "Ekolayzır arayüzü iyileştirildi." + +#~ msgid "" +#~ "The application and its repository have been renamed from PulseEffects to " +#~ "`EasyEffects`" +#~ msgstr "" +#~ "Uygulama ve deposu, PulseEffects'ten `EasyEffects` olarak yeniden " +#~ "adlandırıldı" + +#~ msgid "gtkmm3 was replaced by gtkmm4" +#~ msgstr "gtkmm3, gtkmm4 ile değiştirildi" + +#~ msgid "Gstreamer was replaced by native PipeWire filters." +#~ msgstr "Gstreamer, yerel PipeWire süzgeçleriyle değiştirildi." + +#~ msgid "" +#~ "New libraries are being used and some of the librarires that were " +#~ "optional before are now required" +#~ msgstr "" +#~ "Yeni kütüphaneler kullanılıyor ve daha önce isteğe bağlı olan " +#~ "kütüphanelerden bazıları artık gerekli" + +#~ msgid "Average" +#~ msgstr "Ortalama" + +#~ msgid "Failed" +#~ msgstr "Başarısız" + +#~ msgid "Use Default" +#~ msgstr "Öntanımlıyı Kullan" + +#~ msgid "Remove this plugin" +#~ msgstr "Bu eklentiyi kaldır" + +#~ msgid "Import Presets" +#~ msgstr "Önayarları İçe Aktar" + +#~ msgid "Start Service at Login" +#~ msgstr "Oturum Açarken Hizmeti Başlat" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Etkin Model" + +#~ msgid "Add to Blocklist" +#~ msgstr "Kara Listeye Ekle" + +#~ msgid "Blocklist" +#~ msgstr "Kara Liste" + +#~ msgid "Add Plugin" +#~ msgstr "Eklenti Ekle" + +#~ msgid "Speakers" +#~ msgstr "Hoparlörler" + +#~ msgid "Microphone" +#~ msgstr "Mikrofon" + +#~ msgid "enabled" +#~ msgstr "etkin" + +#~ msgid "disabled" +#~ msgstr "devre dışı" + +#~ msgid "Plugins" +#~ msgstr "Eklentiler" + +#~ msgid "Format" +#~ msgstr "Biçim" + +#~ msgid "Latency" +#~ msgstr "Gecikme" + +#~ msgid "idle" +#~ msgstr "boşta" + +#~ msgid "Faster" +#~ msgstr "Daha Hızlı" + +#~ msgid "Preserve Formant" +#~ msgstr "Biçimlendiriciyi Koru" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Help" +#~ msgstr "Yardım" + +#~ msgid "Show Spectrum" +#~ msgstr "Spektrumu Göster" + +#~ msgid "Use Custom Color" +#~ msgstr "Özel Renk Kullan" + +#~ msgid "Use Gradient" +#~ msgstr "Geçişli Renk Kullan" + +#~ msgid "Spectrum Color" +#~ msgstr "Spektrum Rengi" + +#~ msgid "Gradient Color" +#~ msgstr "Geçiş Rengi" + +#~ msgid "Spectrum Type" +#~ msgstr "Spektrum Türü" + +#~ msgid "Exponent" +#~ msgstr "Katsayı" + +#~ msgid "Sampling" +#~ msgstr "Örnekleme" + +#~ msgid "Block Size" +#~ msgstr "Blok Boyutu" + +#~ msgid "Pipeline Input" +#~ msgstr "Pipeline Giriş" + +#~ msgid "Buffer" +#~ msgstr "Arabellek" + +#~ msgid "Niceness" +#~ msgstr "Hassaslık" + +#~ msgid "Priority Type" +#~ msgstr "Öncelik Türü" + +#~ msgid "About" +#~ msgstr "Hakkında" + +#~ msgid "Priority" +#~ msgstr "Öncelik" + +#~ msgid "Resampler" +#~ msgstr "Örnekleme" + +#~ msgid "Default Source" +#~ msgstr "Öntanımlı Kaynak" + +#~ msgid "Protocol" +#~ msgstr "Protokol" + +#~ msgid "Default Sample Format" +#~ msgstr "Öntanımlı Örnek Biçimi" + +#~ msgid "Channel Mapping" +#~ msgstr "Kanal Eşleme" + +#~ msgid "File" +#~ msgstr "Dosya" + +#~ msgid "Configuration" +#~ msgstr "Yapılandırma" + +#~ msgid "Resamplers" +#~ msgstr "Örnekleyiciler" + +#~ msgid "Detect Silence" +#~ msgstr "Sessizliği Algıla" + +#~ msgid "Weights" +#~ msgstr "Ağırlık" + +#~ msgid "Limit" +#~ msgstr "Sınır" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "Zayıflatma" + +#~ msgid "LR4" +#~ msgstr "LR4" + +#~ msgid "LR8" +#~ msgstr "LR8" + +#~ msgid "Muted" +#~ msgstr "Sessiz" + +#~ msgid "Distant Headphones" +#~ msgstr "Uzak Kulaklıklar" + +#~ msgid "Reset Equalizer" +#~ msgstr "Ekolayzır Sıfırla" + +#~ msgid "RLC (BT)" +#~ msgstr "RLC (BT)" + +#~ msgid "RLC (MT)" +#~ msgstr "RLC (MT)" + +#~ msgid "BWC (BT)" +#~ msgstr "BWC (BT)" + +#~ msgid "BWC (MT)" +#~ msgstr "BWC (MT)" + +#~ msgid "LRX (BT)" +#~ msgstr "LRX (BT)" + +#~ msgid "LRX (MT)" +#~ msgstr "LRX (MT)" + +#~ msgid "APO (DR)" +#~ msgstr "APO (DR)" + +#~ msgid "x1" +#~ msgstr "x1" + +#~ msgid "x2" +#~ msgstr "x2" + +#~ msgid "x3" +#~ msgstr "x3" + +#~ msgid "x4" +#~ msgstr "x4" + +#~ msgid "Apply" +#~ msgstr "Uygula" + +#~ msgid "Dry" +#~ msgstr "Sertlik" + +#~ msgid "S/C Level" +#~ msgstr "S/C Seviye" + +#~ msgid "Import Impulse Response File" +#~ msgstr "Dürtü Yanıt Dosyasını İçeri Aktar" + +#~ msgid "Select the impulse Response File" +#~ msgstr "Dürtü Yanıt Dosyasını Seç" + +#~ msgid "Loudness Range" +#~ msgstr "Yüksek Ses Aralığı" + +#~ msgid "Before" +#~ msgstr "Öncesi" + +#~ msgid "After" +#~ msgstr "Sonrası" + +#~ msgid "Webrtc" +#~ msgstr "Webrtc" + +#~ msgid "Extended Filter" +#~ msgstr "Genişletilmiş Süzgeç" + +#~ msgid "Delay Agnostic" +#~ msgstr "Agnostik Gecikme" + +#~ msgid "Suppresion Level" +#~ msgstr "Bastırma Seviyesi" + +#~ msgid "Low" +#~ msgstr "Düşük" + +#~ msgid "Moderate" +#~ msgstr "Ölçülü" + +#~ msgid "High" +#~ msgstr "Yüksek" + +#~ msgid "Very High" +#~ msgstr "Çok Yüksek" + +#~ msgid "Noise Suppressor" +#~ msgstr "Gürültü Baskılayıcı" + +#~ msgid "Adaptive Digital" +#~ msgstr "Dijital Uyarlamalı" + +#~ msgid "Fixed Digital" +#~ msgstr "Dijital Sabitleyici" + +#~ msgid "Gain Controller" +#~ msgstr "Kazanç Denetleyicisi" + +#~ msgid "Detection Likelihood" +#~ msgstr "Algılama Olasılığı" + +#~ msgid "Very Low" +#~ msgstr "Çok Düşük" + +#~ msgid "Voice Detector" +#~ msgstr "Ses Dedektörü" + +#~ msgid "" +#~ "Automatically apply this preset whenever the currently used device is " +#~ "plugged in the system" +#~ msgstr "" +#~ "Şu anda kullanılan cihaz sisteme takılı olduğunda bu ön ayarı otomatik " +#~ "olarak uygula" + +#~ msgid "Volume" +#~ msgstr "Ses" + +#~ msgid "Sine" +#~ msgstr "Sinüs" + +#~ msgid "Square" +#~ msgstr "Kare" + +#~ msgid "Saw" +#~ msgstr "Kesir" + +#~ msgid "Triangle" +#~ msgstr "Üçgen" + +#~ msgid "Silence" +#~ msgstr "Sessizlik" + +#~ msgid "Pink Noise" +#~ msgstr "Pembe Gürültü" + +#~ msgid "Ticks" +#~ msgstr "İşaretler" + +#~ msgid "Gaussian Noise" +#~ msgstr "Gauss Gürültü" + +#~ msgid "Red Noise" +#~ msgstr "Kırmızı Gürültü" + +#~ msgid "Blue Noise" +#~ msgstr "Mavi Gürültü" + +#~ msgid "Violet Noise" +#~ msgstr "Menekşe Gürültü" + +#~ msgid "Window" +#~ msgstr "Pencere" + +#~ msgid "Measure Noise" +#~ msgstr "Gürültü Ölçümü" + +#~ msgid "Subtract Noise" +#~ msgstr "Gürültü Çıkar" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "Sesi ayarla ve efektleri aç/kapat" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "Yerleşik ön ayarlara sahip bir ekolayzır içerir" + +#~ msgid "Input Limiter" +#~ msgstr "Giriş Sınırlayıcı" + +#~ msgid "Calibration" +#~ msgstr "Kalibrasyon" + +#~ msgid "easyeffects" +#~ msgstr "easyeffects" + +#~ msgid "Pulseaudio" +#~ msgstr "Pulseaudio" + +#~ msgid "paused" +#~ msgstr "durdurulmuş" + +#~ msgid "playing" +#~ msgstr "oynatılıyor" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..dceef2d --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,2750 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the easyeffects package. +# FIRST AUTHOR , YEAR. +# eternal , 2020-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: easyeffects\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-25 19:45-0300\n" +"PO-Revision-Date: 2022-07-22 11:20+0000\n" +"Last-Translator: Eric \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.14-dev\n" + +#: data/com.github.wwmm.easyeffects.desktop.in:3 +msgid "EasyEffects" +msgstr "EasyEffects" + +#: data/com.github.wwmm.easyeffects.desktop.in:4 +msgid "Equalizer, Compressor and Other Audio Effects" +msgstr "均衡器、压缩器和其他音效" + +#: data/com.github.wwmm.easyeffects.desktop.in:5 +msgid "Audio Effects for PipeWire Applications" +msgstr "为使用 PipeWire 的应用提供音效" + +#: data/com.github.wwmm.easyeffects.desktop.in:6 +msgid "limiter;compressor;reverberation;equalizer;autovolume;" +msgstr "限幅器;压缩器;混响;均衡器;自动音量;" + +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:14 +#: data/schemas/com.github.wwmm.easyeffects.gschema.xml:17 +msgid "\"Presets\"" +msgstr "\"预设\"" + +#: data/ui/app_info.ui:212 +msgid "Enable/disable this application" +msgstr "启用/禁用此应用程序" + +#: data/ui/app_info.ui:213 +msgid "Enable" +msgstr "启用" + +#: data/ui/app_info.ui:225 +msgid "Excluded App List: Add/remove this application" +msgstr "" + +#: data/ui/app_info.ui:226 +msgid "Exclude" +msgstr "" + +#: data/ui/app_info.ui:248 data/ui/app_info.ui:250 +msgid "Mute Application" +msgstr "将程序静音" + +#: data/ui/app_info.ui:272 +msgid "Change the volume of this application" +msgstr "" + +#: data/ui/app_info.ui:274 +msgid "Application Volume" +msgstr "应用程序音量" + +#: data/ui/application_window.ui:6 +msgid "_Preferences" +msgstr "首选项(_P)" + +#: data/ui/application_window.ui:10 +msgid "_Manual" +msgstr "使用手册(_M)" + +#: data/ui/application_window.ui:14 +msgid "_Shortcuts" +msgstr "快捷键(_S)" + +#: data/ui/application_window.ui:20 +msgid "_Reset Settings" +msgstr "重置设置(_R)" + +#: data/ui/application_window.ui:26 +msgid "_About EasyEffects" +msgstr "关于 EasyEffects (_A)" + +#: data/ui/application_window.ui:52 data/ui/reverb.ui:14 +#: src/presets_menu.cpp:108 src/presets_menu.cpp:258 src/presets_menu.cpp:259 +#: src/presets_menu.cpp:276 src/presets_menu.cpp:277 +msgid "Presets" +msgstr "预设" + +#: data/ui/application_window.ui:54 +msgid "Presets Menu" +msgstr "预设菜单" + +#: data/ui/application_window.ui:61 +msgid "Enable/disable the global bypass" +msgstr "" + +#: data/ui/application_window.ui:66 +msgid "Global Bypass" +msgstr "全局旁路" + +#: data/ui/application_window.ui:76 +msgid "Primary Menu" +msgstr "主菜单" + +#: data/ui/application_window.ui:91 +msgid "EasyEffects Window" +msgstr "EasyEffects 窗口" + +#: data/ui/apps_box.ui:17 +msgid "Applications List" +msgstr "应用程序列表" + +#: data/ui/apps_box.ui:27 +msgid "Empty List" +msgstr "空列表" + +#: data/ui/apps_box.ui:28 +msgid "No Audio Application Available" +msgstr "没有可用的音频应用程序" + +#: data/ui/autogain.ui:18 +msgid "Target" +msgstr "目标" + +#: data/ui/autogain.ui:52 +msgid "Maximum History" +msgstr "历史记录最大值" + +#: data/ui/autogain.ui:86 +msgid "Reference" +msgstr "参考" + +#: data/ui/autogain.ui:98 data/ui/autogain.ui:139 +msgid "Momentary" +msgstr "瞬时" + +#: data/ui/autogain.ui:99 data/ui/autogain.ui:169 +msgid "Short-Term" +msgstr "短期" + +#: data/ui/autogain.ui:100 data/ui/autogain.ui:199 +msgid "Integrated" +msgstr "综合" + +#: data/ui/autogain.ui:101 +msgid "Geometric Mean (MSI)" +msgstr "" + +#: data/ui/autogain.ui:102 +msgid "Geometric Mean (MS)" +msgstr "" + +#: data/ui/autogain.ui:103 +msgid "Geometric Mean (MI)" +msgstr "" + +#: data/ui/autogain.ui:104 +msgid "Geometric Mean (SI)" +msgstr "" + +#: data/ui/autogain.ui:119 +msgid "Reset History" +msgstr "清除记录" + +#: data/ui/autogain.ui:229 +msgid "Relative" +msgstr "相对值" + +#: data/ui/autogain.ui:259 +msgid "Range" +msgstr "范围" + +#: data/ui/autogain.ui:292 data/ui/bass_loudness.ui:19 +#: src/tags_plugin_name.cpp:40 +msgid "Loudness" +msgstr "响度" + +#: data/ui/autogain.ui:324 +msgid "Output Gain" +msgstr "输出增益" + +#: data/ui/autogain.ui:361 data/ui/bass_enhancer.ui:251 +#: data/ui/bass_loudness.ui:136 data/ui/compressor.ui:505 +#: data/ui/compressor.ui:987 data/ui/convolver.ui:216 data/ui/crossfeed.ui:133 +#: data/ui/crystalizer.ui:33 data/ui/deesser.ui:407 data/ui/delay.ui:101 +#: data/ui/echo_canceller.ui:105 data/ui/equalizer.ui:200 +#: data/ui/exciter.ui:251 data/ui/filter.ui:163 data/ui/gate.ui:611 +#: data/ui/gate.ui:1092 data/ui/limiter.ui:718 data/ui/loudness.ui:123 +#: data/ui/maximizer.ui:136 data/ui/multiband_compressor.ui:378 +#: data/ui/multiband_gate.ui:1617 data/ui/pipe_manager_box.ui:306 +#: data/ui/pitch.ui:295 data/ui/presets_menu.ui:177 data/ui/reverb.ui:351 +#: data/ui/rnnoise.ui:155 data/ui/stereo_tools.ui:30 +#: data/ui/stereo_tools.ui:544 src/application_ui.cpp:266 +msgid "Input" +msgstr "输入" + +#: data/ui/autogain.ui:380 data/ui/bass_enhancer.ui:270 +#: data/ui/bass_loudness.ui:155 data/ui/compressor.ui:1006 +#: data/ui/convolver.ui:235 data/ui/crossfeed.ui:152 data/ui/crystalizer.ui:52 +#: data/ui/deesser.ui:426 data/ui/delay.ui:120 data/ui/echo_canceller.ui:124 +#: data/ui/equalizer.ui:219 data/ui/exciter.ui:270 data/ui/filter.ui:182 +#: data/ui/gate.ui:1111 data/ui/limiter.ui:737 data/ui/loudness.ui:142 +#: data/ui/maximizer.ui:155 data/ui/multiband_compressor.ui:397 +#: data/ui/multiband_gate.ui:1636 data/ui/pitch.ui:314 data/ui/reverb.ui:370 +#: data/ui/rnnoise.ui:174 data/ui/stereo_tools.ui:563 +msgid "Plugin Input Gain" +msgstr "插件输入增益" + +#: data/ui/autogain.ui:445 data/ui/bass_enhancer.ui:335 +#: data/ui/bass_loudness.ui:53 data/ui/bass_loudness.ui:220 +#: data/ui/compressor.ui:1071 data/ui/convolver.ui:300 data/ui/crossfeed.ui:217 +#: data/ui/crystalizer.ui:117 data/ui/deesser.ui:491 data/ui/delay.ui:185 +#: data/ui/echo_canceller.ui:189 data/ui/equalizer.ui:284 +#: data/ui/exciter.ui:335 data/ui/filter.ui:247 data/ui/gate.ui:1176 +#: data/ui/limiter.ui:802 data/ui/loudness.ui:207 data/ui/maximizer.ui:220 +#: data/ui/multiband_compressor.ui:462 data/ui/multiband_gate.ui:464 +#: data/ui/multiband_gate.ui:824 data/ui/multiband_gate.ui:1184 +#: data/ui/multiband_gate.ui:1544 data/ui/multiband_gate.ui:1701 +#: data/ui/pipe_manager_box.ui:209 data/ui/pitch.ui:379 +#: data/ui/presets_menu.ui:28 data/ui/reverb.ui:435 data/ui/rnnoise.ui:239 +#: data/ui/stereo_tools.ui:371 data/ui/stereo_tools.ui:628 +#: src/application_ui.cpp:265 +msgid "Output" +msgstr "输出" + +#: data/ui/autogain.ui:464 data/ui/bass_enhancer.ui:354 +#: data/ui/bass_loudness.ui:239 data/ui/compressor.ui:1090 +#: data/ui/convolver.ui:319 data/ui/crossfeed.ui:236 data/ui/crystalizer.ui:136 +#: data/ui/deesser.ui:510 data/ui/delay.ui:204 data/ui/echo_canceller.ui:208 +#: data/ui/equalizer.ui:303 data/ui/exciter.ui:354 data/ui/filter.ui:266 +#: data/ui/gate.ui:1195 data/ui/limiter.ui:821 data/ui/loudness.ui:226 +#: data/ui/maximizer.ui:239 data/ui/multiband_compressor.ui:481 +#: data/ui/multiband_gate.ui:1720 data/ui/pitch.ui:398 data/ui/reverb.ui:454 +#: data/ui/rnnoise.ui:258 data/ui/stereo_tools.ui:647 +msgid "Plugin Output Gain" +msgstr "插件输出增益" + +#: data/ui/autogain.ui:527 data/ui/bass_enhancer.ui:448 +#: data/ui/bass_loudness.ui:302 data/ui/compressor.ui:1153 +#: data/ui/convolver.ui:382 data/ui/crossfeed.ui:299 data/ui/crystalizer.ui:191 +#: data/ui/deesser.ui:633 data/ui/delay.ui:267 data/ui/echo_canceller.ui:271 +#: data/ui/equalizer.ui:366 data/ui/equalizer_band.ui:223 +#: data/ui/equalizer_band.ui:295 data/ui/exciter.ui:447 data/ui/filter.ui:329 +#: data/ui/gate.ui:1288 data/ui/limiter.ui:884 data/ui/loudness.ui:289 +#: data/ui/maximizer.ui:334 data/ui/multiband_compressor.ui:544 +#: data/ui/multiband_gate.ui:1783 data/ui/pitch.ui:461 data/ui/reverb.ui:517 +#: data/ui/rnnoise.ui:321 data/ui/stereo_tools.ui:710 +msgid "Reset" +msgstr "重置" + +#: data/ui/autogain.ui:541 data/ui/bass_enhancer.ui:462 +#: data/ui/bass_loudness.ui:316 data/ui/compressor.ui:1167 +#: data/ui/convolver.ui:396 data/ui/crossfeed.ui:313 data/ui/deesser.ui:647 +#: data/ui/delay.ui:281 data/ui/echo_canceller.ui:285 data/ui/equalizer.ui:380 +#: data/ui/exciter.ui:461 data/ui/filter.ui:343 data/ui/gate.ui:1302 +#: data/ui/limiter.ui:898 data/ui/loudness.ui:303 data/ui/maximizer.ui:348 +#: data/ui/multiband_compressor.ui:558 data/ui/multiband_gate.ui:1797 +#: data/ui/pitch.ui:475 data/ui/reverb.ui:531 data/ui/rnnoise.ui:335 +#: data/ui/stereo_tools.ui:724 +msgid "Using" +msgstr "使用" + +#: data/ui/autoload_row.ui:16 data/ui/compressor.ui:528 data/ui/gate.ui:634 +msgid "Device" +msgstr "设备" + +#: data/ui/autoload_row.ui:40 data/ui/factory_clients_listview.ui:44 +#: data/ui/factory_modules_listview.ui:44 data/ui/pipe_manager_box.ui:53 +#: data/ui/pipe_manager_box.ui:89 data/ui/presets_menu.ui:47 +#: data/ui/presets_menu.ui:195 +msgid "Name" +msgstr "名称" + +#: data/ui/autoload_row.ui:64 +msgid "Profile" +msgstr "概述" + +#: data/ui/autoload_row.ui:89 +msgid "Preset" +msgstr "预设" + +#: data/ui/autoload_row.ui:114 +msgid "Remove this autoload preset" +msgstr "删除此自动加载预设" + +#: data/ui/bass_enhancer.ui:12 data/ui/compressor.ui:458 data/ui/deesser.ui:14 +#: data/ui/exciter.ui:12 data/ui/gate.ui:564 +msgid "Listen" +msgstr "聆听" + +#: data/ui/bass_enhancer.ui:23 data/ui/exciter.ui:23 +msgid "Blend Harmonics" +msgstr "谐波注入" + +#: data/ui/bass_enhancer.ui:35 data/ui/exciter.ui:35 +msgid "3rd" +msgstr "3 次" + +#: data/ui/bass_enhancer.ui:78 data/ui/exciter.ui:78 +msgid "2nd" +msgstr "2 次" + +#: data/ui/bass_enhancer.ui:97 data/ui/exciter.ui:97 +msgid "Amount" +msgstr "程度" + +#: data/ui/bass_enhancer.ui:131 data/ui/bass_enhancer.ui:413 +#: data/ui/exciter.ui:131 data/ui/exciter.ui:413 +msgid "Harmonics" +msgstr "谐波" + +#: data/ui/bass_enhancer.ui:166 data/ui/exciter.ui:166 +msgid "Scope" +msgstr "范围" + +#: data/ui/bass_enhancer.ui:200 +msgid "Floor" +msgstr "下限" + +#: data/ui/bass_enhancer.ui:229 +msgid "Floor Value" +msgstr "下限" + +#: data/ui/bass_loudness.ui:87 +msgid "Link" +msgstr "" + +#: data/ui/blocklist_menu.ui:23 data/ui/blocklist_menu.ui:26 +msgid "Application Name" +msgstr "应用程序名称" + +#: data/ui/blocklist_menu.ui:42 +msgid "Add to Excluded Applications" +msgstr "添加到排除的程序" + +#: data/ui/blocklist_menu.ui:86 +msgid "Excluded Applications List" +msgstr "已排除程序列表" + +#: data/ui/blocklist_menu.ui:99 +msgid "Show Excluded Applications" +msgstr "显示已排除的程序" + +#: data/ui/compressor.ui:31 src/tags_plugin_name.cpp:28 +msgid "Compressor" +msgstr "压缩器" + +#: data/ui/compressor.ui:43 data/ui/compressor.ui:430 data/ui/compressor.ui:725 +#: data/ui/deesser.ui:54 data/ui/equalizer.ui:122 data/ui/equalizer_band.ui:130 +#: data/ui/gate.ui:536 data/ui/gate.ui:830 data/ui/limiter.ui:36 +#: data/ui/multiband_compressor_band.ui:449 data/ui/multiband_gate.ui:25 +#: data/ui/pitch.ui:22 +msgid "Mode" +msgstr "模式" + +#: data/ui/compressor.ui:54 data/ui/multiband_compressor_band.ui:99 +msgid "Downward" +msgstr "向下" + +#: data/ui/compressor.ui:55 data/ui/multiband_compressor_band.ui:100 +msgid "Upward" +msgstr "向上" + +#: data/ui/compressor.ui:56 data/ui/multiband_compressor_band.ui:101 +msgid "Boosting" +msgstr "加强" + +#: data/ui/compressor.ui:63 data/ui/multiband_compressor_band.ui:88 +msgid "Compression Mode" +msgstr "压缩模式" + +#: data/ui/compressor.ui:70 data/ui/multiband_compressor_band.ui:765 +msgid "Boost Threshold" +msgstr "提升阈值" + +#: data/ui/compressor.ui:109 data/ui/multiband_compressor_band.ui:721 +msgid "Boost Amount" +msgstr "Boost 量" + +#: data/ui/compressor.ui:155 data/ui/gate.ui:50 data/ui/limiter.ui:252 +#: data/ui/limiter.ui:475 data/ui/multiband_compressor_band.ui:186 +#: data/ui/multiband_gate.ui:215 data/ui/multiband_gate.ui:575 +#: data/ui/multiband_gate.ui:935 data/ui/multiband_gate.ui:1295 +msgid "Attack" +msgstr "起始时间" + +#: data/ui/compressor.ui:166 data/ui/multiband_compressor_band.ui:166 +msgid "Time" +msgstr "时间" + +#: data/ui/compressor.ui:176 data/ui/deesser.ui:289 data/ui/gate.ui:143 +#: data/ui/gate.ui:237 data/ui/limiter.ui:336 data/ui/maximizer.ui:20 +#: data/ui/multiband_compressor_band.ui:177 data/ui/multiband_gate.ui:285 +#: data/ui/multiband_gate.ui:645 data/ui/multiband_gate.ui:1005 +#: data/ui/multiband_gate.ui:1365 +msgid "Threshold" +msgstr "阈值" + +#: data/ui/compressor.ui:203 data/ui/multiband_compressor_band.ui:222 +msgid "Attack Time" +msgstr "起音时间" + +#: data/ui/compressor.ui:226 data/ui/gate.ui:433 +#: data/ui/multiband_compressor_band.ui:247 +msgid "Attack Threshold" +msgstr "起音阈值" + +#: data/ui/compressor.ui:233 data/ui/gate.ui:56 data/ui/limiter.ui:294 +#: data/ui/limiter.ui:512 data/ui/maximizer.ui:86 +#: data/ui/multiband_compressor_band.ui:195 data/ui/multiband_gate.ui:250 +#: data/ui/multiband_gate.ui:610 data/ui/multiband_gate.ui:970 +#: data/ui/multiband_gate.ui:1330 +msgid "Release" +msgstr "消音时间" + +#: data/ui/compressor.ui:260 data/ui/multiband_compressor_band.ui:274 +msgid "Release Time" +msgstr "消音时间" + +#: data/ui/compressor.ui:285 data/ui/gate.ui:487 +#: data/ui/multiband_compressor_band.ui:302 +msgid "Release Threshold" +msgstr "消音阈值" + +#: data/ui/compressor.ui:292 data/ui/deesser.ui:323 +#: data/ui/multiband_compressor_band.ui:309 data/ui/multiband_gate.ui:319 +#: data/ui/multiband_gate.ui:679 data/ui/multiband_gate.ui:1039 +#: data/ui/multiband_gate.ui:1399 +msgid "Ratio" +msgstr "比率" + +#: data/ui/compressor.ui:330 data/ui/limiter.ui:548 +#: data/ui/multiband_compressor_band.ui:347 data/ui/multiband_gate.ui:354 +#: data/ui/multiband_gate.ui:714 data/ui/multiband_gate.ui:1074 +#: data/ui/multiband_gate.ui:1434 +msgid "Knee" +msgstr "拐点" + +#: data/ui/compressor.ui:367 data/ui/deesser.ui:359 data/ui/gate.ui:324 +#: data/ui/multiband_compressor_band.ui:385 data/ui/multiband_gate.ui:388 +#: data/ui/multiband_gate.ui:748 data/ui/multiband_gate.ui:1108 +#: data/ui/multiband_gate.ui:1468 +msgid "Makeup" +msgstr "补偿" + +#: data/ui/compressor.ui:411 data/ui/compressor.ui:923 data/ui/gate.ui:517 +#: data/ui/gate.ui:1028 +msgid "Sidechain" +msgstr "侧链" + +#: data/ui/compressor.ui:440 data/ui/deesser.ui:38 data/ui/gate.ui:546 +#: data/ui/multiband_compressor_band.ui:460 data/ui/multiband_gate.ui:196 +#: data/ui/multiband_gate.ui:556 data/ui/multiband_gate.ui:916 +#: data/ui/multiband_gate.ui:1276 +msgid "Peak" +msgstr "峰值" + +#: data/ui/compressor.ui:441 data/ui/deesser.ui:37 data/ui/gate.ui:547 +#: data/ui/multiband_compressor_band.ui:461 data/ui/multiband_gate.ui:195 +#: data/ui/multiband_gate.ui:555 data/ui/multiband_gate.ui:915 +#: data/ui/multiband_gate.ui:1275 +msgid "RMS" +msgstr "均方根值" + +#: data/ui/compressor.ui:442 data/ui/compressor.ui:794 data/ui/gate.ui:548 +#: data/ui/gate.ui:899 data/ui/multiband_compressor_band.ui:462 +msgid "Low-Pass" +msgstr "低通" + +#: data/ui/compressor.ui:443 data/ui/gate.ui:549 +#: data/ui/multiband_compressor_band.ui:463 +msgid "Uniform" +msgstr "均值" + +#: data/ui/compressor.ui:450 data/ui/gate.ui:556 +#: data/ui/multiband_compressor_band.ui:470 +msgid "Sidechain Mode" +msgstr "侧链模式" + +#: data/ui/compressor.ui:468 data/ui/gate.ui:574 +#: data/ui/multiband_compressor_band.ui:477 +msgid "Source" +msgstr "源" + +#: data/ui/compressor.ui:478 data/ui/gate.ui:584 +#: data/ui/multiband_compressor_band.ui:488 +msgid "Middle" +msgstr "中央" + +#: data/ui/compressor.ui:479 data/ui/gate.ui:585 +#: data/ui/multiband_compressor_band.ui:489 +msgid "Side" +msgstr "侧边" + +#: data/ui/compressor.ui:480 data/ui/delay.ui:20 data/ui/equalizer.ui:48 +#: data/ui/gate.ui:586 data/ui/multiband_compressor_band.ui:490 +#: data/ui/pipe_manager_box.ui:504 data/ui/stereo_tools.ui:151 +msgid "Left" +msgstr "左" + +#: data/ui/compressor.ui:481 data/ui/delay.ui:53 data/ui/equalizer.ui:60 +#: data/ui/gate.ui:587 data/ui/multiband_compressor_band.ui:491 +#: data/ui/pipe_manager_box.ui:515 data/ui/stereo_tools.ui:206 +msgid "Right" +msgstr "右" + +#: data/ui/compressor.ui:488 data/ui/gate.ui:594 +#: data/ui/multiband_compressor.ui:86 data/ui/multiband_compressor_band.ui:498 +msgid "Sidechain Source" +msgstr "侧链声源" + +#: data/ui/compressor.ui:517 data/ui/equalizer_band.ui:98 data/ui/gate.ui:623 +msgid "Type" +msgstr "类型" + +#: data/ui/compressor.ui:541 +msgid "Feed-forward" +msgstr "前馈式" + +#: data/ui/compressor.ui:542 +msgid "Feed-back" +msgstr "反馈式" + +#: data/ui/compressor.ui:543 data/ui/gate.ui:648 +msgid "External" +msgstr "外部" + +#: data/ui/compressor.ui:550 data/ui/gate.ui:655 +msgid "Sidechain Type" +msgstr "侧链类型" + +#: data/ui/compressor.ui:577 data/ui/gate.ui:682 src/plugins_box.cpp:548 +msgid "Input Device" +msgstr "输入设备" + +#: data/ui/compressor.ui:585 data/ui/gate.ui:690 +msgid "PreAmplification" +msgstr "前置放大" + +#: data/ui/compressor.ui:622 data/ui/gate.ui:727 +#: data/ui/multiband_compressor_band.ui:654 +msgid "Reactivity" +msgstr "响应" + +#: data/ui/compressor.ui:659 data/ui/gate.ui:764 data/ui/limiter.ui:210 +#: data/ui/multiband_compressor_band.ui:688 +msgid "Lookahead" +msgstr "预测时间" + +#: data/ui/compressor.ui:702 data/ui/gate.ui:807 +msgid "Sidechain Filters" +msgstr "侧链过滤器" + +#: data/ui/compressor.ui:712 data/ui/gate.ui:817 +msgid "High-Pass" +msgstr "高通滤波器" + +#: data/ui/compressor.ui:738 data/ui/equalizer_band.ui:197 data/ui/filter.ui:43 +#: data/ui/gate.ui:843 data/ui/pipe_manager_box.ui:561 +msgid "Frequency" +msgstr "频率" + +#: data/ui/compressor.ui:751 data/ui/compressor.ui:807 +#: data/ui/equalizer_band.ui:108 data/ui/gate.ui:856 data/ui/gate.ui:912 +msgid "Off" +msgstr "关" + +#: data/ui/compressor.ui:752 data/ui/compressor.ui:808 data/ui/gate.ui:857 +#: data/ui/gate.ui:913 +msgid "12 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:753 data/ui/compressor.ui:809 data/ui/gate.ui:858 +#: data/ui/gate.ui:914 +msgid "24 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:754 data/ui/compressor.ui:810 data/ui/gate.ui:859 +#: data/ui/gate.ui:915 +msgid "36 dB/oct" +msgstr "" + +#: data/ui/compressor.ui:761 data/ui/gate.ui:866 +msgid "High-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:787 data/ui/compressor.ui:843 data/ui/gate.ui:892 +#: data/ui/gate.ui:948 +msgid "High-Pass Filter Frequency" +msgstr "" + +#: data/ui/compressor.ui:817 data/ui/gate.ui:922 +msgid "Low-Pass Filter Mode" +msgstr "" + +#: data/ui/compressor.ui:869 data/ui/gate.ui:974 +msgid "Gain" +msgstr "增益" + +#: data/ui/compressor.ui:896 data/ui/gate.ui:1001 +msgid "Envelope" +msgstr "波封" + +#: data/ui/compressor.ui:950 data/ui/gate.ui:127 data/ui/gate.ui:1055 +msgid "Curve" +msgstr "压缩曲线" + +#: data/ui/convolver.ui:30 +msgid "L" +msgstr "左" + +#: data/ui/convolver.ui:33 data/ui/pipe_manager_box.ui:507 +msgid "Left Channel" +msgstr "左声道" + +#: data/ui/convolver.ui:43 +msgid "R" +msgstr "右" + +#: data/ui/convolver.ui:46 data/ui/pipe_manager_box.ui:518 +msgid "Right Channel" +msgstr "右声道" + +#: data/ui/convolver.ui:61 +msgid "Impulses" +msgstr "" + +#: data/ui/convolver.ui:69 data/ui/convolver_menu_combine.ui:113 +#: data/ui/convolver_menu_combine.ui:116 +msgid "Combine" +msgstr "" + +#: data/ui/convolver.ui:76 +msgid "Stereo Width" +msgstr "立体声宽度" + +#: data/ui/convolver.ui:104 +msgid "Spectrum" +msgstr "频谱" + +#: data/ui/convolver.ui:112 +msgid "Log Scale" +msgstr "对数坐标" + +#: data/ui/convolver.ui:122 src/tags_plugin_name.cpp:25 +msgid "Autogain" +msgstr "自动增益" + +#: data/ui/convolver.ui:138 +msgid "Rate" +msgstr "速率" + +#: data/ui/convolver.ui:159 +msgid "Samples" +msgstr "样本" + +#: data/ui/convolver.ui:180 +msgid "Duration" +msgstr "持续时间" + +#: data/ui/convolver_menu_combine.ui:15 +msgid "Combine Impulse Responses" +msgstr "混合脉冲响应" + +#: data/ui/convolver_menu_combine.ui:48 +msgid "First Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:82 +msgid "Second Kernel" +msgstr "" + +#: data/ui/convolver_menu_combine.ui:91 +msgid "Output File Name" +msgstr "输出文件名" + +#: data/ui/convolver_menu_combine.ui:95 +msgid "Combined Kernel Name" +msgstr "" + +#: data/ui/convolver_menu_impulses.ui:16 +msgid "Import Impulse" +msgstr "导入 Impulse" + +#: data/ui/convolver_menu_impulses.ui:25 data/ui/plugins_menu.ui:17 +#: data/ui/presets_menu.ui:88 data/ui/presets_menu.ui:235 +msgid "Search" +msgstr "搜索" + +#: data/ui/convolver_menu_impulses.ui:27 +msgid "Search Impulse File" +msgstr "搜索脉冲文件" + +#: data/ui/convolver_menu_impulses.ui:47 +msgid "Impulse Files List" +msgstr "脉冲文件列表" + +#: data/ui/crossfeed.ui:25 +msgid "Default" +msgstr "默认" + +#: data/ui/crossfeed.ui:48 +msgid "Cutoff" +msgstr "截止" + +#: data/ui/crossfeed.ui:83 +msgid "Feed" +msgstr "反馈" + +#: data/ui/crystalizer_band.ui:11 data/ui/multiband_gate.ui:175 +#: data/ui/multiband_gate.ui:535 data/ui/multiband_gate.ui:895 +#: data/ui/multiband_gate.ui:1255 +msgid "Bypass" +msgstr "旁路" + +#: data/ui/crystalizer_band.ui:17 data/ui/equalizer_band.ui:321 +#: data/ui/multiband_compressor_band.ui:136 data/ui/stereo_tools.ui:161 +#: data/ui/stereo_tools.ui:186 +msgid "Mute" +msgstr "静音静音" + +#: data/ui/deesser.ui:30 +msgid "Detection" +msgstr "侦测" + +#: data/ui/deesser.ui:61 +msgid "Wide" +msgstr "宽频段" + +#: data/ui/deesser.ui:62 +msgid "Split" +msgstr "分割频段" + +#: data/ui/deesser.ui:78 +msgid "F1 Split" +msgstr "F1 分离" + +#: data/ui/deesser.ui:98 +msgid "Frequency 1 Split" +msgstr "频率 1 分割" + +#: data/ui/deesser.ui:111 +msgid "F2 Peak" +msgstr "F2 峰值" + +#: data/ui/deesser.ui:131 +msgid "Frequency 2 Peak" +msgstr "频率 2 峰值" + +#: data/ui/deesser.ui:149 +msgid "F1 Gain" +msgstr "F1 增益" + +#: data/ui/deesser.ui:177 +msgid "Frequency 1 Gain" +msgstr "频率 1 增益" + +#: data/ui/deesser.ui:184 +msgid "F2 Level" +msgstr "F2 级别" + +#: data/ui/deesser.ui:212 +msgid "Frequency 2 Level" +msgstr "频率 2 水平" + +#: data/ui/deesser.ui:219 +msgid "F2 Peak Q" +msgstr "" + +#: data/ui/deesser.ui:247 +msgid "Frequency 2 Peak Q" +msgstr "频率 2 Peak Q" + +#: data/ui/deesser.ui:254 +msgid "Laxity" +msgstr "" + +#: data/ui/deesser.ui:569 +msgid "Detected" +msgstr "已侦测到" + +#: data/ui/deesser.ui:599 data/ui/gate.ui:319 data/ui/maximizer.ui:298 +msgid "Reduction" +msgstr "衰减" + +#: data/ui/echo_canceller.ui:20 +msgid "Frame Size" +msgstr "Frame 大小" + +#: data/ui/echo_canceller.ui:55 +msgid "Filter Length" +msgstr "过滤器长度" + +#: data/ui/effects_box.ui:114 +msgid "Excluded Apps" +msgstr "排除的应用" + +#: data/ui/equalizer.ui:88 +msgid "Bands" +msgstr "频段" + +#: data/ui/equalizer.ui:133 +msgid "IIR" +msgstr "" + +#: data/ui/equalizer.ui:134 +msgid "FIR" +msgstr "" + +#: data/ui/equalizer.ui:135 +msgid "FFT" +msgstr "" + +#: data/ui/equalizer.ui:136 +msgid "SPM" +msgstr "" + +#: data/ui/equalizer.ui:153 +msgid "Split Channels" +msgstr "分离声道" + +#: data/ui/equalizer.ui:159 +msgid "Flat Response" +msgstr "平滑响应" + +#: data/ui/equalizer.ui:167 +msgid "Calculate Frequencies" +msgstr "频率响应" + +#: data/ui/equalizer.ui:175 +msgid "Load APO Preset" +msgstr "加载 APO 预设" + +#: data/ui/equalizer_band.ui:109 +msgid "Bell" +msgstr "带通" + +#: data/ui/equalizer_band.ui:110 +msgid "High Pass" +msgstr "高通" + +#: data/ui/equalizer_band.ui:111 +msgid "High Shelf" +msgstr "高架" + +#: data/ui/equalizer_band.ui:112 +msgid "Low Pass" +msgstr "低通" + +#: data/ui/equalizer_band.ui:113 +msgid "Low Shelf" +msgstr "低架" + +#: data/ui/equalizer_band.ui:114 +msgid "Notch" +msgstr "带阻" + +#: data/ui/equalizer_band.ui:115 data/ui/filter.ui:78 +msgid "Resonance" +msgstr "共鸣" + +#: data/ui/equalizer_band.ui:116 +msgid "All Pass" +msgstr "全通" + +#: data/ui/equalizer_band.ui:123 +msgid "Band Type" +msgstr "频段类型" + +#: data/ui/equalizer_band.ui:153 +msgid "Band Mode" +msgstr "频段模式" + +#: data/ui/equalizer_band.ui:160 +msgid "Slope" +msgstr "斜率" + +#: data/ui/equalizer_band.ui:180 +msgid "Band Slope" +msgstr "频段斜率" + +#: data/ui/equalizer_band.ui:242 +msgid "Width" +msgstr "宽度" + +#: data/ui/equalizer_band.ui:269 +msgid "Quality" +msgstr "品质" + +#: data/ui/equalizer_band.ui:315 data/ui/multiband_compressor_band.ui:146 +#: data/ui/multiband_gate.ui:185 data/ui/multiband_gate.ui:545 +#: data/ui/multiband_gate.ui:905 data/ui/multiband_gate.ui:1265 +msgid "Solo" +msgstr "独奏" + +#: data/ui/exciter.ui:200 +msgid "Ceil" +msgstr "上限" + +#: data/ui/exciter.ui:229 +msgid "Ceil Value" +msgstr "" + +#: data/ui/factory_clients_listview.ui:72 +msgid "API" +msgstr "API" + +#: data/ui/factory_clients_listview.ui:100 +msgid "Access" +msgstr "访问" + +#: data/ui/factory_modules_listview.ui:72 +msgid "Description" +msgstr "描述" + +#: data/ui/factory_rnnoise_listview.ui:24 +msgid "Remove this model file" +msgstr "删除这个模型文件" + +#: data/ui/filter.ui:15 +msgid "12dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:16 +msgid "24dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:17 +msgid "36dB/oct Lowpass" +msgstr "" + +#: data/ui/filter.ui:18 +msgid "12dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:19 +msgid "24dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:20 +msgid "36dB/oct Highpass" +msgstr "" + +#: data/ui/filter.ui:21 +msgid "6dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:22 +msgid "12dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:23 +msgid "18dB/oct Bandpass" +msgstr "" + +#: data/ui/filter.ui:24 +msgid "6dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:25 +msgid "12dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:26 +msgid "18dB/oct Bandreject" +msgstr "" + +#: data/ui/filter.ui:113 +msgid "Inertia" +msgstr "惯性" + +#: data/ui/gate.ui:31 src/tags_plugin_name.cpp:38 +msgid "Gate" +msgstr "门限" + +#: data/ui/gate.ui:149 data/ui/gate.ui:242 +msgid "Zone" +msgstr "" + +#: data/ui/gate.ui:221 +msgid "Hysteresis" +msgstr "" + +#: data/ui/gate.ui:406 +msgid "Attack Zone Start" +msgstr "" + +#: data/ui/gate.ui:460 +#, fuzzy +msgid "Release Zone Start" +msgstr "消音时间" + +#: data/ui/gate.ui:647 +msgid "Internal" +msgstr "内部" + +#: data/ui/gate.ui:1254 data/ui/multiband_gate.ui:494 +#: data/ui/multiband_gate.ui:854 data/ui/multiband_gate.ui:1214 +#: data/ui/multiband_gate.ui:1574 +msgid "Gating" +msgstr "门控" + +#: data/ui/limiter.ui:48 +msgid "Oversampling" +msgstr "超采样" + +#: data/ui/limiter.ui:60 +msgid "Dither" +msgstr "抖动" + +#: data/ui/limiter.ui:72 +msgid "Herm Thin" +msgstr "" + +#: data/ui/limiter.ui:73 +msgid "Herm Wide" +msgstr "" + +#: data/ui/limiter.ui:74 +msgid "Herm Tail" +msgstr "" + +#: data/ui/limiter.ui:75 +msgid "Herm Duck" +msgstr "" + +#: data/ui/limiter.ui:76 +msgid "Exp Thin" +msgstr "" + +#: data/ui/limiter.ui:77 +msgid "Exp Wide" +msgstr "" + +#: data/ui/limiter.ui:78 +msgid "Exp Tail" +msgstr "" + +#: data/ui/limiter.ui:79 +msgid "Exp Duck" +msgstr "" + +#: data/ui/limiter.ui:80 +msgid "Line Thin" +msgstr "" + +#: data/ui/limiter.ui:81 +msgid "Line Wide" +msgstr "" + +#: data/ui/limiter.ui:82 +msgid "Line Tail" +msgstr "" + +#: data/ui/limiter.ui:83 +msgid "Line Duck" +msgstr "" + +#: data/ui/limiter.ui:99 data/ui/multiband_compressor.ui:68 +msgid "None" +msgstr "" + +#: data/ui/limiter.ui:100 +msgid "Half x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:101 +msgid "Half x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:102 +msgid "Half x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:103 +msgid "Half x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:104 +msgid "Half x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:105 +msgid "Half x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:106 +msgid "Half x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:107 +msgid "Half x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:108 +msgid "Half x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:109 +msgid "Half x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:110 +msgid "Full x2(2L)" +msgstr "" + +#: data/ui/limiter.ui:111 +msgid "Full x2(3L)" +msgstr "" + +#: data/ui/limiter.ui:112 +msgid "Full x3(2L)" +msgstr "" + +#: data/ui/limiter.ui:113 +msgid "Full x3(3L)" +msgstr "" + +#: data/ui/limiter.ui:114 +msgid "Full x4(2L)" +msgstr "" + +#: data/ui/limiter.ui:115 +msgid "Full x4(3L)" +msgstr "" + +#: data/ui/limiter.ui:116 +msgid "Full x6(2L)" +msgstr "" + +#: data/ui/limiter.ui:117 +msgid "Full x6(3L)" +msgstr "" + +#: data/ui/limiter.ui:118 +msgid "Full x8(2L)" +msgstr "" + +#: data/ui/limiter.ui:119 +msgid "Full x8(3L)" +msgstr "" + +#: data/ui/limiter.ui:169 +msgid "SC PreAmp" +msgstr "" + +#: data/ui/limiter.ui:198 data/ui/multiband_compressor_band.ui:647 +msgid "Sidechain PreAmplification" +msgstr "侧链前置放大" + +#: data/ui/limiter.ui:373 +msgid "Boost" +msgstr "增强" + +#: data/ui/limiter.ui:388 +msgid "Stereo Link" +msgstr "立体声连锁" + +#: data/ui/limiter.ui:433 data/ui/multiband_compressor_band.ui:116 +msgid "External Sidechain" +msgstr "外部侧链" + +#: data/ui/limiter.ui:446 data/ui/multiband_compressor.ui:109 +msgid "External Sidechain Source" +msgstr "外部侧链声源" + +#: data/ui/limiter.ui:465 +msgid "Auto Leveling" +msgstr "自动调平" + +#: data/ui/limiter.ui:505 +msgid "Auto Leveling Attack" +msgstr "自动调平起音" + +#: data/ui/limiter.ui:541 +msgid "Auto Leveling Release" +msgstr "自动调平消音" + +#: data/ui/limiter.ui:576 +#, fuzzy +msgid "Auto Leveling Knee" +msgstr "自动调平拐点" + +#: data/ui/limiter.ui:601 +msgid "Gain Left" +msgstr "左增益" + +#: data/ui/limiter.ui:628 +msgid "Gain Right" +msgstr "右增益" + +#: data/ui/limiter.ui:655 +msgid "Sidechain Left" +msgstr "左边侧链" + +#: data/ui/limiter.ui:682 +msgid "Sidechain Right" +msgstr "右边侧链" + +#: data/ui/loudness.ui:23 +msgid "Standard" +msgstr "标准" + +#: data/ui/loudness.ui:31 +msgid "Flat" +msgstr "平滑" + +#: data/ui/loudness.ui:50 +msgid "FFT Size" +msgstr "FFT 大小" + +#: data/ui/loudness.ui:67 +msgid "Fast Fourier Transform Size" +msgstr "快速傅里叶变换大小" + +#: data/ui/loudness.ui:80 +msgid "Output Volume" +msgstr "输出音量" + +#: data/ui/maximizer.ui:53 +msgid "Ceiling" +msgstr "上限" + +#: data/ui/multiband_compressor.ui:31 +msgid "Operating Mode" +msgstr "运作模式" + +#: data/ui/multiband_compressor.ui:42 +msgid "Classic" +msgstr "经典" + +#: data/ui/multiband_compressor.ui:43 +msgid "Modern" +msgstr "现代" + +#: data/ui/multiband_compressor.ui:57 +msgid "Sidechain Boost" +msgstr "侧链增强" + +#: data/ui/multiband_compressor.ui:69 +msgid "Pink BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:70 +msgid "Pink MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:71 +msgid "Brown BT" +msgstr "" + +#: data/ui/multiband_compressor.ui:72 +msgid "Brown MT" +msgstr "" + +#: data/ui/multiband_compressor.ui:144 +msgid "Bands List" +msgstr "频段列表" + +#: data/ui/multiband_compressor.ui:153 +msgid "Band 1" +msgstr "频段 1" + +#: data/ui/multiband_compressor.ui:170 +msgid "Band 2" +msgstr "频段 2" + +#: data/ui/multiband_compressor.ui:197 +msgid "Band 3" +msgstr "频段 3" + +#: data/ui/multiband_compressor.ui:224 +msgid "Band 4" +msgstr "频段 4" + +#: data/ui/multiband_compressor.ui:251 +msgid "Band 5" +msgstr "频段 5" + +#: data/ui/multiband_compressor.ui:278 +msgid "Band 6" +msgstr "频段 6" + +#: data/ui/multiband_compressor.ui:305 +msgid "Band 7" +msgstr "频段 7" + +#: data/ui/multiband_compressor.ui:332 +msgid "Band 8" +msgstr "频段 8" + +#: data/ui/multiband_compressor_band.ui:18 +msgid "Band Start" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:57 +msgid "Band End" +msgstr "频段末尾" + +#: data/ui/multiband_compressor_band.ui:108 +msgid "Band Compression Mode" +msgstr "频段压缩模式" + +#: data/ui/multiband_compressor_band.ui:126 +msgid "Band Bypass" +msgstr "频段旁路" + +#: data/ui/multiband_compressor_band.ui:431 +msgid "Band Sidechain Options" +msgstr "频段侧链选项" + +#: data/ui/multiband_compressor_band.ui:523 +msgid "Low-Cut Filter" +msgstr "低切滤音" + +#: data/ui/multiband_compressor_band.ui:551 +msgid "Low-Cut Filter Frequency" +msgstr "低切滤音器频率" + +#: data/ui/multiband_compressor_band.ui:576 +msgid "High-Cut Filter" +msgstr "高切滤音" + +#: data/ui/multiband_compressor_band.ui:604 +msgid "High-Cut Filter Frequency" +msgstr "高切滤音器频率" + +#: data/ui/multiband_compressor_band.ui:620 +msgid "PreAmp" +msgstr "前置放大器" + +#: data/ui/multiband_compressor_band.ui:826 +msgid "Band Gain" +msgstr "频段增益" + +#: data/ui/multiband_compressor_band.ui:851 +msgid "Band Envelope" +msgstr "" + +#: data/ui/multiband_compressor_band.ui:876 +msgid "Band Curve" +msgstr "频段曲线" + +#: data/ui/multiband_gate.ui:35 +msgid "Split Mode" +msgstr "分割模式" + +#: data/ui/multiband_gate.ui:48 +msgid "Split 1/2" +msgstr "分割 1/2" + +#: data/ui/multiband_gate.ui:68 +msgid "Split Frequency 1" +msgstr "分割频率 1" + +#: data/ui/multiband_gate.ui:81 +msgid "Split 2/3" +msgstr "分割 2/3" + +#: data/ui/multiband_gate.ui:101 +msgid "Split Frequency 2" +msgstr "分割频率 2" + +#: data/ui/multiband_gate.ui:114 +msgid "Split 3/4" +msgstr "分割 3/4" + +#: data/ui/multiband_gate.ui:134 +msgid "Split Frequency 3" +msgstr "分割频率 3" + +#: data/ui/multiband_gate.ui:162 +msgid "Sub Band" +msgstr "子频" + +#: data/ui/multiband_gate.ui:177 +msgid "Band 1 Bypass" +msgstr "频段 1 旁路" + +#: data/ui/multiband_gate.ui:187 +msgid "Band 1 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:199 +msgid "Band 1 Detection" +msgstr "频段 1 侦测" + +#: data/ui/multiband_gate.ui:243 +msgid "Band 1 Attack" +msgstr "频段 1 起音" + +#: data/ui/multiband_gate.ui:278 +msgid "Band 1 Release" +msgstr "频段 1 消音" + +#: data/ui/multiband_gate.ui:312 +msgid "Band 1 Threshold" +msgstr "频段 1 阈值" + +#: data/ui/multiband_gate.ui:347 +msgid "Band 1 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:381 +#, fuzzy +msgid "Band 1 Knee" +msgstr "频段 1 拐点" + +#: data/ui/multiband_gate.ui:414 +msgid "Band 1 Makeup" +msgstr "频段 1 补偿" + +#: data/ui/multiband_gate.ui:421 data/ui/multiband_gate.ui:781 +#: data/ui/multiband_gate.ui:1141 data/ui/multiband_gate.ui:1501 +msgid "Max Reduction" +msgstr "最大衰减" + +#: data/ui/multiband_gate.ui:448 +msgid "Band 1 Max Reduction" +msgstr "频段 1 最大衰减" + +#: data/ui/multiband_gate.ui:522 +msgid "Low Band" +msgstr "低频" + +#: data/ui/multiband_gate.ui:537 +msgid "Band 2 Bypass" +msgstr "频段 2 旁路" + +#: data/ui/multiband_gate.ui:547 +msgid "Band 2 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:559 +msgid "Band 2 Detection" +msgstr "频段 2 侦测" + +#: data/ui/multiband_gate.ui:603 +msgid "Band 2 Attack" +msgstr "频段 2 起音" + +#: data/ui/multiband_gate.ui:638 +msgid "Band 2 Release" +msgstr "频段 2 消音" + +#: data/ui/multiband_gate.ui:672 +msgid "Band 2 Threshold" +msgstr "频段 2 阈值" + +#: data/ui/multiband_gate.ui:707 +msgid "Band 2 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:741 +#, fuzzy +msgid "Band 2 Knee" +msgstr "频段 2 拐点" + +#: data/ui/multiband_gate.ui:774 +msgid "Band 2 Makeup" +msgstr "频段 2 补偿" + +#: data/ui/multiband_gate.ui:808 +msgid "Band 2 Max Reduction" +msgstr "频段 2 最大衰减" + +#: data/ui/multiband_gate.ui:882 +msgid "Mid Band" +msgstr "中频" + +#: data/ui/multiband_gate.ui:897 +msgid "Band 3 Bypass" +msgstr "频段 3 旁路" + +#: data/ui/multiband_gate.ui:907 +msgid "Band 3 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:919 +msgid "Band 3 Detection" +msgstr "频段 3 侦测" + +#: data/ui/multiband_gate.ui:963 +msgid "Band 3 Attack" +msgstr "频段 3 起音" + +#: data/ui/multiband_gate.ui:998 +msgid "Band 3 Release" +msgstr "频段 3 消音" + +#: data/ui/multiband_gate.ui:1032 +msgid "Band 3 Threshold" +msgstr "频段 3 阈值" + +#: data/ui/multiband_gate.ui:1067 +msgid "Band 3 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1101 +#, fuzzy +msgid "Band 3 Knee" +msgstr "频段 3 拐点" + +#: data/ui/multiband_gate.ui:1134 +msgid "Band 3 Makeup" +msgstr "频段 3 补偿" + +#: data/ui/multiband_gate.ui:1168 +msgid "Band 3 Max Reduction" +msgstr "频段 3 最大衰减" + +#: data/ui/multiband_gate.ui:1242 +msgid "High Band" +msgstr "高频" + +#: data/ui/multiband_gate.ui:1257 +msgid "Band 4 Bypass" +msgstr "频段 4 旁路" + +#: data/ui/multiband_gate.ui:1267 +msgid "Band 4 Solo" +msgstr "" + +#: data/ui/multiband_gate.ui:1279 +msgid "Band 4 Detection" +msgstr "频段 4 侦测" + +#: data/ui/multiband_gate.ui:1323 +msgid "Band 4 Attack" +msgstr "频段 4 起音" + +#: data/ui/multiband_gate.ui:1358 +msgid "Band 4 Release" +msgstr "频段 4 消音" + +#: data/ui/multiband_gate.ui:1392 +msgid "Band 4 Threshold" +msgstr "频段 4 阈值" + +#: data/ui/multiband_gate.ui:1427 +msgid "Band 4 Ratio" +msgstr "" + +#: data/ui/multiband_gate.ui:1461 +#, fuzzy +msgid "Band 4 Knee" +msgstr "频段 4 拐点" + +#: data/ui/multiband_gate.ui:1494 +msgid "Band 4 Makeup" +msgstr "频段 4 补偿" + +#: data/ui/multiband_gate.ui:1528 +msgid "Band 4 Max Reduction" +msgstr "频段 4 最大衰减" + +#: data/ui/pipe_manager_box.ui:27 +msgid "General" +msgstr "通用" + +#: data/ui/pipe_manager_box.ui:34 +msgid "Device Management" +msgstr "设备管理" + +#: data/ui/pipe_manager_box.ui:35 +msgid "" +"It's recommended to NOT set EasyEffects Sink/Source as Default Device in " +"external applications (e.g. Gnome Settings and Plasma System Settings)." +msgstr "" +"不建议把 EasyEffects Sink/Source 设置为外部应用程序(例如 Gnome 的设置或 " +"Plasma 的系统设置)的默认设备。" + +#: data/ui/pipe_manager_box.ui:38 data/ui/pipe_manager_box.ui:44 +msgid "Use Default Input" +msgstr "使用默认输入" + +#: data/ui/pipe_manager_box.ui:65 +msgid "Custom Input Device" +msgstr "自定义输入设备" + +#: data/ui/pipe_manager_box.ui:74 data/ui/pipe_manager_box.ui:80 +msgid "Use Default Output" +msgstr "使用默认输出" + +#: data/ui/pipe_manager_box.ui:101 +msgid "Custom Output Device" +msgstr "自定义输出设备" + +#: data/ui/pipe_manager_box.ui:112 +msgid "Server Information" +msgstr "服务器信息" + +#: data/ui/pipe_manager_box.ui:116 +msgid "Header Version" +msgstr "头文件版本" + +#: data/ui/pipe_manager_box.ui:127 +msgid "Library Version" +msgstr "库文件版本" + +#: data/ui/pipe_manager_box.ui:138 +msgid "Sampling Rate" +msgstr "采样率" + +#: data/ui/pipe_manager_box.ui:149 +#, fuzzy +msgid "Minimum Quantum" +msgstr "最小 Quantum" + +#: data/ui/pipe_manager_box.ui:160 +msgid "Maximum Quantum" +msgstr "最大 Quantum" + +#: data/ui/pipe_manager_box.ui:171 +#, fuzzy +msgid "Default Quantum" +msgstr "默认 Quantum" + +#: data/ui/pipe_manager_box.ui:191 +msgid "Presets Autoloading" +msgstr "自动加载预设" + +#: data/ui/pipe_manager_box.ui:232 +msgid "Output Devices" +msgstr "输出设备" + +#: data/ui/pipe_manager_box.ui:249 +msgid "Output Presets" +msgstr "输出预设" + +#: data/ui/pipe_manager_box.ui:256 data/ui/pipe_manager_box.ui:348 +msgid "Create Association" +msgstr "创建关联" + +#: data/ui/pipe_manager_box.ui:270 +msgid "Add Autoloading Output Preset" +msgstr "新建自动加载的输出预设" + +#: data/ui/pipe_manager_box.ui:290 +#, fuzzy +msgid "Output Autoloading Presets List" +msgstr "导出自动加载预设列表" + +#: data/ui/pipe_manager_box.ui:329 +msgid "Input Devices" +msgstr "输入设备" + +#: data/ui/pipe_manager_box.ui:341 +msgid "Input Presets" +msgstr "输入预设" + +#: data/ui/pipe_manager_box.ui:362 +msgid "Add Autoloading Input Preset" +msgstr "新建自动加载的输入预设" + +#: data/ui/pipe_manager_box.ui:381 +#, fuzzy +msgid "Input Autoloading Presets List" +msgstr "导入自动加载预设列表" + +#: data/ui/pipe_manager_box.ui:411 +msgid "Modules" +msgstr "模块" + +#: data/ui/pipe_manager_box.ui:429 +msgid "Modules List" +msgstr "模块列表" + +#: data/ui/pipe_manager_box.ui:443 +msgid "Clients" +msgstr "客户端" + +#: data/ui/pipe_manager_box.ui:461 +msgid "Clients List" +msgstr "客户端列表" + +#: data/ui/pipe_manager_box.ui:475 +msgid "Test Signal" +msgstr "测试信号" + +#: data/ui/pipe_manager_box.ui:480 data/ui/preferences_spectrum.ui:9 +msgid "State" +msgstr "状态" + +#: data/ui/pipe_manager_box.ui:483 data/ui/preferences_spectrum.ui:12 +msgid "Enabled" +msgstr "已启用" + +#: data/ui/pipe_manager_box.ui:498 +msgid "Properties" +msgstr "属性" + +#: data/ui/pipe_manager_box.ui:501 +msgid "Channels" +msgstr "声道" + +#: data/ui/pipe_manager_box.ui:526 +msgid "Both" +msgstr "" + +#: data/ui/pipe_manager_box.ui:530 +msgid "Both Channels" +msgstr "双声道" + +#: data/ui/pipe_manager_box.ui:539 +msgid "Waveform" +msgstr "波形" + +#: data/ui/pipe_manager_box.ui:543 +msgid "Sine Wave" +msgstr "正弦波" + +#: data/ui/pipe_manager_box.ui:552 +msgid "White Noise" +msgstr "白噪声" + +#: data/ui/pitch.ui:33 +msgid "High Speed" +msgstr "高速" + +#: data/ui/pitch.ui:34 +msgid "High Quality" +msgstr "高品质" + +#: data/ui/pitch.ui:35 +msgid "High Consistency" +msgstr "" + +#: data/ui/pitch.ui:49 +msgid "Formant" +msgstr "格式" + +#: data/ui/pitch.ui:60 +msgid "Shifted" +msgstr "" + +#: data/ui/pitch.ui:61 +msgid "Preserved" +msgstr "保留" + +#: data/ui/pitch.ui:87 +msgid "Transients" +msgstr "" + +#: data/ui/pitch.ui:98 +#, fuzzy +msgid "Crisp" +msgstr "清脆感" + +#: data/ui/pitch.ui:99 +msgid "Mixed" +msgstr "" + +#: data/ui/pitch.ui:100 +msgid "Smooth" +msgstr "" + +#: data/ui/pitch.ui:114 +msgid "Detector" +msgstr "侦测器" + +#: data/ui/pitch.ui:125 +msgid "Compound" +msgstr "" + +#: data/ui/pitch.ui:126 +msgid "Percussive" +msgstr "" + +#: data/ui/pitch.ui:127 +msgid "Soft" +msgstr "柔化处理" + +#: data/ui/pitch.ui:141 +msgid "Phase" +msgstr "" + +#: data/ui/pitch.ui:152 +msgid "Laminar" +msgstr "" + +#: data/ui/pitch.ui:153 +msgid "Independent" +msgstr "" + +#: data/ui/pitch.ui:178 +msgid "Cents" +msgstr "音分" + +#: data/ui/pitch.ui:212 +msgid "Semitones" +msgstr "半音" + +#: data/ui/pitch.ui:246 +msgid "Octaves" +msgstr "八度" + +#: data/ui/plugin_row.ui:39 +msgid "Remove this effect" +msgstr "删除此音效" + +#: data/ui/plugin_row.ui:51 +msgid "Enable/disable this effect" +msgstr "启用/禁用此音效" + +#: data/ui/plugin_row.ui:63 +msgid "Change the position of this effect" +msgstr "" + +#: data/ui/plugins_box.ui:19 +msgid "Add Effect" +msgstr "添加音效" + +#: data/ui/plugins_box.ui:68 +msgid "Used Plugins List" +msgstr "使用的插件的列表" + +#: data/ui/plugins_box.ui:129 +msgid "No Effects" +msgstr "无音效" + +#: data/ui/plugins_box.ui:130 +msgid "Audio Stream Not Modified" +msgstr "音频流未作修改" + +#: data/ui/plugins_menu.ui:19 +msgid "Search Plugin" +msgstr "搜索插件" + +#: data/ui/plugins_menu.ui:74 +msgid "Plugins List" +msgstr "插件列表" + +#: data/ui/preferences_general.ui:5 +msgid "_General" +msgstr "常规(_G)" + +#: data/ui/preferences_general.ui:10 +msgid "Service" +msgstr "服务" + +#: data/ui/preferences_general.ui:13 +msgid "Launch Service at System Startup" +msgstr "系统启动时运行服务" + +#: data/ui/preferences_general.ui:26 +msgid "Shutdown on Window Closing" +msgstr "窗口关闭时退出" + +#: data/ui/preferences_general.ui:40 +msgid "Audio" +msgstr "音频" + +#: data/ui/preferences_general.ui:43 +msgid "Process All Output Streams" +msgstr "处理所有输出流" + +#: data/ui/preferences_general.ui:55 +msgid "Process All Input Streams" +msgstr "处理所有输入流" + +#: data/ui/preferences_general.ui:67 +msgid "Ignore Streams from Monitor of Devices" +msgstr "" + +#: data/ui/preferences_general.ui:79 +msgid "Use Cubic Volume" +msgstr "" + +#: data/ui/preferences_general.ui:91 +msgid "Reset Volume of EasyEffects Virtual Devices at Startup" +msgstr "" + +#: data/ui/preferences_general.ui:103 +msgid "Inactivity Timeout" +msgstr "" + +#: data/ui/preferences_general.ui:128 data/ui/preferences_spectrum.ui:26 +msgid "Style" +msgstr "" + +#: data/ui/preferences_general.ui:131 +msgid "Use Dark Theme" +msgstr "使用暗色主题" + +#: data/ui/preferences_general.ui:143 +msgid "Hide Menus on Outside Clicks" +msgstr "" + +#: data/ui/preferences_spectrum.ui:5 +msgid "_Spectrum" +msgstr "频谱(_S)" + +#: data/ui/preferences_spectrum.ui:29 +msgid "Shape" +msgstr "形状" + +#: data/ui/preferences_spectrum.ui:35 +msgid "Bars" +msgstr "柱状" + +#: data/ui/preferences_spectrum.ui:36 +msgid "Lines" +msgstr "线型" + +#: data/ui/preferences_spectrum.ui:37 +msgid "Dots" +msgstr "" + +#: data/ui/preferences_spectrum.ui:46 +#, fuzzy +msgid "Points" +msgstr "数量" + +#: data/ui/preferences_spectrum.ui:68 +msgid "Height" +msgstr "高度" + +#: data/ui/preferences_spectrum.ui:91 +msgid "Line Width" +msgstr "线宽" + +#: data/ui/preferences_spectrum.ui:114 +msgid "Fill" +msgstr "填充频谱" + +#: data/ui/preferences_spectrum.ui:126 +msgid "Show Bars Border" +msgstr "" + +#: data/ui/preferences_spectrum.ui:138 +msgid "Rounded Corners" +msgstr "圆角" + +#: data/ui/preferences_spectrum.ui:152 +msgid "Color" +msgstr "颜色" + +#: data/ui/preferences_spectrum.ui:155 +msgid "Lines and Bars" +msgstr "" + +#: data/ui/preferences_spectrum.ui:169 +msgid "Axis Labels" +msgstr "" + +#: data/ui/preferences_spectrum.ui:185 +msgid "Frequency Range" +msgstr "频率范围" + +#: data/ui/preferences_spectrum.ui:188 +msgid "Minimum" +msgstr "最低" + +#: data/ui/preferences_spectrum.ui:211 +msgid "Maximum" +msgstr "最高" + +#: data/ui/preset_row.ui:25 src/convolver_menu_impulses.cpp:181 +msgid "Load" +msgstr "加载" + +#: data/ui/preset_row.ui:35 +msgid "Save current settings to this preset file" +msgstr "将当前设置保存到这个预设文件" + +#: data/ui/preset_row.ui:46 +msgid "Remove this preset file" +msgstr "删除这个预设文件" + +#: data/ui/presets_menu.ui:51 +msgid "New Output Preset Name" +msgstr "新输出预设名" + +#: data/ui/presets_menu.ui:59 data/ui/presets_menu.ui:207 +msgid "Create a new preset" +msgstr "创建新预设" + +#: data/ui/presets_menu.ui:73 data/ui/presets_menu.ui:221 +msgid "Import a preset" +msgstr "导入预设" + +#: data/ui/presets_menu.ui:90 +msgid "Search Output Preset" +msgstr "搜索输出预设" + +#: data/ui/presets_menu.ui:151 +msgid "Output Presets List" +msgstr "输出预设列表" + +#: data/ui/presets_menu.ui:199 +msgid "New Input Preset Name" +msgstr "新输入预设名" + +#: data/ui/presets_menu.ui:237 +msgid "Search Input Preset" +msgstr "搜索输入预设" + +#: data/ui/presets_menu.ui:298 +msgid "Input Presets List" +msgstr "输入预设列表" + +#: data/ui/reverb.ui:30 +msgid "High Frequency Damping" +msgstr "高频阻尼" + +#: data/ui/reverb.ui:62 +msgid "Room Size" +msgstr "房间大小" + +#: data/ui/reverb.ui:70 +msgid "Small" +msgstr "小" + +#: data/ui/reverb.ui:71 +msgid "Medium" +msgstr "中" + +#: data/ui/reverb.ui:72 +msgid "Large" +msgstr "大" + +#: data/ui/reverb.ui:73 +msgid "Tunnel" +msgstr "通道" + +#: data/ui/reverb.ui:74 +msgid "Large/smooth" +msgstr "大/平整" + +#: data/ui/reverb.ui:75 +msgid "Experimental" +msgstr "实验性" + +#: data/ui/reverb.ui:92 +msgid "Diffusion" +msgstr "扩散" + +#: data/ui/reverb.ui:129 +msgid "Pre Delay" +msgstr "前反射延迟" + +#: data/ui/reverb.ui:162 +msgid "Decay Time" +msgstr "衰减时间" + +#: data/ui/reverb.ui:197 +msgid "Wet Amount" +msgstr "湿声程度" + +#: data/ui/reverb.ui:225 +msgid "Wet Level" +msgstr "湿声级别" + +#: data/ui/reverb.ui:232 +msgid "Dry Amount" +msgstr "干声程度" + +#: data/ui/reverb.ui:259 +msgid "Dry Level" +msgstr "干声级别" + +#: data/ui/reverb.ui:266 +msgid "Bass Cut" +msgstr "低切" + +#: data/ui/reverb.ui:301 +msgid "Treble Cut" +msgstr "高切" + +#: data/ui/reverb.ui:565 +msgid "Ambience" +msgstr "氛围" + +#: data/ui/reverb.ui:572 +msgid "Empty Walls" +msgstr "空旷" + +#: data/ui/reverb.ui:585 +msgid "Room" +msgstr "房间" + +#: data/ui/reverb.ui:592 +msgid "Large Empty Hall" +msgstr "空荡的大厅" + +#: data/ui/reverb.ui:605 +msgid "Disco" +msgstr "舞厅" + +#: data/ui/reverb.ui:612 +msgid "Large Occupied Hall" +msgstr "拥挤的大厅" + +#: data/ui/rnnoise.ui:31 +msgid "Import Model" +msgstr "导入模型" + +#: data/ui/rnnoise.ui:40 +msgid "Models" +msgstr "模型" + +#. If this changes, it has to be updated in src/rnnoise_ui.cpp as default_model_name +#: data/ui/rnnoise.ui:62 src/rnnoise_ui.cpp:96 src/rnnoise_ui.cpp:235 +#: src/rnnoise_ui.cpp:269 +msgid "Standard Model" +msgstr "标准模型" + +#: data/ui/rnnoise.ui:90 +msgid "RNNoise Models List" +msgstr "RNNoise 模型列表" + +#: data/ui/rnnoise.ui:110 +msgid "Model Not Loaded" +msgstr "模型尚未载入" + +#: data/ui/rnnoise.ui:116 +msgid "Active Model" +msgstr "激活模型" + +#: data/ui/rnnoise.ui:124 +msgid "Standard RNNoise Model" +msgstr "标准 RNNoise 模型" + +#: data/ui/shortcuts.ui:11 +msgid "Overview" +msgstr "概览" + +#: data/ui/shortcuts.ui:16 +msgid "Open the EasyEffects Manual" +msgstr "打开 EasyEffects 手册" + +#: data/ui/shortcuts.ui:23 +msgid "Fullscreen/Restore from fullscreen" +msgstr "全屏/从全屏还原" + +#: data/ui/shortcuts.ui:30 +msgid "Close the Window" +msgstr "关闭窗口" + +#: data/ui/shortcuts.ui:37 +msgid "Quit EasyEffects" +msgstr "退出 EasyEffects" + +#: data/ui/stereo_tools.ui:42 data/ui/stereo_tools.ui:383 +msgid "Balance" +msgstr "平衡" + +#: data/ui/stereo_tools.ui:69 +msgid "Input Balance" +msgstr "输出平衡" + +#: data/ui/stereo_tools.ui:78 +msgid "Softclip" +msgstr "柔化处理" + +#: data/ui/stereo_tools.ui:106 +msgid "Softclip Level" +msgstr "软削波等级" + +#: data/ui/stereo_tools.ui:118 +msgid "Stereo Matrix" +msgstr "立体声阵距" + +#: data/ui/stereo_tools.ui:128 +msgid "LR > LR (Stereo Default)" +msgstr "LR > LR (默认立体声)" + +#: data/ui/stereo_tools.ui:129 +msgid "LR > MS (Stereo to Mid-Side)" +msgstr "LR > MS (立体声至中-ä¾§)" + +#: data/ui/stereo_tools.ui:130 +msgid "MS > LR (Mid-Side to Stereo)" +msgstr "MS > LR (中-侧至立体声)" + +#: data/ui/stereo_tools.ui:131 +msgid "LR > LL (Mono Left Channel)" +msgstr "LR > LL (单声道左)" + +#: data/ui/stereo_tools.ui:132 +msgid "LR > RR (Mono Right Channel)" +msgstr "LR > RR (单声道右)" + +#: data/ui/stereo_tools.ui:133 +msgid "LR > L+R (Mono Sum L+R)" +msgstr "LR > L+R (单声道左右合并)" + +#: data/ui/stereo_tools.ui:134 +msgid "LR > RL (Stereo Flip Channels)" +msgstr "LR > RL (立体声翻转)" + +#: data/ui/stereo_tools.ui:137 +msgid "Stereo Mode" +msgstr "立体声模式" + +#: data/ui/stereo_tools.ui:170 data/ui/stereo_tools.ui:195 +msgid "Invert Phase" +msgstr "反转相位" + +#: data/ui/stereo_tools.ui:222 +msgid "Side Level" +msgstr "侧边级别" + +#: data/ui/stereo_tools.ui:258 +msgid "Side Balance" +msgstr "侧边平衡" + +#: data/ui/stereo_tools.ui:294 +msgid "Middle Level" +msgstr "中置级别" + +#: data/ui/stereo_tools.ui:330 +msgid "Middle Panorama" +msgstr "中置全景" + +#: data/ui/stereo_tools.ui:410 +msgid "Output Balance" +msgstr "输出平衡" + +#: data/ui/stereo_tools.ui:419 +msgid "Delay L/R" +msgstr "延迟 L/R" + +#: data/ui/stereo_tools.ui:446 +msgid "Delay Left Right" +msgstr "延迟 L/R" + +#: data/ui/stereo_tools.ui:455 +msgid "Stereo Base" +msgstr "立体声基线" + +#: data/ui/stereo_tools.ui:491 +msgid "Stereo Phase" +msgstr "立体声相位" + +#: src/app_info.cpp:64 +msgid "Running" +msgstr "正在运行" + +#: src/app_info.cpp:66 +msgid "Suspended" +msgstr "已暂停" + +#: src/app_info.cpp:68 +msgid "Idle" +msgstr "空闲" + +#: src/app_info.cpp:70 +msgid "Creating" +msgstr "创建中" + +#: src/app_info.cpp:72 +msgid "Error" +msgstr "错误" + +#: src/app_info.cpp:74 +msgid "Unknown" +msgstr "未知" + +#: src/app_info.cpp:226 +msgid "channels" +msgstr "声道" + +#: src/application.cpp:250 +msgid "Output Presets: " +msgstr "输出预设: " + +#: src/application.cpp:258 +msgid "Input Presets: " +msgstr "输入预设: " + +#: src/application.cpp:413 +msgid "Audio effects for PipeWire applications" +msgstr "为使用 PipeWire 的程序提供音效" + +#: src/application.cpp:503 +msgid "Quit EasyEffects. Useful when running in service mode." +msgstr "退出 EasyEffects。程序若在服务模式下运行,由此便可退出程序。" + +#: src/application.cpp:506 +msgid "Load a preset. Example: easyeffects -l music" +msgstr "加载预设。 示例:easyeffects -l music" + +#: src/application.cpp:509 +msgid "Reset EasyEffects." +msgstr "重设 EasyEffects。" + +#: src/application.cpp:512 +msgid "Hide the Window." +msgstr "隐藏隐藏窗口。" + +#: src/application.cpp:515 +msgid "Global bypass. 1 to enable, 2 to disable and 3 to get status" +msgstr "全局旁路。 1 启用,2 禁用,3 获取状态" + +#: src/application.cpp:518 +msgid "Show available presets." +msgstr "显示可用预设。" + +#: src/application_ui.cpp:267 +msgid "PipeWire" +msgstr "PipeWire" + +#: src/convolver_menu_impulses.cpp:99 +msgid "The File Is Not Regular" +msgstr "文件不是普通文件" + +#: src/convolver_menu_impulses.cpp:104 +msgid "The Impulse File May Be Corrupted or Unsupported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:109 +msgid "Only Stereo Impulse Files Are Supported" +msgstr "" + +#: src/convolver_menu_impulses.cpp:119 +msgid "Impulse File Not Imported" +msgstr "脉冲文件未导入" + +#: src/convolver_menu_impulses.cpp:125 +msgid "Import Impulse File" +msgstr "导入 Impulse 文件" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:102 src/rnnoise_ui.cpp:133 +msgid "Open" +msgstr "打开" + +#: src/convolver_menu_impulses.cpp:126 src/equalizer_ui.cpp:352 +#: src/presets_menu.cpp:103 src/rnnoise_ui.cpp:133 +msgid "Cancel" +msgstr "取消" + +#: src/convolver_menu_impulses.cpp:130 +msgid "Impulse Response" +msgstr "Impulse 解析" + +#: src/convolver_menu_impulses.cpp:243 +msgid "Load Impulse" +msgstr "加载脉冲" + +#: src/convolver_menu_impulses.cpp:246 +msgid "Remove Impulse" +msgstr "删除脉冲" + +#: src/convolver_ui.cpp:323 +msgid "No Impulse File Loaded" +msgstr "未加载脉冲文件" + +#: src/convolver_ui.cpp:345 +msgid "Failed To Load The Impulse File" +msgstr "加载脉冲文件失败" + +#: src/effects_box.cpp:261 src/plugins_box.cpp:549 +msgid "Recorders" +msgstr "录音程序" + +#: src/effects_box.cpp:284 src/plugins_box.cpp:569 +msgid "Players" +msgstr "播放器" + +#: src/effects_box.cpp:307 +msgid "Effects" +msgstr "音效" + +#: src/equalizer_band_box.cpp:91 +msgid "infinity" +msgstr "无限" + +#: src/equalizer_ui.cpp:351 +msgid "Import APO Preset File" +msgstr "加载 APO 预设文件" + +#: src/equalizer_ui.cpp:357 +msgid "APO Presets" +msgstr "APO 预设" + +#: src/equalizer_ui.cpp:371 +msgid "" +"APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content." +msgstr "APO 预设没加载成功。可能是文件格式有错。请检查文件内容。" + +#: src/pipe_manager_box.cpp:327 +msgid "Remove Autoloading Preset" +msgstr "删除自动加载预设" + +#: src/plugins_box.cpp:503 +msgid "Remove" +msgstr "删除" + +#: src/plugins_box.cpp:570 +msgid "Output Device" +msgstr "输出设备" + +#: src/plugins_menu.cpp:142 +msgid "Add" +msgstr "添加" + +#: src/presets_menu.cpp:102 +msgid "Import Preset" +msgstr "导入预设" + +#: src/rnnoise_ui.cpp:91 +msgid "" +"Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The " +"Standard Model." +msgstr "所选模型没加载成功。可能是文件格式不支持。退回到了标准模型。" + +#: src/rnnoise_ui.cpp:132 +msgid "Import Model File" +msgstr "导入模型文件" + +#: src/rnnoise_ui.cpp:137 +msgid "RNNoise Models" +msgstr "RNNoise 模型" + +#: src/tags_plugin_name.cpp:26 +msgid "Bass Enhancer" +msgstr "低音增强" + +#: src/tags_plugin_name.cpp:27 +msgid "Bass Loudness" +msgstr "低音响度" + +#: src/tags_plugin_name.cpp:29 +msgid "Convolver" +msgstr "卷积混响器" + +#: src/tags_plugin_name.cpp:30 +msgid "Crossfeed" +msgstr "交叉反馈" + +#: src/tags_plugin_name.cpp:31 +msgid "Crystalizer" +msgstr "" + +#: src/tags_plugin_name.cpp:32 +msgid "Deesser" +msgstr "齿音消除" + +#: src/tags_plugin_name.cpp:33 +msgid "Delay" +msgstr "延迟" + +#: src/tags_plugin_name.cpp:34 +msgid "Echo Canceller" +msgstr "回音消除" + +#: src/tags_plugin_name.cpp:35 +msgid "Equalizer" +msgstr "均衡器" + +#: src/tags_plugin_name.cpp:36 +msgid "Exciter" +msgstr "激励器" + +#: src/tags_plugin_name.cpp:37 +msgid "Filter" +msgstr "过滤器" + +#: src/tags_plugin_name.cpp:39 +msgid "Limiter" +msgstr "限幅器" + +#: src/tags_plugin_name.cpp:41 +msgid "Maximizer" +msgstr "放大器" + +#: src/tags_plugin_name.cpp:42 +msgid "Multiband Compressor" +msgstr "多频段压缩器" + +#: src/tags_plugin_name.cpp:43 +msgid "Multiband Gate" +msgstr "多频段门限" + +#: src/tags_plugin_name.cpp:44 +msgid "Pitch" +msgstr "音高" + +#: src/tags_plugin_name.cpp:45 +msgid "Reverberation" +msgstr "混响" + +#: src/tags_plugin_name.cpp:46 +msgid "Noise Reduction" +msgstr "降噪" + +#: src/tags_plugin_name.cpp:47 +msgid "Stereo Tools" +msgstr "立体声工具" + +#. Add custom button to hint the user to press ESC to destroy the dialog. +#. This has been introduced because multiple GTK4 dialogs shown at +#. the same time could have issues on Wayland and the only way to +#. close the outer one is pressing ESC, the mouse click does not work. +#: src/ui_helpers.cpp:84 +msgid "Close (Press ESC)" +msgstr "关闭(请按 ESC)" + +#~ msgid "Wellington Wallace" +#~ msgstr "Wellington Wallace" + +#~ msgid "" +#~ "EasyEffects is an advanced audio manipulation tool. It includes an " +#~ "equalizer, limiter, compressor and a reverberation tool, just to mention " +#~ "a few. To complement this there is also a built in spectrum analyzer." +#~ msgstr "" +#~ "EasyEffects 是一款多功能音频调整工具程序。它的功能不仅包括均衡器、限幅器、" +#~ "压缩器和混响工具,还有更多其他工具可共选择。为了使用方便,它还内建有频谱分" +#~ "析仪。" + +#~ msgid "" +#~ "EasyEffects is the successor to PulseEffects. EasyEffects only supports " +#~ "PipeWire's audio server. PulseAudio users should instead use PulseEffects." +#~ msgstr "" +#~ "EasyEffects 是 PulseEffects 的后继版本,但它仅支持 PipeWire 的音频服务器。" +#~ "PulseAudio 用户应继续使用 PulseEffects。" + +#~ msgid "" +#~ "Because EasyEffects uses the default PipeWire sound server it will work " +#~ "with most, if not all, applications you use. All supported applications " +#~ "are presented in the main window, where each can be enabled individually." +#~ msgstr "" +#~ "由于 EasyEffects 默认使用 PipeWire 音频服务器,这意味着它能与大多数 (但并" +#~ "非全部) 应用程序配合使用。EasyEffects 的主窗口会显示所有它支持的应用程序," +#~ "而且可以单独管理每款应用程序的音效启用状态。" + +#~ msgid "" +#~ "Besides manipulating sound output, EasyEffects is able to apply effects " +#~ "to an input device, such as a microphone. This is, for example, useful in " +#~ "audio recording, but it also works well during voice conversations." +#~ msgstr "" +#~ "除了处理音频输出外,EasyEffects 还可以将效果应用于输入设备,例如麦克风等," +#~ "以便在录音和语音通话时发挥作用。" + +#~ msgid "" +#~ "When EasyEffects is launched it will conveniently remember the " +#~ "configuration used in the last session. It is also possible to save all " +#~ "the current settings as profiles." +#~ msgstr "" +#~ "启动 EasyEffects 时,载入上一个会话中使用的配置。 也可以将所有当前设置另存" +#~ "为配置文件。" + +#~ msgid "The main page showing two audio output apps" +#~ msgstr "正在显示两个音频输出应用程序的主页面" + +#~ msgid "The bass enhancer page showing audio controls" +#~ msgstr "低音增强页面显示的音效控件" + +#~ msgid "The convolver page showing audio controls" +#~ msgstr "卷积混响器显示的音频控件" + +#~ msgid "This release adds the following features:" +#~ msgstr "此版本增加了以下功能:" + +#~ msgid "" +#~ "The rnnoise library is now optional. This should help package maintainers " +#~ "to build" +#~ msgstr "现在 rnnoise 库是可选的。这项改动可以帮助软件包维护者构建" + +#~ msgid "a Debian package. See the issue #1000 for more information." +#~ msgstr "Debian 软件包。请参考 issue #1000 以了解更多信息。" + +#~ msgid "The interface of the pitch plugin was improved" +#~ msgstr "改进了音调插件界面" + +#~ msgid "Our application icon is now compatible with desktops that uses QT" +#~ msgstr "我们的应用图标现已兼容基于QT的桌面环境" + +#~ msgid "and #1427" +#~ msgstr "和 #1427" + +#~ msgid "Many translation updates" +#~ msgstr "许多翻译更新" + +#~ msgid "" +#~ "There is a new setting allowing the user to select an inactivity timeout " +#~ "for the pipeline. When no client is playing" +#~ msgstr "有一个新设置允许用户为管道选择不活动超时。当没有客户端正在播放时" + +#~ msgid "we do not waste CPU power processing silence." +#~ msgstr "我们不会浪费 CPU 功率处理静音。" + +#~ msgid "This release adds the following feature:" +#~ msgstr "此版软件新增了以下功能:" + +#~ msgid "Updated translations" +#~ msgstr "翻译更新" + +#~ msgid "Average" +#~ msgstr "平均值" + +#~ msgid "Failed" +#~ msgstr "失败" + +#~ msgid "Use Default" +#~ msgstr "使用默认" + +#~ msgid "Remove this plugin" +#~ msgstr "删除这个插件" + +#~ msgid "Import Presets" +#~ msgstr "加载预设" + +#~ msgid "Start Service at Login" +#~ msgstr "登录时启动服务" + +#~ msgid "Process All Outputs" +#~ msgstr "处理所有输出" + +#~ msgid "Process All Inputs" +#~ msgstr "处理所有输入" + +#~ msgid "Activate" +#~ msgstr "激活" + +#~ msgid "Add to Blocklist" +#~ msgstr "加入黑名单" + +#~ msgid "Blocklist" +#~ msgstr "黑名单" + +#~ msgid "Add Plugin" +#~ msgstr "增加插件" + +#~ msgid "Speakers" +#~ msgstr "扬声器" + +#~ msgid "Microphone" +#~ msgstr "麦克风" + +#~ msgid "enabled" +#~ msgstr "已启用" + +#~ msgid "disabled" +#~ msgstr "已禁用" + +#~ msgid "Plugins" +#~ msgstr "插件" + +#~ msgid "Format" +#~ msgstr "格式" + +#~ msgid "Latency" +#~ msgstr "延迟" + +#~ msgid "idle" +#~ msgstr "空闲" + +#~ msgid "Faster" +#~ msgstr "快速" + +#~ msgid "Preserve Formant" +#~ msgstr "共振保护" + +#~ msgid "Cmoy" +#~ msgstr "Cmoy" + +#~ msgid "Jmeier" +#~ msgstr "Jmeier" + +#~ msgid "Set the volume and turn on/off effects" +#~ msgstr "设置音量和 打开/关闭音效" + +#~ msgid "Includes an equalizer with built-in presets" +#~ msgstr "包含预设的均衡器" + +#~ msgid "Input Limiter" +#~ msgstr "输入限幅器" + +#~ msgid "Calibration" +#~ msgstr "校准" + +#~ msgid "Settings" +#~ msgstr "设置" + +#~ msgid "Id" +#~ msgstr "Id" + +#~ msgid "Low-pass" +#~ msgstr "低通" + +#~ msgid "Player Name" +#~ msgstr "播放器名称" + +#~ msgid "Maximum Gain Reduction" +#~ msgstr "最大增益衰减" + +#~ msgid "Run in Background" +#~ msgstr "后台运行" + +#~ msgid "Automatic Smoothing Control" +#~ msgstr "自动平滑控制" + +#~ msgid "Limit" +#~ msgstr "限制" + +#~ msgid "ASC" +#~ msgstr "ASC" + +#~ msgid "Attenuation" +#~ msgstr "衰减" + +#~ msgid "ISO226-2003" +#~ msgstr "ISO226-2003" + +#~ msgid "Fletcher-Munson" +#~ msgstr "Fletcher-Munson" + +#~ msgid "Robinson-Dadson" +#~ msgstr "Robinson-Dadson" + +#~ msgid "Signal" +#~ msgstr "测试信号" + +#, fuzzy +#~ msgid "Wet" +#~ msgstr "程度" + +#~ msgid "Dry" +#~ msgstr "干声" + +#~ msgid "Show Spectrum" +#~ msgstr "显示频谱" + +#~ msgid "Border" +#~ msgstr "显示边界" + +#~ msgid "Spectrum Type" +#~ msgstr "频谱类型" + +#~ msgid "Spectrum Color" +#~ msgstr "光谱颜色" + +#~ msgid "S/C Level" +#~ msgstr "S/C 级别" + +#~ msgid "Phase Correlation" +#~ msgstr "相位相关" diff --git a/src/app_info.cpp b/src/app_info.cpp new file mode 100644 index 0000000..7ef0251 --- /dev/null +++ b/src/app_info.cpp @@ -0,0 +1,368 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "app_info.hpp" + +namespace ui::app_info { + +using namespace std::string_literals; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + app::Application* application; + + NodeInfo info; + + gulong handler_id_enable, handler_id_volume, handler_id_mute, handler_id_blocklist; + + std::unordered_map* enabled_app_list; +}; + +struct _AppInfo { + GtkBox parent_instance; + + GtkImage* app_icon; + + GtkLabel *app_name, *media_name, *format, *rate, *channels, *latency, *state; + + GtkToggleButton* mute; + + GtkSpinButton* volume; + + GtkCheckButton *blocklist, *enable; + + GtkIconTheme* icon_theme; + + GSettings *settings, *app_settings; + + Data* data; +}; + +G_DEFINE_TYPE(AppInfo, app_info, GTK_TYPE_BOX) + +auto node_state_to_char_pointer(const pw_node_state& state) -> const char* { + switch (state) { + case PW_NODE_STATE_RUNNING: + return _("Running"); + case PW_NODE_STATE_SUSPENDED: + return _("Suspended"); + case PW_NODE_STATE_IDLE: + return _("Idle"); + case PW_NODE_STATE_CREATING: + return _("Creating"); + case PW_NODE_STATE_ERROR: + return _("Error"); + default: + return _("Unknown"); + } +} + +auto app_is_blocklisted(AppInfo* self, const std::string& name) -> bool { + const auto list = util::gchar_array_to_vector(g_settings_get_strv(self->settings, "blocklist")); + + return std::ranges::find(list, name) != list.end(); +} + +auto get_app_icon_name(const NodeInfo& node_info) -> std::string { + // map to handle cases where PipeWire does not set icon name string or app name equal to icon name. + + constexpr auto icon_map = std::to_array>( + {{"chromium-browser", "chromium"}, {"firefox", "firefox"}, {"obs", "com.obsproject.Studio"}}); + + std::string icon_name; + + if (!node_info.app_icon_name.empty()) { + icon_name = node_info.app_icon_name; + } else if (!node_info.media_icon_name.empty()) { + icon_name = node_info.media_icon_name; + } else if (!node_info.name.empty()) { + icon_name = node_info.name; + + // get lowercase name so if it changes in the future, we have a chance to pick the same index + + std::transform(icon_name.begin(), icon_name.end(), icon_name.begin(), + [](unsigned char c) { return std::tolower(c); }); + } + + for (auto& [key, value] : icon_map) { + if (key == icon_name) { + return value; + } + } + + return icon_name; +} + +auto icon_available(AppInfo* self, const std::string& icon_name) -> bool { + if (gtk_icon_theme_has_icon(self->icon_theme, icon_name.c_str()) != 0) { + return true; + } + + // The icon object can't loopup icons in pixmaps directories, so we check their existence there also. + + constexpr auto pixmaps_dirs = std::to_array({"/usr/share/pixmaps", "/usr/local/share/pixmaps"}); + + for (const auto& dir : pixmaps_dirs) { + try { + for (std::filesystem::directory_iterator it{dir}; it != std::filesystem::directory_iterator{}; ++it) { + if (std::filesystem::is_regular_file(it->status())) { + if (it->path().stem().string() == icon_name) { + util::debug(icon_name + " icon name not included in the icon theme, but found in " + dir); + + return true; + } + } + } + } catch (...) { + util::debug("cannot lookup application icon " + icon_name + " in " + dir); + } + } + + return false; +} + +void connect_stream(AppInfo* self, const uint& id, const std::string& media_class) { + if (media_class == tags::pipewire::media_class::output_stream) { + self->data->application->pm->connect_stream_output(id); + } else if (media_class == tags::pipewire::media_class::input_stream) { + self->data->application->pm->connect_stream_input(id); + } +} + +void disconnect_stream(AppInfo* self, const uint& id, const std::string& media_class) { + if (media_class == tags::pipewire::media_class::output_stream || + media_class == tags::pipewire::media_class::input_stream) { + self->data->application->pm->disconnect_stream(id); + } +} + +void on_enable(GtkCheckButton* btn, AppInfo* self) { + auto is_enabled = gtk_check_button_get_active(btn) != 0; + + auto is_blocklisted = app_is_blocklisted(self, self->data->info.name); + + if (!is_blocklisted) { + (is_enabled) ? connect_stream(self, self->data->info.id, self->data->info.media_class) + : disconnect_stream(self, self->data->info.id, self->data->info.media_class); + + self->data->enabled_app_list->insert_or_assign(self->data->info.id, is_enabled); + } +} + +void on_volume_changed(GtkSpinButton* sbtn, AppInfo* self) { + auto vol = static_cast(gtk_spin_button_get_value(sbtn)) / 100.0F; + + if (g_settings_get_boolean(self->app_settings, "use-cubic-volumes") != 0) { + vol = vol * vol * vol; + } + + if (self->data->info.proxy != nullptr) { + PipeManager::set_node_volume(self->data->info.proxy, self->data->info.n_volume_channels, vol); + } +} + +void on_mute(GtkToggleButton* btn, AppInfo* self) { + const auto state = gtk_toggle_button_get_active(btn); + + if (state) { + gtk_button_set_icon_name(GTK_BUTTON(btn), "audio-volume-muted-symbolic"); + } else { + gtk_button_set_icon_name(GTK_BUTTON(btn), "audio-volume-high-symbolic"); + } + + if (self->data->info.proxy != nullptr) { + PipeManager::set_node_mute(self->data->info.proxy, state); + } +} + +void on_blocklist(GtkCheckButton* btn, AppInfo* self) { + const auto is_blocklisted = gtk_check_button_get_active(btn); + + std::string app_tag = self->data->info.application_id; + + if (app_tag.empty()) { + app_tag = self->data->info.name; + } + + if (is_blocklisted) { + self->data->enabled_app_list->insert_or_assign(self->data->info.id, gtk_check_button_get_active(self->enable)); + + util::add_new_blocklist_entry(self->settings, app_tag); + } else { + util::remove_blocklist_entry(self->settings, app_tag); + } +} + +void update(AppInfo* self, const NodeInfo node_info) { + if (node_info.state == PW_NODE_STATE_CREATING) { + // PW_NODE_STATE_CREATING is useless and does not give any meaningful info, therefore skip it + return; + } + + self->data->info = node_info; + + gtk_label_set_text(self->app_name, node_info.name.c_str()); + gtk_label_set_text(self->media_name, node_info.media_name.c_str()); + gtk_label_set_text(self->format, node_info.format.c_str()); + gtk_label_set_text(self->rate, fmt::format(ui::get_user_locale(), "{0:.1Lf} kHz", node_info.rate / 1000.0F).c_str()); + gtk_label_set_text(self->channels, fmt::format("{0:d} {1}", node_info.n_volume_channels, _("channels")).c_str()); + gtk_label_set_text(self->latency, fmt::format("{0:.0f} ms", 1000.0F * node_info.latency).c_str()); + gtk_label_set_text(self->state, node_state_to_char_pointer(node_info.state)); + + // updating the enable toggle button + + g_signal_handler_block(self->enable, self->data->handler_id_enable); + + const auto is_enabled = self->data->application->pm->stream_is_connected(node_info.id, node_info.media_class); + const auto is_blocklisted = app_is_blocklisted(self, node_info.name); + + gtk_widget_set_sensitive(GTK_WIDGET(self->enable), is_enabled || !is_blocklisted); + gtk_check_button_set_active(self->enable, is_enabled); + + g_signal_handler_unblock(self->enable, self->data->handler_id_enable); + + // updating the volume + + g_signal_handler_block(self->volume, self->data->handler_id_volume); + + if (g_settings_get_boolean(self->app_settings, "use-cubic-volumes") != 0) { + gtk_spin_button_set_value(self->volume, 100.0 * std::cbrt(static_cast(node_info.volume))); + } else { + gtk_spin_button_set_value(self->volume, 100.0 * static_cast(node_info.volume)); + } + + g_signal_handler_unblock(self->volume, self->data->handler_id_volume); + + // updating the mute button state + + g_signal_handler_block(self->mute, self->data->handler_id_mute); + + if (node_info.mute) { + gtk_button_set_icon_name(GTK_BUTTON(self->mute), "audio-volume-muted-symbolic"); + } else { + gtk_button_set_icon_name(GTK_BUTTON(self->mute), "audio-volume-high-symbolic"); + } + + gtk_toggle_button_set_active(self->mute, node_info.mute); + + g_signal_handler_unblock(self->mute, self->data->handler_id_mute); + + // set the icon name + + if (const auto default_app_icon = "ee-applications-multimedia-symbolic"s; self->icon_theme == nullptr) { + gtk_image_set_from_icon_name(self->app_icon, default_app_icon.c_str()); + } else if (const auto icon_name = get_app_icon_name(node_info); icon_name.empty()) { + gtk_image_set_from_icon_name(self->app_icon, default_app_icon.c_str()); + } else if (!icon_available(self, icon_name)) { + gtk_image_set_from_icon_name(self->app_icon, default_app_icon.c_str()); + } else { + gtk_image_set_from_icon_name(self->app_icon, icon_name.c_str()); + } + + // updating the blocklist button state + + g_signal_handler_block(self->blocklist, self->data->handler_id_blocklist); + + gtk_check_button_set_active(self->blocklist, static_cast(is_blocklisted)); + + g_signal_handler_unblock(self->blocklist, self->data->handler_id_blocklist); + + // save app "enabled state" only the first time when it is not present in the enabled_app_list map + + if (self->data->enabled_app_list->find(node_info.id) == self->data->enabled_app_list->end()) { + self->data->enabled_app_list->insert({node_info.id, is_enabled}); + } +} + +void setup(AppInfo* self, + app::Application* application, + GSettings* settings, + GtkIconTheme* icon_theme, + std::unordered_map& enabled_app_list) { + self->data->application = application; + self->settings = settings; + self->icon_theme = icon_theme; + self->data->enabled_app_list = &enabled_app_list; +} + +void dispose(GObject* object) { + auto* self = EE_APP_INFO(object); + + g_object_unref(self->app_settings); + + util::debug(self->data->info.name + " disposed"); + + G_OBJECT_CLASS(app_info_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_APP_INFO(object); + + util::debug(self->data->info.name + " finalized"); + + delete self->data; + + G_OBJECT_CLASS(app_info_parent_class)->finalize(object); +} + +void app_info_class_init(AppInfoClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::app_info_ui); + + gtk_widget_class_bind_template_child(widget_class, AppInfo, enable); + gtk_widget_class_bind_template_child(widget_class, AppInfo, app_icon); + gtk_widget_class_bind_template_child(widget_class, AppInfo, app_name); + gtk_widget_class_bind_template_child(widget_class, AppInfo, media_name); + gtk_widget_class_bind_template_child(widget_class, AppInfo, format); + gtk_widget_class_bind_template_child(widget_class, AppInfo, rate); + gtk_widget_class_bind_template_child(widget_class, AppInfo, channels); + gtk_widget_class_bind_template_child(widget_class, AppInfo, latency); + gtk_widget_class_bind_template_child(widget_class, AppInfo, state); + gtk_widget_class_bind_template_child(widget_class, AppInfo, volume); + gtk_widget_class_bind_template_child(widget_class, AppInfo, mute); + gtk_widget_class_bind_template_child(widget_class, AppInfo, blocklist); +} + +void app_info_init(AppInfo* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->app_settings = g_settings_new(tags::app::id); + + prepare_spinbuttons<"%">(self->volume); + + self->data->handler_id_enable = g_signal_connect(self->enable, "toggled", G_CALLBACK(on_enable), self); + self->data->handler_id_volume = g_signal_connect(self->volume, "value-changed", G_CALLBACK(on_volume_changed), self); + self->data->handler_id_mute = g_signal_connect(self->mute, "toggled", G_CALLBACK(on_mute), self); + self->data->handler_id_blocklist = g_signal_connect(self->blocklist, "toggled", G_CALLBACK(on_blocklist), self); +} + +auto create() -> AppInfo* { + return static_cast(g_object_new(EE_TYPE_APP_INFO, nullptr)); +} + +} // namespace ui::app_info diff --git a/src/application.cpp b/src/application.cpp new file mode 100644 index 0000000..fe82d78 --- /dev/null +++ b/src/application.cpp @@ -0,0 +1,523 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "application.hpp" +#include "application_ui.hpp" + +namespace app { + +using namespace std::string_literals; + +G_DEFINE_TYPE(Application, application, ADW_TYPE_APPLICATION) + +void hide_all_windows(GApplication* app) { + auto* list = gtk_application_get_windows(GTK_APPLICATION(app)); + + while (list != nullptr) { + auto* window = list->data; + auto* next = list->next; + + gtk_window_destroy(GTK_WINDOW(window)); + + list = next; + } +} + +void update_bypass_state(Application* self) { + const auto state = g_settings_get_boolean(self->settings, "bypass"); + + self->soe->set_bypass(state != 0); + self->sie->set_bypass(state != 0); + + util::info(((state) != 0 ? "enabling" : "disabling") + " global bypass"s); +} + +void on_startup(GApplication* gapp) { + G_APPLICATION_CLASS(application_parent_class)->startup(gapp); + + auto* self = EE_APP(gapp); + + self->data = new Data(); + + self->sie_settings = g_settings_new(tags::schema::id_input); + self->soe_settings = g_settings_new(tags::schema::id_output); + + self->pm = new PipeManager(); + self->soe = new StreamOutputEffects(self->pm); + self->sie = new StreamInputEffects(self->pm); + + if (self->settings == nullptr) { + self->settings = g_settings_new(tags::app::id); + } + + if (self->presets_manager == nullptr) { + self->presets_manager = new PresetsManager(); + } + + PipeManager::exclude_monitor_stream = g_settings_get_boolean(self->settings, "exclude-monitor-streams") != 0; + + if (g_settings_get_boolean(self->settings, "reset-volume-on-startup") != 0) { + PipeManager::set_node_mute(self->pm->ee_source_node.proxy, false); + PipeManager::set_node_volume(self->pm->ee_source_node.proxy, self->pm->ee_source_node.n_volume_channels, 1.0); + + PipeManager::set_node_mute(self->pm->ee_sink_node.proxy, false); + PipeManager::set_node_volume(self->pm->ee_sink_node.proxy, self->pm->ee_sink_node.n_volume_channels, 1.0); + } + + self->data->connections.push_back(self->pm->new_default_sink_name.connect([=](const std::string name) { + util::debug("new default output device: " + name); + + if (g_settings_get_boolean(self->soe_settings, "use-default-output-device") != 0) { + g_settings_set_string(self->soe_settings, "output-device", name.c_str()); + } + })); + + self->data->connections.push_back(self->pm->new_default_source_name.connect([=](const std::string name) { + util::debug("new default input device: " + name); + + if (g_settings_get_boolean(self->sie_settings, "use-default-input-device") != 0) { + g_settings_set_string(self->sie_settings, "input-device", name.c_str()); + } + })); + + self->data->connections.push_back(self->pm->device_input_route_changed.connect([=](const DeviceInfo device) { + if (device.input_route_available == SPA_PARAM_AVAILABILITY_no) { + return; + } + + util::debug("device "s + device.name + " has changed its input route to: "s + device.input_route_name); + + NodeInfo target_node; + + for (const auto& [serial, node] : self->pm->node_map) { + if (node.media_class == tags::pipewire::media_class::source) { + if (util::str_contains(node.name, device.bus_path) || util::str_contains(node.name, device.bus_id)) { + target_node = node; + + break; + } + } + } + + if (target_node.id != SPA_ID_INVALID) { + auto name = util::gsettings_get_string(self->sie_settings, "input-device"); + + if (target_node.name == name) { + self->presets_manager->autoload(PresetType::input, target_node.name, device.input_route_name); + } else { + util::debug("input autoloading: the target node name does not match the input device name"); + } + } else { + util::debug("input autoloading: could not find the target node"); + } + })); + + self->data->connections.push_back(self->pm->device_output_route_changed.connect([=](const DeviceInfo device) { + if (device.output_route_available == SPA_PARAM_AVAILABILITY_no) { + return; + } + + util::debug("device "s + device.name + " has changed its output route to: "s + device.output_route_name); + + NodeInfo target_node; + + for (const auto& [serial, node] : self->pm->node_map) { + if (node.media_class == tags::pipewire::media_class::sink) { + if (util::str_contains(node.name, device.bus_path) || util::str_contains(node.name, device.bus_id)) { + target_node = node; + + break; + } + } + } + + if (target_node.serial != SPA_ID_INVALID) { + auto name = util::gsettings_get_string(self->soe_settings, "output-device"); + + if (target_node.name == name) { + self->presets_manager->autoload(PresetType::output, target_node.name, device.output_route_name); + } else { + util::debug("output autoloading: the target node name does not match the output device name"); + } + } else { + util::debug("output autoloading: could not find the target node"); + } + })); + + self->data->gconnections_soe.push_back(g_signal_connect( + self->soe_settings, "changed::output-device", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + const auto name = util::gsettings_get_string(settings, key); + + if (name.empty()) { + return; + } + + for (const auto& device : self->pm->list_devices) { + if (util::str_contains(name, device.bus_path) || util::str_contains(name, device.bus_id)) { + self->presets_manager->autoload(PresetType::output, name, device.output_route_name); + + return; + } + } + }), + self)); + + self->data->gconnections_sie.push_back(g_signal_connect( + self->sie_settings, "changed::input-device", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + const auto name = util::gsettings_get_string(settings, key); + + if (name.empty()) { + return; + } + + for (const auto& device : self->pm->list_devices) { + if (util::str_contains(name, device.bus_path) || util::str_contains(name, device.bus_id)) { + self->presets_manager->autoload(PresetType::input, name, device.input_route_name); + + return; + } + } + }), + self)); + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::bypass", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + update_bypass_state(self); + }), + self)); + + self->data->gconnections.push_back( + g_signal_connect(self->settings, "changed::exclude-monitor-streams", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + PipeManager::exclude_monitor_stream = g_settings_get_boolean(settings, key) != 0; + }), + self)); + + update_bypass_state(self); + + if ((g_application_get_flags(gapp) & G_APPLICATION_IS_SERVICE) != 0) { + g_application_hold(gapp); + } +} + +void application_class_init(ApplicationClass* klass) { + auto* application_class = G_APPLICATION_CLASS(klass); + + application_class->handle_local_options = [](GApplication* gapp, GVariantDict* options) { + if (options == nullptr) { + return -1; + } + + auto* self = EE_APP(gapp); + + if (self->settings == nullptr) { + self->settings = g_settings_new(tags::app::id); + } + + if (self->presets_manager == nullptr) { + self->presets_manager = new PresetsManager(); + } + + if (g_variant_dict_contains(options, "presets") != 0) { + std::string list; + + for (const auto& name : self->presets_manager->get_names(PresetType::output)) { + list += name + ","; + } + + std::cout << _("Output Presets: ") + list << std::endl; + + list = ""; + + for (const auto& name : self->presets_manager->get_names(PresetType::input)) { + list += name + ","; + } + + std::cout << _("Input Presets: ") + list << std::endl; + + return EXIT_SUCCESS; + } + + if (g_variant_dict_contains(options, "bypass") != 0) { + if (int bypass_arg = 2; g_variant_dict_lookup(options, "bypass", "i", &bypass_arg)) { + if (bypass_arg == 3) { + std::cout << g_settings_get_boolean(self->settings, "bypass") << std::endl; + + return EXIT_SUCCESS; + } + } + } + + return -1; + }; + + application_class->startup = on_startup; + + application_class->command_line = [](GApplication* gapp, GApplicationCommandLine* cmdline) { + auto* self = EE_APP(gapp); + auto* options = g_application_command_line_get_options_dict(cmdline); + + if (g_variant_dict_contains(options, "quit") != 0) { + hide_all_windows(gapp); + + g_application_quit(G_APPLICATION(gapp)); + } else if (g_variant_dict_contains(options, "load-preset") != 0) { + const char* name = nullptr; + + if (g_variant_dict_lookup(options, "load-preset", "&s", &name) != 0) { + if (self->presets_manager->preset_file_exists(PresetType::input, name)) { + if (self->presets_manager->load_preset_file(PresetType::input, name)) { + g_settings_set_string(self->settings, "last-used-input-preset", name); + } else { + g_settings_reset(self->settings, "last-used-input-preset"); + } + } + + if (self->presets_manager->preset_file_exists(PresetType::output, name)) { + if (self->presets_manager->load_preset_file(PresetType::output, name)) { + g_settings_set_string(self->settings, "last-used-output-preset", name); + } else { + g_settings_reset(self->settings, "last-used-output-preset"); + } + } + } + } else if (g_variant_dict_contains(options, "reset") != 0) { + util::reset_all_keys_except(self->settings); + + self->soe->reset_settings(); + self->sie->reset_settings(); + + util::info("All settings were reset"); + } else if (g_variant_dict_contains(options, "hide-window") != 0) { + hide_all_windows(gapp); + + util::info("Hiding the window..."); + } else if (g_variant_dict_contains(options, "bypass") != 0) { + if (int bypass_arg = 2; g_variant_dict_lookup(options, "bypass", "i", &bypass_arg)) { + if (bypass_arg == 1) { + g_settings_set_boolean(self->settings, "bypass", 1); + } else if (bypass_arg == 2) { + g_settings_set_boolean(self->settings, "bypass", 0); + } + } + } else { + g_application_activate(gapp); + } + + return G_APPLICATION_CLASS(application_parent_class)->command_line(gapp, cmdline); + }; + + application_class->activate = [](GApplication* gapp) { + if (gtk_application_get_active_window(GTK_APPLICATION(gapp)) == nullptr) { + G_APPLICATION_CLASS(application_parent_class)->activate(gapp); + + auto* window = ui::application_window::create(gapp); + + gtk_window_present(GTK_WINDOW(window)); + } + }; + + application_class->shutdown = [](GApplication* gapp) { + G_APPLICATION_CLASS(application_parent_class)->shutdown(gapp); + + auto* self = EE_APP(gapp); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + for (auto& handler_id : self->data->gconnections_sie) { + g_signal_handler_disconnect(self->sie_settings, handler_id); + } + + for (auto& handler_id : self->data->gconnections_soe) { + g_signal_handler_disconnect(self->soe_settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections_sie.clear(); + self->data->gconnections_soe.clear(); + + g_object_unref(self->settings); + g_object_unref(self->sie_settings); + g_object_unref(self->soe_settings); + + PipeManager::exiting = true; + + delete self->data; + delete self->presets_manager; + delete self->sie; + delete self->soe; + delete self->pm; + + self->data = nullptr; + self->presets_manager = nullptr; + self->sie = nullptr; + self->soe = nullptr; + self->pm = nullptr; + + util::debug("shutting down..."); + }; +} + +void application_init(Application* self) { + std::array entries{}; + + entries[0] = {"quit", + [](GSimpleAction* action, GVariant* parameter, gpointer app) { + util::debug("The user pressed Q or executed a similar action. Our process will exit."); + + g_application_quit(G_APPLICATION(app)); + }, + nullptr, nullptr, nullptr}; + + entries[1] = {"help", + [](GSimpleAction* action, GVariant* parameter, gpointer gapp) { + gtk_show_uri(gtk_application_get_active_window(GTK_APPLICATION(gapp)), "help:easyeffects", + GDK_CURRENT_TIME); + }, + nullptr, nullptr, nullptr}; + + entries[2] = {"about", + [](GSimpleAction* action, GVariant* parameter, gpointer gapp) { + std::array authors = {"Wellington Wallace", nullptr}; + + gtk_show_about_dialog(gtk_application_get_active_window(GTK_APPLICATION(gapp)), "program-name", + "EasyEffects", "version", VERSION, "comments", + _("Audio effects for PipeWire applications"), "authors", authors.data(), + "logo-icon-name", "com.github.wwmm.easyeffects", "license-type", + GTK_LICENSE_GPL_3_0, "website", "https://github.com/wwmm/easyeffects", nullptr); + }, + nullptr, nullptr, nullptr}; + + entries[3] = {"fullscreen", + [](GSimpleAction* action, GVariant* parameter, gpointer gapp) { + auto* self = EE_APP(gapp); + + auto state = g_settings_get_boolean(self->settings, "window-fullscreen") != 0; + + if (state) { + gtk_window_unfullscreen(GTK_WINDOW(gtk_application_get_active_window(GTK_APPLICATION(gapp)))); + + g_settings_set_boolean(self->settings, "window-fullscreen", 0); + } else { + gtk_window_fullscreen(GTK_WINDOW(gtk_application_get_active_window(GTK_APPLICATION(gapp)))); + + g_settings_set_boolean(self->settings, "window-fullscreen", 1); + } + }, + nullptr, nullptr, nullptr}; + + entries[4] = {"preferences", + [](GSimpleAction* action, GVariant* parameter, gpointer gapp) { + auto* preferences = ui::preferences::window::create(); + + gtk_window_set_transient_for(GTK_WINDOW(preferences), + GTK_WINDOW(gtk_application_get_active_window(GTK_APPLICATION(gapp)))); + + gtk_window_present(GTK_WINDOW(preferences)); + }, + nullptr, nullptr, nullptr}; + + entries[5] = {"reset", + [](GSimpleAction* action, GVariant* parameter, gpointer gapp) { + auto* self = EE_APP(gapp); + + util::reset_all_keys_except(self->settings); + + self->soe->reset_settings(); + self->sie->reset_settings(); + }, + nullptr, nullptr, nullptr}; + + entries[6] = {"shortcuts", + [](GSimpleAction* action, GVariant* parameter, gpointer gapp) { + auto builder = gtk_builder_new_from_resource(tags::resources::shortcuts_ui); + + auto* window = GTK_SHORTCUTS_WINDOW(gtk_builder_get_object(builder, "window")); + + gtk_window_set_transient_for(GTK_WINDOW(window), + GTK_WINDOW(gtk_application_get_active_window(GTK_APPLICATION(gapp)))); + + gtk_window_present(GTK_WINDOW(window)); + + g_object_unref(builder); + }, + nullptr, nullptr, nullptr}; + + entries[7] = {"hide_windows", + [](GSimpleAction* action, GVariant* parameter, gpointer app) { + util::debug("The user pressed W or executed a similar action. Hiding our window."); + + hide_all_windows(G_APPLICATION(app)); + }, + nullptr, nullptr, nullptr}; + + g_action_map_add_action_entries(G_ACTION_MAP(self), entries.data(), entries.size(), self); + + std::array quit_accels = {"Q", nullptr}; + std::array hide_windows_accels = {"W", nullptr}; + + std::array help_accels = {"F1", nullptr}; + std::array fullscreen_accels = {"F11", nullptr}; + + gtk_application_set_accels_for_action(GTK_APPLICATION(self), "app.quit", quit_accels.data()); + gtk_application_set_accels_for_action(GTK_APPLICATION(self), "app.hide_windows", hide_windows_accels.data()); + gtk_application_set_accels_for_action(GTK_APPLICATION(self), "app.help", help_accels.data()); + gtk_application_set_accels_for_action(GTK_APPLICATION(self), "app.fullscreen", fullscreen_accels.data()); +} + +auto application_new() -> GApplication* { + g_set_application_name("EasyEffects"); + + auto* app = g_object_new(EE_TYPE_APPLICATION, "application-id", tags::app::id, "flags", + G_APPLICATION_HANDLES_COMMAND_LINE, nullptr); + + g_application_add_main_option(G_APPLICATION(app), "quit", 'q', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, + _("Quit EasyEffects. Useful when running in service mode."), nullptr); + + g_application_add_main_option(G_APPLICATION(app), "load-preset", 'l', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, + _("Load a preset. Example: easyeffects -l music"), nullptr); + + g_application_add_main_option(G_APPLICATION(app), "reset", 'r', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, + _("Reset EasyEffects."), nullptr); + + g_application_add_main_option(G_APPLICATION(app), "hide-window", 'w', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, + _("Hide the Window."), nullptr); + + g_application_add_main_option(G_APPLICATION(app), "bypass", 'b', G_OPTION_FLAG_NONE, G_OPTION_ARG_INT, + _("Global bypass. 1 to enable, 2 to disable and 3 to get status"), nullptr); + + g_application_add_main_option(G_APPLICATION(app), "presets", 'p', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, + _("Show available presets."), nullptr); + + return G_APPLICATION(app); +} + +} // namespace app diff --git a/src/application_ui.cpp b/src/application_ui.cpp new file mode 100644 index 0000000..4a97f79 --- /dev/null +++ b/src/application_ui.cpp @@ -0,0 +1,288 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "application_ui.hpp" + +namespace ui::application_window { + +using namespace std::string_literals; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + int width, height; + + bool maximized, fullscreen; + + GApplication* gapp; + + GtkIconTheme* icon_theme; + + std::vector connections; +}; + +struct _ApplicationWindow { + AdwWindow parent_instance; + + AdwViewStack* stack; + + GtkMenuButton* presets_menu_button; + + GtkToggleButton* bypass_button; + + ui::presets_menu::PresetsMenu* presetsMenu; + ui::effects_box::EffectsBox* soe_ui; + ui::effects_box::EffectsBox* sie_ui; + ui::pipe_manager_box::PipeManagerBox* pm_box; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(ApplicationWindow, application_window, ADW_TYPE_APPLICATION_WINDOW) + +void init_theme_color(ApplicationWindow* self) { + if (g_settings_get_boolean(self->settings, "use-dark-theme") == 0) { + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_PREFER_LIGHT); + } else { + adw_style_manager_set_color_scheme(adw_style_manager_get_default(), ADW_COLOR_SCHEME_PREFER_DARK); + } +} + +auto setup_icon_theme() -> GtkIconTheme* { + auto* icon_theme = gtk_icon_theme_get_for_display(gdk_display_get_default()); + + if (icon_theme == nullptr) { + util::warning("can't retrieve the icon theme in use on the system. App icons won't be shown."); + + return nullptr; + } + + auto* name = gtk_icon_theme_get_theme_name(icon_theme); + + if (name == nullptr) { + util::debug("Icon Theme detected, but the name is empty"); + } else { + util::debug("Icon Theme "s + name + " detected"); + + g_free(name); + } + + gtk_icon_theme_add_resource_path(icon_theme, tags::resources::icons); + + return icon_theme; +} + +void apply_css_style() { + auto* provider = gtk_css_provider_new(); + + gtk_css_provider_load_from_resource(provider, tags::resources::css); + + gtk_style_context_add_provider_for_display(gdk_display_get_default(), GTK_STYLE_PROVIDER(provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); +} + +void constructed(GObject* object) { + auto* self = EE_APP_WINDOW(object); + + self->data->maximized = g_settings_get_boolean(self->settings, "window-maximized") != 0; + self->data->fullscreen = g_settings_get_boolean(self->settings, "window-fullscreen") != 0; + self->data->width = g_settings_get_int(self->settings, "window-width"); + self->data->height = g_settings_get_int(self->settings, "window-height"); + + gtk_window_set_default_size(GTK_WINDOW(self), self->data->width, self->data->height); + + if (self->data->maximized) { + gtk_window_maximize(GTK_WINDOW(self)); + } + + if (self->data->fullscreen) { + gtk_window_fullscreen(GTK_WINDOW(self)); + } + + G_OBJECT_CLASS(application_window_parent_class)->constructed(object); +} + +void size_allocate(GtkWidget* widget, int width, int height, int baseline) { + auto* self = EE_APP_WINDOW(widget); + + GTK_WIDGET_CLASS(application_window_parent_class)->size_allocate(widget, width, height, baseline); + + if (!self->data->maximized && !self->data->fullscreen) { + gtk_window_get_default_size(GTK_WINDOW(self), &self->data->width, &self->data->height); + } +} + +void surface_state_changed(GtkWidget* widget) { + auto* self = EE_APP_WINDOW(widget); + + GdkToplevelState new_state = GDK_TOPLEVEL_STATE_MAXIMIZED; + + new_state = gdk_toplevel_get_state(GDK_TOPLEVEL(gtk_native_get_surface(GTK_NATIVE(widget)))); + + self->data->maximized = (new_state & GDK_TOPLEVEL_STATE_MAXIMIZED) != 0; + self->data->fullscreen = (new_state & GDK_TOPLEVEL_STATE_FULLSCREEN) != 0; +} + +void realize(GtkWidget* widget) { + GTK_WIDGET_CLASS(application_window_parent_class)->realize(widget); + + g_signal_connect_swapped(gtk_native_get_surface(GTK_NATIVE(widget)), "notify::state", + G_CALLBACK(surface_state_changed), widget); + + auto* self = EE_APP_WINDOW(widget); + + /* + Getting the gapp pointer here because it is not defined when "init" is called + */ + + self->data->gapp = G_APPLICATION(gtk_window_get_application(GTK_WINDOW(widget))); + + ui::presets_menu::setup(self->presetsMenu, app::EE_APP(self->data->gapp)); + ui::effects_box::setup(self->soe_ui, app::EE_APP(self->data->gapp), PipelineType::output, self->data->icon_theme); + ui::effects_box::setup(self->sie_ui, app::EE_APP(self->data->gapp), PipelineType::input, self->data->icon_theme); + ui::pipe_manager_box::setup(self->pm_box, app::EE_APP(self->data->gapp)); + + self->data->connections.push_back( + app::EE_APP(self->data->gapp) + ->presets_manager->preset_load_error.connect([=](const std::string title, const std::string descr) { + ui::show_simple_message_dialog(widget, title, descr); + })); +} + +void unrealize(GtkWidget* widget) { + auto* self = EE_APP_WINDOW(widget); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + self->data->connections.clear(); + + g_signal_handlers_disconnect_by_func(gtk_native_get_surface(GTK_NATIVE((widget))), + reinterpret_cast(surface_state_changed), widget); + + GTK_WIDGET_CLASS(application_window_parent_class)->unrealize(widget); +} + +void dispose(GObject* object) { + auto* self = EE_APP_WINDOW(object); + + g_settings_set_int(self->settings, "window-width", self->data->width); + g_settings_set_int(self->settings, "window-height", self->data->height); + g_settings_set_boolean(self->settings, "window-maximized", static_cast(self->data->maximized)); + g_settings_set_boolean(self->settings, "window-fullscreen", static_cast(self->data->fullscreen)); + + if (g_settings_get_boolean(self->settings, "shutdown-on-window-close") != 0 && + (g_application_get_flags(self->data->gapp) & G_APPLICATION_IS_SERVICE) != 0) { + g_application_release(self->data->gapp); + } + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(application_window_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_APP_WINDOW(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(application_window_parent_class)->finalize(object); +} + +void application_window_class_init(ApplicationWindowClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->constructed = constructed; + object_class->dispose = dispose; + object_class->finalize = finalize; + + widget_class->size_allocate = size_allocate; + widget_class->realize = realize; + widget_class->unrealize = unrealize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::application_window_ui); + + gtk_widget_class_bind_template_child(widget_class, ApplicationWindow, stack); + gtk_widget_class_bind_template_child(widget_class, ApplicationWindow, presets_menu_button); + gtk_widget_class_bind_template_child(widget_class, ApplicationWindow, bypass_button); +} + +void application_window_init(ApplicationWindow* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->data->width = -1; + self->data->height = -1; + self->data->maximized = false; + self->data->fullscreen = false; + + self->settings = g_settings_new(tags::app::id); + + init_theme_color(self); + + apply_css_style(); + + self->data->icon_theme = setup_icon_theme(); + + /* + We save the user locale here because we have to wait for the changes GTK is going to make to the global locale. + It seems that the init method of the main window widget is a good place for this. + */ + + ui::save_user_locale(); + + self->presetsMenu = ui::presets_menu::create(); + self->soe_ui = ui::effects_box::create(); + self->sie_ui = ui::effects_box::create(); + self->pm_box = ui::pipe_manager_box::create(); + + auto* soe_ui_page = adw_view_stack_add_titled(self->stack, GTK_WIDGET(self->soe_ui), "stream_output", _("Output")); + auto* sie_ui_page = adw_view_stack_add_titled(self->stack, GTK_WIDGET(self->sie_ui), "stream_input", _("Input")); + auto* pm_box_page = adw_view_stack_add_titled(self->stack, GTK_WIDGET(self->pm_box), "page_pipewire", _("PipeWire")); + + adw_view_stack_page_set_icon_name(soe_ui_page, "audio-speakers-symbolic"); + adw_view_stack_page_set_icon_name(sie_ui_page, "audio-input-microphone-symbolic"); + adw_view_stack_page_set_icon_name(pm_box_page, "network-server-symbolic"); + + gtk_menu_button_set_popover(self->presets_menu_button, GTK_WIDGET(self->presetsMenu)); + + g_settings_bind(self->settings, "bypass", self->bypass_button, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "autohide-popovers", self->presetsMenu, "autohide", G_SETTINGS_BIND_DEFAULT); + + g_signal_connect(self->settings, "changed::use-dark-theme", + G_CALLBACK(+[](GSettings* settings, char* key, ApplicationWindow* self) { init_theme_color(self); }), + self); +} + +auto create(GApplication* gapp) -> ApplicationWindow* { + return static_cast(g_object_new(EE_TYPE_APPLICATION_WINDOW, "application", gapp, nullptr)); +} + +} // namespace ui::application_window diff --git a/src/apps_box.cpp b/src/apps_box.cpp new file mode 100644 index 0000000..6365c54 --- /dev/null +++ b/src/apps_box.cpp @@ -0,0 +1,439 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "apps_box.hpp" + +namespace ui::apps_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + app::Application* application; + + std::unordered_map enabled_app_list; + + std::vector connections; + + std::vector gconnections; +}; + +struct _AppsBox { + GtkBox parent_instance; + + GtkOverlay* overlay; + + AdwStatusPage* overlay_empty_list; + + GtkListView* listview; + + GtkIconTheme* icon_theme; + + GListStore *apps_model, *all_apps_model; + + GSettings *settings, *app_settings; + + Data* data; +}; + +G_DEFINE_TYPE(AppsBox, apps_box, GTK_TYPE_BOX) + +auto app_is_blocklisted(AppsBox* self, const std::string& name) -> bool { + const auto list = util::gchar_array_to_vector(g_settings_get_strv(self->settings, "blocklist")); + + return std::ranges::find(list, name) != list.end(); +} + +void update_empty_list_overlay(AppsBox* self) { + if (g_list_model_get_n_items(G_LIST_MODEL(self->apps_model)) == 0) { + gtk_widget_show(GTK_WIDGET(self->overlay_empty_list)); + } else { + gtk_widget_hide(GTK_WIDGET(self->overlay_empty_list)); + } +} + +void on_app_added(AppsBox* self, const NodeInfo& node_info) { + // do not add the same stream twice + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->all_apps_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->all_apps_model), n)); + + if (holder->info->serial == node_info.serial) { + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + + auto* holder = ui::holders::create(node_info); + + g_list_store_append(self->all_apps_model, holder); + + if (g_settings_get_boolean(self->settings, "show-blocklisted-apps") != 0 || + !app_is_blocklisted(self, node_info.name)) { + g_list_store_append(self->apps_model, holder); + } + + /* + As g_list_store_append calls increases the object reference count we remove the one added by g_object_new in the + object creation. The reference added by g_list_store_append will be removed by an additional call to g_object_unref + after g_list_store_remove is called + */ + + g_object_unref(holder); + + update_empty_list_overlay(self); +} + +void on_app_removed(AppsBox* self, const uint64_t serial) { + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->all_apps_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->all_apps_model), n)); + + if (holder->info->serial == serial) { + holder->info_updated.clear(); // Disconnecting all the slots before removing the holder from the model + + g_list_store_remove(self->all_apps_model, n); + + g_object_unref(holder); + + break; + } + + g_object_unref(holder); + } + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->apps_model)); n++) { + auto* holder = static_cast(g_list_model_get_item(G_LIST_MODEL(self->apps_model), n)); + + if (holder->info->serial == serial) { + holder->info_updated.clear(); // Disconnecting all the slots before removing the holder from the model + + g_list_store_remove(self->apps_model, n); + + g_object_unref(holder); + + break; + } + + g_object_unref(holder); + } + + update_empty_list_overlay(self); +} + +void on_app_changed(AppsBox* self, const NodeInfo node_info) { + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->apps_model)); n++) { + auto* holder = static_cast(g_list_model_get_item(G_LIST_MODEL(self->apps_model), n)); + + if (holder->info->serial == node_info.serial) { + holder->info_updated.emit(node_info); + + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } +} + +void connect_stream(AppsBox* self, const uint& id, const std::string& media_class) { + if (media_class == tags::pipewire::media_class::output_stream) { + self->data->application->pm->connect_stream_output(id); + } else if (media_class == tags::pipewire::media_class::input_stream) { + self->data->application->pm->connect_stream_input(id); + } +} + +void disconnect_stream(AppsBox* self, const uint& id, const std::string& media_class) { + if (media_class == tags::pipewire::media_class::output_stream || + media_class == tags::pipewire::media_class::input_stream) { + self->data->application->pm->disconnect_stream(id); + } +} + +void setup_listview(AppsBox* self) { + auto* factory = gtk_signal_list_item_factory_new(); + + // setting the factory callbacks + + g_signal_connect(factory, "setup", + G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, AppsBox* self) { + auto app_info = ui::app_info::create(); + + ui::app_info::setup(app_info, self->data->application, self->settings, self->icon_theme, + self->data->enabled_app_list); + + gtk_list_item_set_activatable(item, 0); + gtk_list_item_set_child(item, GTK_WIDGET(app_info)); + + g_object_set_data(G_OBJECT(item), "app-info", app_info); + }), + self); + + g_signal_connect( + factory, "bind", G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, AppsBox* self) { + auto* app_info = static_cast(g_object_get_data(G_OBJECT(item), "app-info")); + + auto child_item = gtk_list_item_get_item(item); + + auto* holder = static_cast(child_item); + + // Update the app info ui for the very first time Needed for interface initialization in service mode + + if (const auto node_it = self->data->application->pm->node_map.find(holder->info->serial); + node_it != self->data->application->pm->node_map.end()) { + ui::app_info::update(app_info, node_it->second); + } + + // A call to holder->info_updated.clear() will be made in the unbind signal + + holder->info_updated.connect([=](const NodeInfo node_info) { ui::app_info::update(app_info, node_info); }); + }), + self); + + g_signal_connect(factory, "unbind", + G_CALLBACK(+[](GtkSignalListItemFactory* self, GtkListItem* item, gpointer user_data) { + auto* holder = static_cast(gtk_list_item_get_item(item)); + + holder->info_updated.clear(); + }), + self); + + gtk_list_view_set_factory(self->listview, factory); + + g_object_unref(factory); + + // setting the model + + auto* selection = gtk_no_selection_new(G_LIST_MODEL(self->apps_model)); + + gtk_list_view_set_model(self->listview, GTK_SELECTION_MODEL(selection)); + + g_object_unref(selection); +} + +void setup(AppsBox* self, app::Application* application, PipelineType pipeline_type, GtkIconTheme* icon_theme) { + self->data->application = application; + self->icon_theme = icon_theme; + + switch (pipeline_type) { + case PipelineType::input: { + auto* pm = application->sie->pm; + + self->settings = g_settings_new(tags::schema::id_input); + + for (const auto& [serial, node] : pm->node_map) { + if (node.media_class == tags::pipewire::media_class::input_stream) { + on_app_added(self, node); + } + } + + self->data->connections.push_back( + application->sie->pm->stream_input_added.connect([=](const NodeInfo info) { on_app_added(self, info); })); + + self->data->connections.push_back(application->sie->pm->stream_input_removed.connect( + [=](const uint64_t serial) { on_app_removed(self, serial); })); + + self->data->connections.push_back(application->sie->pm->stream_input_changed.connect( + [=](const NodeInfo node_info) { on_app_changed(self, node_info); })); + + break; + } + case PipelineType::output: { + auto* pm = application->soe->pm; + + self->settings = g_settings_new(tags::schema::id_output); + + for (const auto& [serial, node] : pm->node_map) { + if (node.media_class == tags::pipewire::media_class::output_stream) { + on_app_added(self, node); + } + } + + self->data->connections.push_back( + pm->stream_output_added.connect([=](const NodeInfo info) { on_app_added(self, info); })); + + self->data->connections.push_back(application->soe->pm->stream_output_removed.connect( + [=](const uint64_t serial) { on_app_removed(self, serial); })); + + self->data->connections.push_back(application->soe->pm->stream_output_changed.connect( + [=](const NodeInfo node_info) { on_app_changed(self, node_info); })); + + break; + } + } + + // updating the list when changes are made to the blocklist + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::blocklist", G_CALLBACK(+[](GSettings* settings, char* key, AppsBox* self) { + const auto show_blocklisted_apps = g_settings_get_boolean(self->settings, "show-blocklisted-apps") != 0; + + g_list_store_remove_all(self->apps_model); + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->all_apps_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->all_apps_model), n)); + + const auto app_is_enabled = + self->data->application->pm->stream_is_connected(holder->info->id, holder->info->media_class); + + if (app_is_blocklisted(self, holder->info->name)) { + if (app_is_enabled) { + disconnect_stream(self, holder->info->id, holder->info->media_class); + } + + if (show_blocklisted_apps) { + g_list_store_append(self->apps_model, holder); + } + } else { + if (!app_is_enabled) { + // Try to restore the previous enabled state, if needed + + try { + if (self->data->enabled_app_list.at(holder->info->id)) { + connect_stream(self, holder->info->id, holder->info->media_class); + } + } catch (...) { + connect_stream(self, holder->info->id, holder->info->media_class); + + util::warning("can't retrieve enabled state of node " + holder->info->name); + + self->data->enabled_app_list.insert({holder->info->id, true}); + } + } + + g_list_store_append(self->apps_model, holder); + } + + g_object_unref(holder); + } + + update_empty_list_overlay(self); + }), + self)); + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::show-blocklisted-apps", G_CALLBACK(+[](GSettings* settings, char* key, AppsBox* self) { + const auto show_blocklisted_apps = g_settings_get_boolean(self->settings, "show-blocklisted-apps") != 0; + + g_list_store_remove_all(self->apps_model); + + if (show_blocklisted_apps) { + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->all_apps_model)); n++) { + auto item = g_list_model_get_item(G_LIST_MODEL(self->all_apps_model), n); + + g_object_unref(item); + + g_list_store_append(self->apps_model, item); + } + } else { + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->all_apps_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->all_apps_model), n)); + + g_object_unref(holder); + + if (!app_is_blocklisted(self, holder->info->name)) { + auto item = g_list_model_get_item(G_LIST_MODEL(self->all_apps_model), n); + + g_object_unref(item); + + g_list_store_append(self->apps_model, item); + } + } + } + + update_empty_list_overlay(self); + }), + self)); +} + +void dispose(GObject* object) { + auto* self = EE_APPS_BOX(object); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->all_apps_model); // do not do this to self->apps_model. It is owned by the listview + g_object_unref(self->settings); + g_object_unref(self->app_settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(apps_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_APPS_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(apps_box_parent_class)->finalize(object); +} + +void apps_box_class_init(AppsBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::apps_box_ui); + + gtk_widget_class_bind_template_child(widget_class, AppsBox, overlay); + gtk_widget_class_bind_template_child(widget_class, AppsBox, overlay_empty_list); + gtk_widget_class_bind_template_child(widget_class, AppsBox, listview); +} + +void apps_box_init(AppsBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->app_settings = g_settings_new(tags::app::id); + + self->apps_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + self->all_apps_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + + gtk_overlay_set_clip_overlay(self->overlay, GTK_WIDGET(self->overlay_empty_list), 1); + + setup_listview(self); +} + +auto create() -> AppsBox* { + return static_cast(g_object_new(EE_TYPE_APPS_BOX, nullptr)); +} + +} // namespace ui::apps_box diff --git a/src/autogain.cpp b/src/autogain.cpp new file mode 100644 index 0000000..0421aa7 --- /dev/null +++ b/src/autogain.cpp @@ -0,0 +1,347 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "autogain.hpp" + +AutoGain::AutoGain(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::autogain, schema, schema_path, pipe_manager) { + target = g_settings_get_double(settings, "target"); + + reference = parse_reference_key(util::gsettings_get_string(settings, "reference")); + + gconnections.push_back(g_signal_connect(settings, "changed::target", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->target = g_settings_get_double(settings, key); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::maximum-history", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + std::scoped_lock lock(self->data_mutex); + + self->set_maximum_history(g_settings_get_int(settings, key)); + }), + this)); + + gconnections.push_back(g_signal_connect( + settings, "changed::reset-history", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->mythreads.emplace_back([self]() { // Using emplace_back here makes sense + self->data_mutex.lock(); + + self->ebur128_ready = false; + + self->data_mutex.unlock(); + + auto status = self->init_ebur128(); + + self->data_mutex.lock(); + + self->ebur128_ready = status; + + self->data_mutex.unlock(); + }); + }), + this)); + + gconnections.push_back(g_signal_connect( + settings, "changed::reference", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->reference = parse_reference_key(util::gsettings_get_string(settings, key)); + }), + this)); + + setup_input_output_gain(); +} + +AutoGain::~AutoGain() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + for (auto& t : mythreads) { + t.join(); + } + + mythreads.clear(); + + std::scoped_lock lock(data_mutex); + + if (ebur_state != nullptr) { + ebur128_destroy(&ebur_state); + } + + util::debug(log_tag + name + " destroyed"); +} + +auto AutoGain::init_ebur128() -> bool { + if (n_samples == 0 || rate == 0) { + return false; + } + + if (ebur_state != nullptr) { + ebur128_destroy(&ebur_state); + + ebur_state = nullptr; + } + + ebur_state = ebur128_init(2U, rate, EBUR128_MODE_S | EBUR128_MODE_I | EBUR128_MODE_LRA | EBUR128_MODE_SAMPLE_PEAK); + + ebur128_set_channel(ebur_state, 0U, EBUR128_LEFT); + ebur128_set_channel(ebur_state, 1U, EBUR128_RIGHT); + + set_maximum_history(g_settings_get_int(settings, "maximum-history")); + + return ebur_state != nullptr; +} + +auto AutoGain::parse_reference_key(const std::string& key) -> Reference { + if (key == "Momentary") { + return Reference::momentary; + } + + if (key == "Shortterm") { + return Reference::shortterm; + } + + if (key == "Integrated") { + return Reference::integrated; + } + + if (key == "Geometric Mean (MS)") { + return Reference::geometric_mean_ms; + } + + if (key == "Geometric Mean (MI)") { + return Reference::geometric_mean_mi; + } + + if (key == "Geometric Mean (SI)") { + return Reference::geometric_mean_si; + } + + return Reference::geometric_mean_msi; +} + +void AutoGain::set_maximum_history(const int& seconds) { + if (ebur_state == nullptr) { + return; + } + + // The value given to ebur128_set_max_history must be in milliseconds + + ebur128_set_max_history(ebur_state, static_cast(seconds) * 1000ul); +} + +void AutoGain::setup() { + if (2 * n_samples != data.size()) { + data.resize(n_samples * 2); + } + + if (rate != old_rate) { + data_mutex.lock(); + + ebur128_ready = false; + + data_mutex.unlock(); + + mythreads.emplace_back([this]() { // Using emplace_back here makes sense + if (ebur128_ready) { + return; + } + + auto status = true; + + old_rate = rate; + + status = init_ebur128(); + + data_mutex.lock(); + + ebur128_ready = status; + + data_mutex.unlock(); + }); + } +} + +void AutoGain::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::scoped_lock lock(data_mutex); + + if (bypass || !ebur128_ready) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + for (uint n = 0U; n < n_samples; n++) { + data[2U * n] = left_in[n]; + data[2U * n + 1U] = right_in[n]; + } + + ebur128_add_frames_float(ebur_state, data.data(), n_samples); + + auto failed = false; + + if (EBUR128_SUCCESS != ebur128_loudness_momentary(ebur_state, &momentary)) { + failed = true; + } + + if (EBUR128_SUCCESS != ebur128_loudness_shortterm(ebur_state, &shortterm)) { + failed = true; + } + + if (EBUR128_SUCCESS != ebur128_loudness_global(ebur_state, &global)) { + failed = true; + } + + if (EBUR128_SUCCESS != ebur128_relative_threshold(ebur_state, &relative)) { + failed = true; + } + + if (EBUR128_SUCCESS != ebur128_loudness_range(ebur_state, &range)) { + failed = true; + } + + if (relative > -70.0F && momentary > -70.0F && !failed) { + double peak_L = 0.0; + double peak_R = 0.0; + + if (EBUR128_SUCCESS != ebur128_prev_sample_peak(ebur_state, 0U, &peak_L)) { + failed = true; + } + + if (EBUR128_SUCCESS != ebur128_prev_sample_peak(ebur_state, 1U, &peak_R)) { + failed = true; + } + + if (!failed) { + switch (reference) { + case Reference::momentary: { + loudness = momentary; + + break; + } + case Reference::shortterm: { + loudness = shortterm; + + break; + } + case Reference::integrated: { + loudness = global; + + break; + } + case Reference::geometric_mean_msi: { + loudness = std::cbrt(momentary * shortterm * global); + + break; + } + case Reference::geometric_mean_ms: { + loudness = std::sqrt(std::fabs(momentary * shortterm)); + + if (momentary < 0 && shortterm < 0) { + loudness *= -1; + } + + break; + } + case Reference::geometric_mean_mi: { + loudness = std::sqrt(std::fabs(momentary * global)); + + if (momentary < 0 && global < 0) { + loudness *= -1; + } + + break; + } + case Reference::geometric_mean_si: { + loudness = std::sqrt(std::fabs(shortterm * global)); + + if (shortterm < 0 && global < 0) { + loudness *= -1; + } + + break; + } + } + + const double diff = target - loudness; + + // 10^(diff/20). The way below should be faster than using pow + const double gain = std::exp((diff / 20.0) * std::log(10.0)); + + const double peak = (peak_L > peak_R) ? peak_L : peak_R; + + const auto db_peak = util::linear_to_db(peak); + + if (db_peak > util::minimum_db_level) { + if (gain * peak < 1.0) { + internal_output_gain = gain; + } + } + } + } + + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + if (internal_output_gain != 1.0F) { + apply_gain(left_out, right_out, static_cast(internal_output_gain)); + } + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + results.emit(loudness, internal_output_gain, momentary, shortterm, global, relative, range); + + notify(); + + notification_dt = 0.0F; + } + } +} + +auto AutoGain::get_latency_seconds() -> float { + return 0.0F; +} diff --git a/src/autogain_preset.cpp b/src/autogain_preset.cpp new file mode 100644 index 0000000..0c4b1f3 --- /dev/null +++ b/src/autogain_preset.cpp @@ -0,0 +1,54 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "autogain_preset.hpp" + +AutoGainPreset::AutoGainPreset() { + input_settings = g_settings_new_with_path(tags::schema::autogain::id, tags::schema::autogain::input_path); + + output_settings = g_settings_new_with_path(tags::schema::autogain::id, tags::schema::autogain::output_path); +} + +void AutoGainPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["autogain"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["autogain"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["autogain"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["autogain"]["target"] = g_settings_get_double(settings, "target"); + + json[section]["autogain"]["maximum-history"] = g_settings_get_int(settings, "maximum-history"); + + json[section]["autogain"]["reference"] = util::gsettings_get_string(settings, "reference"); +} + +void AutoGainPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("autogain"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("autogain"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("autogain"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("autogain"), settings, "target", "target"); + + update_key(json.at(section).at("autogain"), settings, "maximum-history", "maximum-history"); + + update_key(json.at(section).at("autogain"), settings, "reference", "reference"); +} diff --git a/src/autogain_ui.cpp b/src/autogain_ui.cpp new file mode 100644 index 0000000..1503996 --- /dev/null +++ b/src/autogain_ui.cpp @@ -0,0 +1,252 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "autogain_ui.hpp" + +namespace ui::autogain_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr autogain; + + std::vector connections; + + std::vector gconnections; +}; + +struct _AutogainBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkSpinButton *target, *maximum_history; + + GtkLevelBar *m_level, *s_level, *i_level, *r_level, *g_level, *l_level, *lra_level; + + GtkLabel *m_label, *s_label, *i_label, *r_label, *g_label, *l_label, *lra_label; + + GtkButton* reset_history; + + GtkComboBoxText* reference; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(AutogainBox, autogain_box, GTK_TYPE_BOX) + +void on_reset(AutogainBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void on_reset_history(AutogainBox* self, GtkButton* btn) { + // it is ugly but will ensure that third party tools are able to reset this plugin history + + g_settings_set_boolean(self->settings, "reset-history", !g_settings_get_boolean(self->settings, "reset-history")); +} + +void setup(AutogainBox* self, std::shared_ptr autogain, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->autogain = autogain; + + self->settings = g_settings_new_with_path(tags::schema::autogain::id, schema_path.c_str()); + + autogain->set_post_messages(true); + + self->data->connections.push_back(autogain->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(autogain->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(autogain->results.connect( + [=](const double& loudness, const double& gain, const double& momentary, const double& shortterm, + const double& integrated, const double& relative, const double& range) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->l_level) || !GTK_IS_LABEL(self->l_label) || !GTK_IS_LEVEL_BAR(self->g_level) || + !GTK_IS_LABEL(self->g_label) || !GTK_IS_LEVEL_BAR(self->m_level) || !GTK_IS_LABEL(self->m_label) || + !GTK_IS_LEVEL_BAR(self->s_level) || !GTK_IS_LABEL(self->s_label) || !GTK_IS_LEVEL_BAR(self->i_level) || + !GTK_IS_LABEL(self->i_label) || !GTK_IS_LEVEL_BAR(self->r_level) || !GTK_IS_LABEL(self->r_label) || + !GTK_IS_LEVEL_BAR(self->lra_level) || !GTK_IS_LABEL(self->lra_label)) { + return; + } + + gtk_level_bar_set_value(self->l_level, util::db_to_linear(loudness)); + gtk_label_set_text(self->l_label, fmt::format("{0:.0f}", loudness).c_str()); + + gtk_level_bar_set_value(self->g_level, gain); + gtk_label_set_text(self->g_label, + fmt::format(ui::get_user_locale(), "{0:.2Lf}", util::linear_to_db(gain)).c_str()); + + gtk_level_bar_set_value(self->m_level, util::db_to_linear(momentary)); + gtk_label_set_text(self->m_label, fmt::format("{0:.0f}", momentary).c_str()); + + gtk_level_bar_set_value(self->s_level, util::db_to_linear(shortterm)); + gtk_label_set_text(self->s_label, fmt::format("{0:.0f}", shortterm).c_str()); + + gtk_level_bar_set_value(self->i_level, util::db_to_linear(integrated)); + gtk_label_set_text(self->i_label, fmt::format("{0:.0f}", integrated).c_str()); + + gtk_level_bar_set_value(self->r_level, util::db_to_linear(relative)); + gtk_label_set_text(self->r_label, fmt::format("{0:.0f}", relative).c_str()); + + gtk_level_bar_set_value(self->lra_level, util::db_to_linear(range)); + gtk_label_set_text(self->lra_label, fmt::format("{0:.0f}", range).c_str()); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + gsettings_bind_widgets<"target", "maximum-history", "reference">(self->settings, self->target, self->maximum_history, + self->reference); +} + +void dispose(GObject* object) { + auto* self = EE_AUTOGAIN_BOX(object); + + self->data->autogain->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(autogain_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_AUTOGAIN_BOX(object); + + delete self->data; + + util::debug("finalize"); + + G_OBJECT_CLASS(autogain_box_parent_class)->finalize(object); +} + +void autogain_box_class_init(AutogainBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::autogain_ui); + + gtk_widget_class_bind_template_child(widget_class, AutogainBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, AutogainBox, target); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, maximum_history); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, reference); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, reset_history); + + gtk_widget_class_bind_template_child(widget_class, AutogainBox, m_level); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, s_level); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, i_level); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, r_level); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, g_level); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, l_level); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, lra_level); + + gtk_widget_class_bind_template_child(widget_class, AutogainBox, m_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, s_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, i_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, r_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, g_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, l_label); + gtk_widget_class_bind_template_child(widget_class, AutogainBox, lra_label); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + + gtk_widget_class_bind_template_callback(widget_class, on_reset_history); +} + +void autogain_box_init(AutogainBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->target); + prepare_spinbuttons<"s">(self->maximum_history); +} + +auto create() -> AutogainBox* { + return static_cast(g_object_new(EE_TYPE_AUTOGAIN_BOX, nullptr)); +} + +} // namespace ui::autogain_box diff --git a/src/bass_enhancer.cpp b/src/bass_enhancer.cpp new file mode 100644 index 0000000..a874c96 --- /dev/null +++ b/src/bass_enhancer.cpp @@ -0,0 +1,116 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "bass_enhancer.hpp" + +BassEnhancer::BassEnhancer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::bass_enhancer, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://calf.sourceforge.net/plugins/BassEnhancer")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://calf.sourceforge.net/plugins/BassEnhancer is not installed"); + } + + lv2_wrapper->bind_key_double_db<"amount", "amount">(settings); + + lv2_wrapper->bind_key_double<"drive", "harmonics">(settings); + + lv2_wrapper->bind_key_double<"freq", "scope">(settings); + + lv2_wrapper->bind_key_double<"floor", "floor">(settings); + + lv2_wrapper->bind_key_double<"blend", "blend">(settings); + + lv2_wrapper->bind_key_bool<"floor_active", "floor-active">(settings); + + lv2_wrapper->bind_key_bool<"listen", "listen">(settings); + + setup_input_output_gain(); +} + +BassEnhancer::~BassEnhancer() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void BassEnhancer::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void BassEnhancer::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + // harmonics needed as double for levelbar widget ui, so we convert it here + + harmonics_port_value = static_cast(lv2_wrapper->get_control_port_value("meter_drive")); + + if (!post_messages) { + return; + } + + harmonics.emit(harmonics_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +auto BassEnhancer::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/bass_enhancer_preset.cpp b/src/bass_enhancer_preset.cpp new file mode 100644 index 0000000..1ebad2e --- /dev/null +++ b/src/bass_enhancer_preset.cpp @@ -0,0 +1,66 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "bass_enhancer_preset.hpp" + +BassEnhancerPreset::BassEnhancerPreset() { + input_settings = g_settings_new_with_path(tags::schema::bass_enhancer::id, tags::schema::bass_enhancer::input_path); + + output_settings = g_settings_new_with_path(tags::schema::bass_enhancer::id, tags::schema::bass_enhancer::output_path); +} + +void BassEnhancerPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["bass_enhancer"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["bass_enhancer"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["bass_enhancer"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["bass_enhancer"]["amount"] = g_settings_get_double(settings, "amount"); + + json[section]["bass_enhancer"]["harmonics"] = g_settings_get_double(settings, "harmonics"); + + json[section]["bass_enhancer"]["scope"] = g_settings_get_double(settings, "scope"); + + json[section]["bass_enhancer"]["floor"] = g_settings_get_double(settings, "floor"); + + json[section]["bass_enhancer"]["blend"] = g_settings_get_double(settings, "blend"); + + json[section]["bass_enhancer"]["floor-active"] = g_settings_get_boolean(settings, "floor-active") != 0; +} + +void BassEnhancerPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("bass_enhancer"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("bass_enhancer"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("bass_enhancer"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("bass_enhancer"), settings, "amount", "amount"); + + update_key(json.at(section).at("bass_enhancer"), settings, "harmonics", "harmonics"); + + update_key(json.at(section).at("bass_enhancer"), settings, "scope", "scope"); + + update_key(json.at(section).at("bass_enhancer"), settings, "floor", "floor"); + + update_key(json.at(section).at("bass_enhancer"), settings, "blend", "blend"); + + update_key(json.at(section).at("bass_enhancer"), settings, "floor-active", "floor-active"); +} diff --git a/src/bass_enhancer_ui.cpp b/src/bass_enhancer_ui.cpp new file mode 100644 index 0000000..aa04981 --- /dev/null +++ b/src/bass_enhancer_ui.cpp @@ -0,0 +1,212 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "bass_enhancer_ui.hpp" + +namespace ui::bass_enhancer_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr bass_enhancer; + + std::vector connections; + + std::vector gconnections; +}; + +struct _BassEnhancerBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkLevelBar* harmonics_levelbar; + + GtkLabel* harmonics_levelbar_label; + + GtkSpinButton *floor, *amount, *harmonics, *scope; + + GtkScale* blend; + + GtkToggleButton *floor_active, *listen; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(BassEnhancerBox, bass_enhancer_box, GTK_TYPE_BOX) + +void on_reset(BassEnhancerBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(BassEnhancerBox* self, std::shared_ptr bass_enhancer, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->bass_enhancer = bass_enhancer; + + self->settings = g_settings_new_with_path(tags::schema::bass_enhancer::id, schema_path.c_str()); + + bass_enhancer->set_post_messages(true); + + self->data->connections.push_back(bass_enhancer->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(bass_enhancer->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(bass_enhancer->harmonics.connect([=](const double value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->harmonics_levelbar) || !GTK_IS_LABEL(self->harmonics_levelbar_label)) { + return; + } + + gtk_level_bar_set_value(self->harmonics_levelbar, value); + gtk_label_set_text(self->harmonics_levelbar_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + gsettings_bind_widgets<"amount", "harmonics", "scope", "floor", "blend", "listen", "floor-active">( + self->settings, self->amount, self->harmonics, self->scope, self->floor, self->blend, self->listen, + self->floor_active); +} + +void dispose(GObject* object) { + auto* self = EE_BASS_ENHANCER_BOX(object); + + self->data->bass_enhancer->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(bass_enhancer_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_BASS_ENHANCER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(bass_enhancer_box_parent_class)->finalize(object); +} + +void bass_enhancer_box_class_init(BassEnhancerBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::bass_enhancer_ui); + + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, harmonics_levelbar_label); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, harmonics_levelbar); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, floor); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, amount); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, harmonics); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, scope); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, blend); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, floor_active); + gtk_widget_class_bind_template_child(widget_class, BassEnhancerBox, listen); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void bass_enhancer_box_init(BassEnhancerBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_spinbuttons<"dB">(self->amount); + prepare_spinbuttons<"Hz">(self->scope, self->floor); + prepare_spinbuttons<"">(self->harmonics); + + prepare_scales<"">(self->blend); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> BassEnhancerBox* { + return static_cast(g_object_new(EE_TYPE_BASS_ENHANCER_BOX, nullptr)); +} + +} // namespace ui::bass_enhancer_box diff --git a/src/bass_loudness.cpp b/src/bass_loudness.cpp new file mode 100644 index 0000000..86563fe --- /dev/null +++ b/src/bass_loudness.cpp @@ -0,0 +1,98 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "bass_loudness.hpp" + +BassLoudness::BassLoudness(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::bass_loudness, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://drobilla.net/plugins/mda/Loudness")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://drobilla.net/plugins/mda/Loudness is not installed"); + } + + lv2_wrapper->bind_key_double_db<"loudness", "loudness">(settings); + + lv2_wrapper->bind_key_double_db<"output", "output">(settings); + + lv2_wrapper->bind_key_double_db<"link", "link">(settings); + + setup_input_output_gain(); +} + +BassLoudness::~BassLoudness() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void BassLoudness::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void BassLoudness::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto BassLoudness::get_latency_seconds() -> float { + return 0.0F; +} diff --git a/src/bass_loudness_preset.cpp b/src/bass_loudness_preset.cpp new file mode 100644 index 0000000..b0c7db8 --- /dev/null +++ b/src/bass_loudness_preset.cpp @@ -0,0 +1,54 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "bass_loudness_preset.hpp" + +BassLoudnessPreset::BassLoudnessPreset() { + input_settings = g_settings_new_with_path(tags::schema::bass_loudness::id, tags::schema::bass_loudness::input_path); + + output_settings = g_settings_new_with_path(tags::schema::bass_loudness::id, tags::schema::bass_loudness::output_path); +} + +void BassLoudnessPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["bass_loudness"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["bass_loudness"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["bass_loudness"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["bass_loudness"]["loudness"] = g_settings_get_double(settings, "loudness"); + + json[section]["bass_loudness"]["output"] = g_settings_get_double(settings, "output"); + + json[section]["bass_loudness"]["link"] = g_settings_get_double(settings, "link"); +} + +void BassLoudnessPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("bass_loudness"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("bass_loudness"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("bass_loudness"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("bass_loudness"), settings, "loudness", "loudness"); + + update_key(json.at(section).at("bass_loudness"), settings, "output", "output"); + + update_key(json.at(section).at("bass_loudness"), settings, "link", "link"); +} diff --git a/src/bass_loudness_ui.cpp b/src/bass_loudness_ui.cpp new file mode 100644 index 0000000..53ec34f --- /dev/null +++ b/src/bass_loudness_ui.cpp @@ -0,0 +1,177 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "bass_loudness_ui.hpp" + +namespace ui::bass_loudness_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr bass_loudness; + + std::vector connections; + + std::vector gconnections; +}; + +struct _BassLoudnessBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkSpinButton *loudness, *output, *link; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(BassLoudnessBox, bass_loudness_box, GTK_TYPE_BOX) + +void on_reset(BassLoudnessBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(BassLoudnessBox* self, std::shared_ptr bass_loudness, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->bass_loudness = bass_loudness; + + self->settings = g_settings_new_with_path(tags::schema::bass_loudness::id, schema_path.c_str()); + + bass_loudness->set_post_messages(true); + + self->data->connections.push_back(bass_loudness->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(bass_loudness->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + gsettings_bind_widgets<"loudness", "output", "link">(self->settings, self->loudness, self->output, self->link); +} + +void dispose(GObject* object) { + auto* self = EE_BASS_LOUDNESS_BOX(object); + + self->data->bass_loudness->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(bass_loudness_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_BASS_LOUDNESS_BOX(object); + + delete self->data; + + util::debug("finalize"); + + G_OBJECT_CLASS(bass_loudness_box_parent_class)->finalize(object); +} + +void bass_loudness_box_class_init(BassLoudnessBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::bass_loudness_ui); + + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, loudness); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, output); + gtk_widget_class_bind_template_child(widget_class, BassLoudnessBox, link); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void bass_loudness_box_init(BassLoudnessBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_spinbuttons<"dB">(self->loudness, self->output, self->link); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> BassLoudnessBox* { + return static_cast(g_object_new(EE_TYPE_BASS_LOUDNESS_BOX, nullptr)); +} + +} // namespace ui::bass_loudness_box diff --git a/src/blocklist_menu.cpp b/src/blocklist_menu.cpp new file mode 100644 index 0000000..92629d6 --- /dev/null +++ b/src/blocklist_menu.cpp @@ -0,0 +1,242 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "blocklist_menu.hpp" + +namespace ui::blocklist_menu { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + app::Application* application; + + std::vector connections; + + std::vector gconnections; +}; + +struct _BlocklistMenu { + GtkPopover parent_instance; + + GtkScrolledWindow* scrolled_window; + + GtkListView* listview; + + GtkText* app_name; + + GtkCheckButton* show_blocklisted_apps; + + GtkStringList* string_list; + + GSettings *settings, *app_settings; + + Data* data; +}; + +G_DEFINE_TYPE(BlocklistMenu, blocklist_menu, GTK_TYPE_POPOVER) + +void on_add_to_blocklist(BlocklistMenu* self, GtkButton* button) { + auto status = util::add_new_blocklist_entry(self->settings, gtk_editable_get_text(GTK_EDITABLE(self->app_name))); + + if (status) { + gtk_editable_set_text(GTK_EDITABLE(self->app_name), ""); + } +} + +void setup_listview(BlocklistMenu* self) { + auto* factory = gtk_signal_list_item_factory_new(); + + // setting the factory callbacks + + g_signal_connect( + factory, "setup", G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, BlocklistMenu* self) { + auto* box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); + auto* label = gtk_label_new(nullptr); + auto* button = gtk_button_new_from_icon_name("user-trash-symbolic"); + + gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); + gtk_widget_set_hexpand(GTK_WIDGET(label), 1); + gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); + gtk_label_set_max_width_chars(GTK_LABEL(label), 100); + + gtk_box_append(GTK_BOX(box), GTK_WIDGET(label)); + gtk_box_append(GTK_BOX(box), GTK_WIDGET(button)); + + gtk_list_item_set_activatable(item, 0); + gtk_list_item_set_child(item, GTK_WIDGET(box)); + + g_object_set_data(G_OBJECT(item), "name", label); + g_object_set_data(G_OBJECT(item), "remove", button); + + g_signal_connect( + button, "clicked", G_CALLBACK(+[](GtkButton* btn, BlocklistMenu* self) { + if (auto* string_object = GTK_STRING_OBJECT(g_object_get_data(G_OBJECT(btn), "string-object")); + string_object != nullptr) { + auto* name = gtk_string_object_get_string(string_object); + + auto list = util::gchar_array_to_vector(g_settings_get_strv(self->settings, "blocklist")); + + list.erase( + std::remove_if(list.begin(), list.end(), [=](const auto& app_name) { return app_name == name; }), + list.end()); + + g_settings_set_strv(self->settings, "blocklist", util::make_gchar_pointer_vector(list).data()); + } + }), + self); + }), + self); + + g_signal_connect(factory, "bind", + G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, BlocklistMenu* self) { + auto* label = static_cast(g_object_get_data(G_OBJECT(item), "name")); + auto* btn_remove = static_cast(g_object_get_data(G_OBJECT(item), "remove")); + + auto* child_item = gtk_list_item_get_item(item); + auto* string_object = GTK_STRING_OBJECT(child_item); + + g_object_set_data(G_OBJECT(btn_remove), "string-object", string_object); + + auto* name = gtk_string_object_get_string(GTK_STRING_OBJECT(child_item)); + + gtk_label_set_text(label, name); + }), + self); + + gtk_list_view_set_factory(self->listview, factory); + + g_object_unref(factory); + + for (auto& name : util::gchar_array_to_vector(g_settings_get_strv(self->settings, "blocklist"))) { + gtk_string_list_append(self->string_list, name.c_str()); + } + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::blocklist", G_CALLBACK(+[](GSettings* settings, char* key, BlocklistMenu* self) { + gtk_string_list_splice(self->string_list, 0, g_list_model_get_n_items(G_LIST_MODEL(self->string_list)), + g_settings_get_strv(settings, key)); + }), + self)); +} + +void setup(BlocklistMenu* self, app::Application* application, PipelineType pipeline_type) { + self->data->application = application; + + switch (pipeline_type) { + case PipelineType::input: { + self->settings = g_settings_new(tags::schema::id_input); + + break; + } + case PipelineType::output: { + self->settings = g_settings_new(tags::schema::id_output); + + break; + } + } + + g_settings_bind(self->settings, "show-blocklisted-apps", self->show_blocklisted_apps, "active", + G_SETTINGS_BIND_DEFAULT); + + setup_listview(self); +} + +void show(GtkWidget* widget) { + auto* self = EE_BLOCKLIST_MENU(widget); + + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->data->application)); + + auto active_window_height = gtk_widget_get_allocated_height(GTK_WIDGET(active_window)); + + const int menu_height = static_cast(0.5F * static_cast(active_window_height)); + + gtk_scrolled_window_set_max_content_height(self->scrolled_window, menu_height); + + GTK_WIDGET_CLASS(blocklist_menu_parent_class)->show(widget); +} + +void dispose(GObject* object) { + auto* self = EE_BLOCKLIST_MENU(object); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + g_object_unref(self->app_settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(blocklist_menu_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_BLOCKLIST_MENU(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(blocklist_menu_parent_class)->finalize(object); +} + +void blocklist_menu_class_init(BlocklistMenuClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + widget_class->show = show; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::blocklist_menu_ui); + + gtk_widget_class_bind_template_child(widget_class, BlocklistMenu, string_list); + + gtk_widget_class_bind_template_child(widget_class, BlocklistMenu, scrolled_window); + gtk_widget_class_bind_template_child(widget_class, BlocklistMenu, listview); + gtk_widget_class_bind_template_child(widget_class, BlocklistMenu, app_name); + gtk_widget_class_bind_template_child(widget_class, BlocklistMenu, show_blocklisted_apps); + + gtk_widget_class_bind_template_callback(widget_class, on_add_to_blocklist); +} + +void blocklist_menu_init(BlocklistMenu* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->app_settings = g_settings_new(tags::app::id); + + g_settings_bind(self->app_settings, "autohide-popovers", self, "autohide", G_SETTINGS_BIND_DEFAULT); +} + +auto create() -> BlocklistMenu* { + return static_cast(g_object_new(EE_TYPE_BLOCKLIST_MENU, nullptr)); +} + +} // namespace ui::blocklist_menu diff --git a/src/chart.cpp b/src/chart.cpp new file mode 100644 index 0000000..12e7f36 --- /dev/null +++ b/src/chart.cpp @@ -0,0 +1,597 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "chart.hpp" + +namespace ui::chart { + +using namespace std::string_literals; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + bool draw_bar_border, fill_bars, is_visible, rounded_corners; + + int x_axis_height, n_x_decimals, n_y_decimals; + + float mouse_y, mouse_x, margin, line_width; + + float x_min, x_max, y_min, y_max; + + float x_min_log, x_max_log; + + ChartType chart_type; + + ChartScale chart_scale; + + GdkRGBA background_color, color, color_axis_labels, gradient_color; + + std::string x_unit, y_unit; + + std::vector y_axis, x_axis, x_axis_log, objects_x; +}; + +struct _Chart { + GtkBox parent_instance; + + GtkEventController* controller_motion; + + Data* data; +}; + +G_DEFINE_TYPE(Chart, chart, GTK_TYPE_WIDGET) + +void set_chart_type(Chart* self, const ChartType& value) { + self->data->chart_type = value; +} + +void set_chart_scale(Chart* self, const ChartScale& value) { + self->data->chart_scale = value; +} + +void set_background_color(Chart* self, GdkRGBA color) { + self->data->background_color = color; +} + +void set_color(Chart* self, GdkRGBA color) { + self->data->color = color; +} + +void set_axis_labels_color(Chart* self, GdkRGBA color) { + self->data->color_axis_labels = color; +} + +void set_line_width(Chart* self, const double& value) { + self->data->line_width = value; +} + +void set_draw_bar_border(Chart* self, const bool& v) { + self->data->draw_bar_border = v; +} + +void set_rounded_corners(Chart* self, const bool& v) { + self->data->rounded_corners = v; +} + +void set_fill_bars(Chart* self, const bool& v) { + self->data->fill_bars = v; +} + +void set_n_x_decimals(Chart* self, const int& v) { + self->data->n_x_decimals = v; +} + +void set_n_y_decimals(Chart* self, const int& v) { + self->data->n_y_decimals = v; +} + +void set_x_unit(Chart* self, const std::string& value) { + self->data->x_unit = value; +} + +void set_y_unit(Chart* self, const std::string& value) { + self->data->y_unit = value; +} + +void set_margin(Chart* self, const double& v) { + self->data->margin = v; +} + +auto get_is_visible(Chart* self) -> bool { + return self->data->is_visible; +} + +void set_x_data(Chart* self, const std::vector& x) { + if (self == nullptr || x.empty()) { + return; + } + + self->data->x_axis = x; + + self->data->x_min = std::ranges::min(x); + self->data->x_max = std::ranges::max(x); + + self->data->objects_x.resize(x.size()); + + self->data->x_min_log = std::log10(self->data->x_min); + self->data->x_max_log = std::log10(self->data->x_max); + + self->data->x_axis_log.resize(x.size()); + + for (size_t n = 0; n < self->data->x_axis_log.size(); n++) { + self->data->x_axis_log[n] = std::log10(self->data->x_axis[n]); + } + + // making each x value a number between 0 and 1 + + std::ranges::for_each(self->data->x_axis, + [&](auto& v) { v = (v - self->data->x_min) / (self->data->x_max - self->data->x_min); }); + + std::ranges::for_each(self->data->x_axis_log, [&](auto& v) { + v = (v - self->data->x_min_log) / (self->data->x_max_log - self->data->x_min_log); + }); +} + +void set_y_data(Chart* self, const std::vector& y) { + if (self == nullptr || y.empty()) { + return; + } + + self->data->y_axis = y; + + self->data->y_min = std::ranges::min(y); + self->data->y_max = std::ranges::max(y); + + if (std::fabs(self->data->y_max - self->data->y_min) < 0.00001F) { + std::ranges::fill(self->data->y_axis, 0.0F); + } else { + // making each y value a number between 0 and 1 + + std::ranges::for_each(self->data->y_axis, + [&](auto& v) { v = (v - self->data->y_min) / (self->data->y_max - self->data->y_min); }); + } + + gtk_widget_queue_draw(GTK_WIDGET(self)); +} + +void on_pointer_motion(GtkEventControllerMotion* controller, double x, double y, Chart* self) { + const int width = gtk_widget_get_allocated_width(GTK_WIDGET(self)); + const int height = gtk_widget_get_allocated_height(GTK_WIDGET(self)); + + const auto usable_height = height - self->data->margin * height - self->data->x_axis_height; + + if (y < height - self->data->x_axis_height && y > self->data->margin * height && x > self->data->margin * width && + x < width - self->data->margin * width) { + // At least for now the y axis is always linear + + self->data->mouse_y = + (usable_height - y) / usable_height * (self->data->y_max - self->data->y_min) + self->data->y_min; + + switch (self->data->chart_scale) { + case ChartScale::logarithmic: { + const double& mouse_x_log = (x - self->data->margin * width) / + static_cast(width - 2 * self->data->margin * width) * + (self->data->x_max_log - self->data->x_min_log) + + self->data->x_min_log; + + self->data->mouse_x = std::pow(10.0, mouse_x_log); // exp10 does not exist on FreeBSD + + break; + } + case ChartScale::linear: { + self->data->mouse_x = (x - self->data->margin * width) / + static_cast(width - 2 * self->data->margin * width) * + (self->data->x_max - self->data->x_min) + + self->data->x_min; + + break; + } + } + + gtk_widget_queue_draw(GTK_WIDGET(self)); + } +} + +auto draw_unit(Chart* self, GtkSnapshot* snapshot, const int& width, const int& height, const std::string& unit) { + auto* layout = gtk_widget_create_pango_layout(GTK_WIDGET(self), unit.c_str()); + + auto* description = pango_font_description_from_string("monospace bold"); + + pango_layout_set_font_description(layout, description); + pango_font_description_free(description); + + int text_width = 0; + int text_height = 0; + + pango_layout_get_pixel_size(layout, &text_width, &text_height); + + gtk_snapshot_save(snapshot); + + auto point = GRAPHENE_POINT_INIT(static_cast(width - text_width), static_cast(height - text_height)); + + gtk_snapshot_translate(snapshot, &point); + + gtk_snapshot_append_layout(snapshot, layout, &self->data->color_axis_labels); + + gtk_snapshot_restore(snapshot); + + g_object_unref(layout); +} + +auto draw_x_labels(Chart* self, GtkSnapshot* snapshot, const int& width, const int& height) -> int { + float labels_offset = 0.1 * width; + + int n_x_labels = static_cast(std::ceil((width - 2 * self->data->margin * width) / labels_offset)) + 1; + + if (n_x_labels < 2) { + return 0; + } + + /* + Correcting the offset based on the final n_x_labels value + */ + + labels_offset = (width - 2 * self->data->margin * width) / static_cast(n_x_labels - 1); + + std::vector labels; + + switch (self->data->chart_scale) { + case ChartScale::logarithmic: { + labels = util::logspace(self->data->x_min, self->data->x_max, n_x_labels); + + break; + } + case ChartScale::linear: { + labels = util::linspace(self->data->x_min, self->data->x_max, n_x_labels); + + break; + } + } + + draw_unit(self, snapshot, width, height, " "s + self->data->x_unit + " "s); + + /* + There is no space left in the window to show the last label. So we skip it. + All labels are enclosed by whitespaces to not stick the first and the final + at window borders. + */ + + for (size_t n = 0U; n < labels.size() - 1; n++) { + const auto msg = fmt::format(ui::get_user_locale(), " {0:.{1}Lf} ", labels[n], self->data->n_x_decimals); + + auto* layout = gtk_widget_create_pango_layout(GTK_WIDGET(self), msg.c_str()); + + auto* description = pango_font_description_from_string("monospace bold"); + + pango_layout_set_font_description(layout, description); + pango_font_description_free(description); + + int text_width = 0; + int text_height = 0; + + pango_layout_get_pixel_size(layout, &text_width, &text_height); + + gtk_snapshot_save(snapshot); + + auto point = + GRAPHENE_POINT_INIT(self->data->margin * width + n * labels_offset, static_cast(height - text_height)); + + gtk_snapshot_translate(snapshot, &point); + + gtk_snapshot_append_layout(snapshot, layout, &self->data->color_axis_labels); + + gtk_snapshot_restore(snapshot); + + g_object_unref(layout); + + if (n == labels.size() - 2U) { + return text_height; + } + } + + return 0; +} + +void snapshot(GtkWidget* widget, GtkSnapshot* snapshot) { + auto* self = EE_CHART(widget); + + switch (self->data->chart_scale) { + case ChartScale::logarithmic: { + if (self->data->y_axis.size() != self->data->x_axis_log.size()) { + return; + } + + break; + } + case ChartScale::linear: { + if (self->data->y_axis.size() != self->data->x_axis.size()) { + return; + } + + break; + } + } + + int width = gtk_widget_get_width(widget); + int height = gtk_widget_get_height(widget); + + auto widget_rectangle = GRAPHENE_RECT_INIT(0.0F, 0.0F, static_cast(width), static_cast(height)); + + gtk_snapshot_append_color(snapshot, &self->data->background_color, &widget_rectangle); + + if (const auto n_points = self->data->y_axis.size(); n_points > 0) { + double usable_width = width - 2 * (self->data->line_width + self->data->margin * width); + + int usable_height = static_cast(height - self->data->margin * height) - self->data->x_axis_height; + + switch (self->data->chart_scale) { + case ChartScale::logarithmic: { + for (size_t n = 0; n < n_points; n++) { + self->data->objects_x[n] = + usable_width * self->data->x_axis_log[n] + self->data->line_width + self->data->margin * width; + } + + break; + } + case ChartScale::linear: { + for (size_t n = 0; n < n_points; n++) { + self->data->objects_x[n] = + usable_width * self->data->x_axis[n] + self->data->line_width + self->data->margin * width; + } + + break; + } + } + + self->data->x_axis_height = draw_x_labels(self, snapshot, width, height); + + auto border_color = std::to_array({self->data->color, self->data->color, self->data->color, self->data->color}); + + auto border_width = + std::to_array({static_cast(self->data->line_width), static_cast(self->data->line_width), + static_cast(self->data->line_width), static_cast(self->data->line_width)}); + + float radius = (self->data->rounded_corners == true) ? 5.0F : 0.0F; + + switch (self->data->chart_type) { + case ChartType::bar: { + float dw = static_cast(width) / static_cast(n_points); + + for (uint n = 0U; n < n_points; n++) { + float bar_height = static_cast(usable_height) * self->data->y_axis[n]; + + float rect_x = self->data->objects_x[n]; + float rect_y = self->data->margin * height + static_cast(usable_height) - bar_height; + float rect_height = bar_height; + float rect_width = dw; + + if (self->data->draw_bar_border) { + rect_width -= self->data->line_width; + } + + auto bar_rectangle = GRAPHENE_RECT_INIT(rect_x, rect_y, rect_width, rect_height); + + GskRoundedRect outline; + + gsk_rounded_rect_init_from_rect(&outline, &bar_rectangle, radius); + + if (self->data->fill_bars) { + gtk_snapshot_push_rounded_clip(snapshot, &outline); + + gtk_snapshot_append_color(snapshot, &self->data->color, &outline.bounds); + + gtk_snapshot_pop(snapshot); + } else { + gtk_snapshot_append_border(snapshot, &outline, border_width.data(), border_color.data()); + } + } + + break; + } + case ChartType::dots: { + float dw = static_cast(width) / static_cast(n_points); + + usable_height -= radius; // this avoids the dots being drawn over the axis label + + for (uint n = 0U; n < n_points; n++) { + float dot_y = static_cast(usable_height) * self->data->y_axis[n]; + + float rect_x = self->data->objects_x[n]; + float rect_y = self->data->margin * height + radius + static_cast(usable_height) - dot_y; + float rect_width = dw; + + if (self->data->draw_bar_border) { + rect_width -= self->data->line_width; + } + + auto rectangle = GRAPHENE_RECT_INIT(rect_x - radius, rect_y - radius, rect_width, rect_width); + + GskRoundedRect outline; + + gsk_rounded_rect_init_from_rect(&outline, &rectangle, radius); + + if (self->data->fill_bars) { + gtk_snapshot_push_rounded_clip(snapshot, &outline); + + gtk_snapshot_append_color(snapshot, &self->data->color, &outline.bounds); + + gtk_snapshot_pop(snapshot); + } else { + gtk_snapshot_append_border(snapshot, &outline, border_width.data(), border_color.data()); + } + } + + break; + } + case ChartType::line: { + auto* ctx = gtk_snapshot_append_cairo(snapshot, &widget_rectangle); + + cairo_set_source_rgba(ctx, self->data->color.red, self->data->color.green, self->data->color.blue, + self->data->color.alpha); + + if (self->data->fill_bars) { + cairo_move_to(ctx, self->data->margin * width, + self->data->margin * height + static_cast(usable_height)); + } else { + const auto point_height = self->data->y_axis.front() * static_cast(usable_height); + + cairo_move_to(ctx, self->data->objects_x.front(), + self->data->margin * height + static_cast(usable_height) - point_height); + } + + for (uint n = 0U; n < n_points - 1U; n++) { + const auto next_point_height = self->data->y_axis[n + 1] * static_cast(usable_height); + + cairo_line_to(ctx, self->data->objects_x[n + 1], + self->data->margin * height + static_cast(usable_height) - next_point_height); + } + + if (self->data->fill_bars) { + cairo_line_to(ctx, self->data->objects_x.back(), + self->data->margin * height + static_cast(usable_height)); + + cairo_move_to(ctx, self->data->objects_x.back(), + self->data->margin * height + static_cast(usable_height)); + + cairo_close_path(ctx); + } + + cairo_set_line_width(ctx, self->data->line_width); + + if (self->data->fill_bars) { + cairo_fill(ctx); + } else { + cairo_stroke(ctx); + } + + cairo_destroy(ctx); + + break; + } + } + + if (gtk_event_controller_motion_contains_pointer(GTK_EVENT_CONTROLLER_MOTION(self->controller_motion)) != 0) { + // We leave a withespace at the end to not stick the string at the window border. + const auto msg = fmt::format(ui::get_user_locale(), "x = {0:.{1}Lf} {2} y = {3:.{4}Lf} {5} ", self->data->mouse_x, + self->data->n_x_decimals, self->data->x_unit, self->data->mouse_y, + self->data->n_y_decimals, self->data->y_unit); + + auto* layout = gtk_widget_create_pango_layout(GTK_WIDGET(self), msg.c_str()); + + auto* description = pango_font_description_from_string("monospace bold"); + + pango_layout_set_font_description(layout, description); + pango_font_description_free(description); + + int text_width = 0; + int text_height = 0; + + pango_layout_get_pixel_size(layout, &text_width, &text_height); + + gtk_snapshot_save(snapshot); + + auto point = GRAPHENE_POINT_INIT(static_cast(width) - static_cast(text_width), 0.0F); + + gtk_snapshot_translate(snapshot, &point); + + gtk_snapshot_append_layout(snapshot, layout, &self->data->color); + + gtk_snapshot_restore(snapshot); + + g_object_unref(layout); + } + } +} + +void unroot(GtkWidget* widget) { + auto* self = EE_CHART(widget); + + self->data->is_visible = false; + + GTK_WIDGET_CLASS(chart_parent_class)->unmap(widget); +} + +void finalize(GObject* object) { + auto* self = EE_CHART(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(chart_parent_class)->finalize(object); +} + +void chart_class_init(ChartClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->finalize = finalize; + + widget_class->snapshot = snapshot; + widget_class->unroot = unroot; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::chart_ui); +} + +void chart_init(Chart* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->data->draw_bar_border = true; + self->data->fill_bars = true; + self->data->is_visible = true; + self->data->x_axis_height = 0; + self->data->n_x_decimals = 1; + self->data->n_y_decimals = 1; + self->data->line_width = 2.0F; + self->data->margin = 0.02; + + self->data->x_min = 0.0F; + self->data->y_min = 0.0F; + self->data->x_max = 1.0F; + self->data->y_max = 1.0F; + + self->data->background_color = GdkRGBA{0.0F, 0.0F, 0.0F, 1.0F}; + self->data->color = GdkRGBA{1.0F, 1.0F, 1.0F, 1.0F}; + self->data->color_axis_labels = GdkRGBA{1.0F, 1.0F, 1.0F, 1.0F}; + self->data->gradient_color = GdkRGBA{1.0F, 1.0F, 1.0F, 1.0F}; + + self->data->chart_type = ChartType::bar; + self->data->chart_scale = ChartScale::logarithmic; + + self->controller_motion = gtk_event_controller_motion_new(); + + g_signal_connect(self->controller_motion, "motion", G_CALLBACK(on_pointer_motion), self); + + g_signal_connect(GTK_WIDGET(self), "hide", + G_CALLBACK(+[](GtkWidget* widget, Chart* self) { self->data->is_visible = false; }), self); + + g_signal_connect(GTK_WIDGET(self), "show", + G_CALLBACK(+[](GtkWidget* widget, Chart* self) { self->data->is_visible = true; }), self); + + gtk_widget_add_controller(GTK_WIDGET(self), self->controller_motion); +} + +auto create() -> Chart* { + return static_cast(g_object_new(EE_TYPE_CHART, nullptr)); +} + +} // namespace ui::chart diff --git a/src/client_info_holder.cpp b/src/client_info_holder.cpp new file mode 100644 index 0000000..7dc9c89 --- /dev/null +++ b/src/client_info_holder.cpp @@ -0,0 +1,120 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "client_info_holder.hpp" + +namespace ui::holders { + +enum { PROP_0, PROP_ID, PROP_NAME, PROP_API, PROP_ACCESS }; + +G_DEFINE_TYPE(ClientInfoHolder, client_info_holder, G_TYPE_OBJECT); + +void client_info_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) { + auto* self = EE_CLIENT_INFO_HOLDER(object); + + switch (prop_id) { + case PROP_ID: + self->info->id = g_value_get_uint(value); + break; + case PROP_NAME: + self->info->name = g_value_get_string(value); + break; + case PROP_API: + self->info->api = g_value_get_string(value); + break; + case PROP_ACCESS: + self->info->access = g_value_get_string(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +void client_info_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) { + auto* self = EE_CLIENT_INFO_HOLDER(object); + + switch (prop_id) { + case PROP_ID: + g_value_set_uint(value, self->info->id); + break; + case PROP_NAME: + g_value_set_string(value, self->info->name.c_str()); + break; + case PROP_API: + g_value_set_string(value, self->info->api.c_str()); + break; + case PROP_ACCESS: + g_value_set_string(value, self->info->access.c_str()); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +void client_info_holder_finalize(GObject* object) { + auto* self = EE_CLIENT_INFO_HOLDER(object); + + self->info_updated.clear(); + + util::debug(util::to_string(self->info->id) + ", " + self->info->name + " finalized"); + + delete self->info; + + G_OBJECT_CLASS(client_info_holder_parent_class)->finalize(object); +} + +void client_info_holder_class_init(ClientInfoHolderClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + + object_class->finalize = client_info_holder_finalize; + object_class->set_property = client_info_set_property; + object_class->get_property = client_info_get_property; + + g_object_class_install_property( + object_class, PROP_ID, + g_param_spec_uint("id", "Id", "Id", G_MININT, G_MAXUINT, SPA_ID_INVALID, G_PARAM_READWRITE)); + + g_object_class_install_property(object_class, PROP_NAME, + g_param_spec_string("name", "Name", "Name", nullptr, G_PARAM_READWRITE)); + + g_object_class_install_property(object_class, PROP_API, + g_param_spec_string("api", "API", "API", nullptr, G_PARAM_READWRITE)); + + g_object_class_install_property(object_class, PROP_ACCESS, + g_param_spec_string("access", "Access", "Access", nullptr, G_PARAM_READWRITE)); +} + +void client_info_holder_init(ClientInfoHolder* self) { + self->info = new ClientInfo(); +} + +auto create(const ClientInfo& info) -> ClientInfoHolder* { + auto* holder = static_cast(g_object_new(EE_TYPE_CLIENT_INFO_HOLDER, nullptr)); + + holder->info->id = info.id; + holder->info->name = info.name; + holder->info->api = info.api; + holder->info->access = info.access; + + return holder; +} + +} // namespace ui::holders diff --git a/src/compressor.cpp b/src/compressor.cpp new file mode 100644 index 0000000..c830374 --- /dev/null +++ b/src/compressor.cpp @@ -0,0 +1,240 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "compressor.hpp" + +Compressor::Compressor(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::compressor, schema, schema_path, pipe_manager, true), + lv2_wrapper(std::make_unique("http://lsp-plug.in/plugins/lv2/sc_compressor_stereo")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://lsp-plug.in/plugins/lv2/sc_compressor_stereo is not installed"); + } + + gconnections.push_back(g_signal_connect(settings, "changed::sidechain-type", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::sidechain-input-device", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + + lv2_wrapper->bind_key_enum<"cm", "mode">(settings); + + lv2_wrapper->bind_key_enum<"sct", "sidechain-type">(settings); + + lv2_wrapper->bind_key_enum<"scm", "sidechain-mode">(settings); + + lv2_wrapper->bind_key_enum<"scs", "sidechain-source">(settings); + + lv2_wrapper->bind_key_enum<"shpm", "hpf-mode">(settings); + + lv2_wrapper->bind_key_enum<"slpm", "lpf-mode">(settings); + + lv2_wrapper->bind_key_bool<"scl", "sidechain-listen">(settings); + + lv2_wrapper->bind_key_double<"at", "attack">(settings); + + lv2_wrapper->bind_key_double<"rt", "release">(settings); + + lv2_wrapper->bind_key_double<"cr", "ratio">(settings); + + lv2_wrapper->bind_key_double<"scr", "sidechain-reactivity">(settings); + + lv2_wrapper->bind_key_double<"sla", "sidechain-lookahead">(settings); + + lv2_wrapper->bind_key_double<"shpf", "hpf-frequency">(settings); + + lv2_wrapper->bind_key_double<"slpf", "lpf-frequency">(settings); + + lv2_wrapper->bind_key_double_db<"rrl", "release-threshold">(settings); + + lv2_wrapper->bind_key_double_db<"bth", "boost-threshold">(settings); + + lv2_wrapper->bind_key_double_db<"bsa", "boost-amount">(settings); + + lv2_wrapper->bind_key_double_db<"al", "threshold">(settings); + + lv2_wrapper->bind_key_double_db<"kn", "knee">(settings); + + lv2_wrapper->bind_key_double_db<"mk", "makeup">(settings); + + lv2_wrapper->bind_key_double_db<"scp", "sidechain-preamp">(settings); + + setup_input_output_gain(); +} + +Compressor::~Compressor() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Compressor::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Compressor::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out, probe_left, probe_right); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("out_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + g_idle_add((GSourceFunc) + + [](gpointer user_data) { + auto* self = static_cast(user_data); + + if (!self->post_messages) { + return G_SOURCE_REMOVE; + } + + if (self->latency.empty()) { + return G_SOURCE_REMOVE; + } + + self->latency.emit(self->latency_port_value); + + return G_SOURCE_REMOVE; + }, + this); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + reduction_port_value = lv2_wrapper->get_control_port_value("rlm"); + sidechain_port_value = lv2_wrapper->get_control_port_value("slm"); + curve_port_value = lv2_wrapper->get_control_port_value("clm"); + envelope_port_value = lv2_wrapper->get_control_port_value("elm"); + + reduction.emit(reduction_port_value); + sidechain.emit(sidechain_port_value); + curve.emit(curve_port_value); + envelope.emit(envelope_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +void Compressor::update_sidechain_links(const std::string& key) { + if (util::gsettings_get_string(settings, "sidechain-type") == "External") { + const auto device_name = util::gsettings_get_string(settings, "sidechain-input-device"); + + NodeInfo input_device = pm->ee_source_node; + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == device_name) { + input_device = node; + + break; + } + } + + pm->destroy_links(list_proxies); + + list_proxies.clear(); + + for (const auto& link : pm->link_nodes(input_device.id, get_node_id(), true)) { + list_proxies.push_back(link); + } + } else { + pm->destroy_links(list_proxies); + + list_proxies.clear(); + } +} + +void Compressor::update_probe_links() { + update_sidechain_links(""); +} + +auto Compressor::get_latency_seconds() -> float { + return this->latency_port_value; +} diff --git a/src/compressor_preset.cpp b/src/compressor_preset.cpp new file mode 100644 index 0000000..e63cfec --- /dev/null +++ b/src/compressor_preset.cpp @@ -0,0 +1,122 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "compressor_preset.hpp" + +CompressorPreset::CompressorPreset() { + input_settings = g_settings_new_with_path(tags::schema::compressor::id, tags::schema::compressor::input_path); + + output_settings = g_settings_new_with_path(tags::schema::compressor::id, tags::schema::compressor::output_path); +} + +void CompressorPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["compressor"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["compressor"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["compressor"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["compressor"]["mode"] = util::gsettings_get_string(settings, "mode"); + + json[section]["compressor"]["attack"] = g_settings_get_double(settings, "attack"); + + json[section]["compressor"]["release"] = g_settings_get_double(settings, "release"); + + json[section]["compressor"]["release-threshold"] = g_settings_get_double(settings, "release-threshold"); + + json[section]["compressor"]["threshold"] = g_settings_get_double(settings, "threshold"); + + json[section]["compressor"]["ratio"] = g_settings_get_double(settings, "ratio"); + + json[section]["compressor"]["knee"] = g_settings_get_double(settings, "knee"); + + json[section]["compressor"]["makeup"] = g_settings_get_double(settings, "makeup"); + + json[section]["compressor"]["boost-threshold"] = g_settings_get_double(settings, "boost-threshold"); + + json[section]["compressor"]["boost-amount"] = g_settings_get_double(settings, "boost-amount"); + + json[section]["compressor"]["sidechain"]["type"] = util::gsettings_get_string(settings, "sidechain-type"); + + json[section]["compressor"]["sidechain"]["mode"] = util::gsettings_get_string(settings, "sidechain-mode"); + + json[section]["compressor"]["sidechain"]["source"] = util::gsettings_get_string(settings, "sidechain-source"); + + json[section]["compressor"]["sidechain"]["preamp"] = g_settings_get_double(settings, "sidechain-preamp"); + + json[section]["compressor"]["sidechain"]["reactivity"] = g_settings_get_double(settings, "sidechain-reactivity"); + + json[section]["compressor"]["sidechain"]["lookahead"] = g_settings_get_double(settings, "sidechain-lookahead"); + + json[section]["compressor"]["hpf-mode"] = util::gsettings_get_string(settings, "hpf-mode"); + + json[section]["compressor"]["hpf-frequency"] = g_settings_get_double(settings, "hpf-frequency"); + + json[section]["compressor"]["lpf-mode"] = util::gsettings_get_string(settings, "lpf-mode"); + + json[section]["compressor"]["lpf-frequency"] = g_settings_get_double(settings, "lpf-frequency"); +} + +void CompressorPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("compressor"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("compressor"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("compressor"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("compressor"), settings, "mode", "mode"); + + update_key(json.at(section).at("compressor"), settings, "attack", "attack"); + + update_key(json.at(section).at("compressor"), settings, "release", "release"); + + update_key(json.at(section).at("compressor"), settings, "release-threshold", "release-threshold"); + + update_key(json.at(section).at("compressor"), settings, "threshold", "threshold"); + + update_key(json.at(section).at("compressor"), settings, "ratio", "ratio"); + + update_key(json.at(section).at("compressor"), settings, "knee", "knee"); + + update_key(json.at(section).at("compressor"), settings, "makeup", "makeup"); + + update_key(json.at(section).at("compressor"), settings, "boost-threshold", "boost-threshold"); + + update_key(json.at(section).at("compressor"), settings, "boost-amount", "boost-amount"); + + update_key(json.at(section).at("compressor").at("sidechain"), settings, "sidechain-type", "type"); + + update_key(json.at(section).at("compressor").at("sidechain"), settings, "sidechain-mode", "mode"); + + update_key(json.at(section).at("compressor").at("sidechain"), settings, "sidechain-source", "source"); + + update_key(json.at(section).at("compressor").at("sidechain"), settings, "sidechain-preamp", "preamp"); + + update_key(json.at(section).at("compressor").at("sidechain"), settings, "sidechain-reactivity", "reactivity"); + + update_key(json.at(section).at("compressor").at("sidechain"), settings, "sidechain-lookahead", "lookahead"); + + update_key(json.at(section).at("compressor"), settings, "hpf-mode", "hpf-mode"); + + update_key(json.at(section).at("compressor"), settings, "hpf-frequency", "hpf-frequency"); + + update_key(json.at(section).at("compressor"), settings, "lpf-mode", "lpf-mode"); + + update_key(json.at(section).at("compressor"), settings, "lpf-frequency", "lpf-frequency"); +} diff --git a/src/compressor_ui.cpp b/src/compressor_ui.cpp new file mode 100644 index 0000000..8261dc4 --- /dev/null +++ b/src/compressor_ui.cpp @@ -0,0 +1,436 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "compressor_ui.hpp" + +namespace ui::compressor_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr compressor; + + std::vector connections; + + std::vector gconnections; +}; + +struct _CompressorBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkLabel *gain_label, *sidechain_label, *curve_label, *envelope_label; + + GtkSpinButton *attack, *release, *release_threshold, *threshold, *knee, *ratio, *makeup, *boost_threshold, + *boost_amount, *preamp, *reactivity, *lookahead, *hpf_freq, *lpf_freq; + + GtkComboBoxText *compression_mode, *sidechain_type, *sidechain_mode, *sidechain_source, *lpf_mode, *hpf_mode; + + GtkToggleButton* listen; + + GtkDropDown* dropdown_input_devices; + + GListStore* input_devices_model; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(CompressorBox, compressor_box, GTK_TYPE_BOX) + +void on_reset(CompressorBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +gboolean set_dropdown_sensitive(CompressorBox* self, const char* active_id) { + if (g_strcmp0(active_id, "External") == 0) { + return 1; + } + + return 0; +} + +gboolean set_boost_threshold_sensitive(CompressorBox* self, const char* active_id) { + if (g_strcmp0(active_id, "Downward") == 0 || g_strcmp0(active_id, "Boosting") == 0) { + return 0; + } else if (g_strcmp0(active_id, "Upward") == 0) { + return 1; + } + + return 1; +} + +gboolean set_boost_amount_sensitive(CompressorBox* self, const char* active_id) { + if (g_strcmp0(active_id, "Downward") == 0 || g_strcmp0(active_id, "Upward") == 0) { + return 0; + } else if (g_strcmp0(active_id, "Boosting") == 0) { + return 1; + } + + return 1; +} + +void setup_dropdown_input_device(CompressorBox* self) { + auto* selection = gtk_single_selection_new(G_LIST_MODEL(self->input_devices_model)); + + g_signal_connect(self->dropdown_input_devices, "notify::selected-item", + G_CALLBACK(+[](GtkDropDown* dropdown, GParamSpec* pspec, CompressorBox* self) { + if (auto selected_item = gtk_drop_down_get_selected_item(dropdown); selected_item != nullptr) { + auto* holder = static_cast(selected_item); + + g_settings_set_string(self->settings, "sidechain-input-device", holder->info->name.c_str()); + } + }), + self); + + gtk_drop_down_set_model(self->dropdown_input_devices, G_LIST_MODEL(self->input_devices_model)); + + g_object_unref(selection); +} + +void setup(CompressorBox* self, + std::shared_ptr compressor, + const std::string& schema_path, + PipeManager* pm) { + self->data->compressor = compressor; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::compressor::id, schema_path.c_str()); + + compressor->set_post_messages(true); + + setup_dropdown_input_device(self); + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == tags::pipewire::ee_sink_name || node.name == tags::pipewire::ee_source_name) { + continue; + } + + if (node.media_class == tags::pipewire::media_class::source || + node.media_class == tags::pipewire::media_class::virtual_source) { + auto holder = ui::holders::create(node); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + } + } + + self->data->connections.push_back(compressor->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(compressor->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(compressor->reduction.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->gain_label)) { + return; + } + + gtk_label_set_text(self->gain_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(compressor->envelope.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->envelope_label)) { + return; + } + + gtk_label_set_text(self->envelope_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(compressor->sidechain.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->sidechain_label)) { + return; + } + + gtk_label_set_text(self->sidechain_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(compressor->curve.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->curve_label)) { + return; + } + + gtk_label_set_text(self->curve_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(pm->source_added.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + + auto holder = ui::holders::create(info); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + })); + + self->data->connections.push_back(pm->source_removed.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_list_store_remove(self->input_devices_model, n); + + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "attack", gtk_spin_button_get_adjustment(self->attack), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "knee", gtk_spin_button_get_adjustment(self->knee), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "makeup", gtk_spin_button_get_adjustment(self->makeup), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "ratio", gtk_spin_button_get_adjustment(self->ratio), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "release", gtk_spin_button_get_adjustment(self->release), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "threshold", gtk_spin_button_get_adjustment(self->threshold), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-preamp", gtk_spin_button_get_adjustment(self->preamp), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-reactivity", gtk_spin_button_get_adjustment(self->reactivity), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-lookahead", gtk_spin_button_get_adjustment(self->lookahead), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "release-threshold", gtk_spin_button_get_adjustment(self->release_threshold), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "boost-threshold", gtk_spin_button_get_adjustment(self->boost_threshold), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "boost-amount", gtk_spin_button_get_adjustment(self->boost_amount), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hpf-frequency", gtk_spin_button_get_adjustment(self->hpf_freq), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "lpf-frequency", gtk_spin_button_get_adjustment(self->lpf_freq), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-listen", self->listen, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mode", self->compression_mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-type", self->sidechain_type, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-mode", self->sidechain_mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-source", self->sidechain_source, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hpf-mode", self->hpf_mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "lpf-mode", self->lpf_mode, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_COMPRESSOR_BOX(object); + + self->data->compressor->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(compressor_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_COMPRESSOR_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(compressor_box_parent_class)->finalize(object); +} + +void compressor_box_class_init(CompressorBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::compressor_ui); + + gtk_widget_class_bind_template_child(widget_class, CompressorBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, CompressorBox, gain_label); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, sidechain_label); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, curve_label); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, envelope_label); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, attack); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, release); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, release_threshold); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, threshold); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, knee); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, ratio); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, makeup); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, boost_threshold); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, boost_amount); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, preamp); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, reactivity); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, lookahead); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, hpf_freq); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, lpf_freq); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, compression_mode); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, sidechain_type); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, sidechain_mode); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, sidechain_source); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, lpf_mode); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, hpf_mode); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, listen); + gtk_widget_class_bind_template_child(widget_class, CompressorBox, dropdown_input_devices); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + gtk_widget_class_bind_template_callback(widget_class, set_dropdown_sensitive); + gtk_widget_class_bind_template_callback(widget_class, set_boost_threshold_sensitive); + gtk_widget_class_bind_template_callback(widget_class, set_boost_amount_sensitive); +} + +void compressor_box_init(CompressorBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->input_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + + prepare_spinbuttons<"dB">(self->threshold, self->release_threshold, self->boost_threshold, self->boost_amount, + self->knee, self->makeup, self->preamp); + + prepare_spinbuttons<"Hz">(self->hpf_freq, self->lpf_freq); + + prepare_spinbuttons<"ms">(self->attack, self->release, self->lookahead, self->reactivity); + + prepare_spinbuttons<"">(self->ratio); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> CompressorBox* { + return static_cast(g_object_new(EE_TYPE_COMPRESSOR_BOX, nullptr)); +} + +} // namespace ui::compressor_box diff --git a/src/convolver.cpp b/src/convolver.cpp new file mode 100644 index 0000000..cbf9954 --- /dev/null +++ b/src/convolver.cpp @@ -0,0 +1,502 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "convolver.hpp" + +namespace { + +constexpr auto CONVPROC_SCHEDULER_PRIORITY = 0; + +constexpr auto CONVPROC_SCHEDULER_CLASS = SCHED_FIFO; + +} // namespace + +Convolver::Convolver(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::convolver, schema, schema_path, pipe_manager) { + do_autogain = g_settings_get_boolean(settings, "autogain") != 0; + + ir_width = g_settings_get_int(settings, "ir-width"); + + gconnections.push_back(g_signal_connect(settings, "changed::ir-width", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->ir_width = g_settings_get_int(self->settings, key); + + std::scoped_lock lock(self->data_mutex); + + if (self->kernel_is_initialized) { + self->kernel_L = self->original_kernel_L; + self->kernel_R = self->original_kernel_R; + + self->set_kernel_stereo_width(); + self->apply_kernel_autogain(); + } + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::kernel-path", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->prepare_kernel(); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::autogain", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->do_autogain = g_settings_get_boolean(settings, key) != 0; + + self->prepare_kernel(); + }), + this)); + + setup_input_output_gain(); +} + +Convolver::~Convolver() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + for (auto& t : mythreads) { + t.join(); + } + + mythreads.clear(); + + std::scoped_lock lock(data_mutex); + + ready = false; + + if (conv != nullptr) { + conv->stop_process(); + + conv->cleanup(); + + delete conv; + } + + util::debug(log_tag + name + " destroyed"); +} + +void Convolver::setup() { + ready = false; + + /* + As zita uses fftw we have to be careful when reinitializing it. The thread that creates the fftw plan has to be the + same that destroys it. Otherwise segmentation faults can happen. As we do not want to do this initializing in the + plugin realtime thread we send it to the main thread through g_idle_add().connect_once + */ + + util::idle_add([&, this] { + if (ready) { + return; + } + + blocksize = n_samples; + + n_samples_is_power_of_2 = (n_samples & (n_samples - 1)) == 0 && n_samples != 0; + + if (!n_samples_is_power_of_2) { + while ((blocksize & (blocksize - 1)) != 0 && blocksize > 2) { + blocksize--; + } + } + + data_L.resize(0); + data_R.resize(0); + + deque_out_L.resize(0); + deque_out_R.resize(0); + + notify_latency = true; + + latency_n_frames = 0U; + + read_kernel_file(); + + if (kernel_is_initialized) { + kernel_L = original_kernel_L; + kernel_R = original_kernel_R; + + set_kernel_stereo_width(); + apply_kernel_autogain(); + + setup_zita(); + } + + std::scoped_lock lock(data_mutex); + + ready = kernel_is_initialized && zita_ready; + }); +} + +void Convolver::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::scoped_lock lock(data_mutex); + + if (bypass || !ready) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + if (n_samples_is_power_of_2) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + do_convolution(left_out, right_out); + } else { + for (size_t j = 0U; j < left_in.size(); j++) { + data_L.push_back(left_in[j]); + data_R.push_back(right_in[j]); + + if (data_L.size() == blocksize) { + do_convolution(data_L, data_R); + + for (const auto& v : data_L) { + deque_out_L.push_back(v); + } + + for (const auto& v : data_R) { + deque_out_R.push_back(v); + } + + data_L.resize(0); + data_R.resize(0); + } + } + + // copying the processed samples to the output buffers + + if (deque_out_L.size() >= left_out.size()) { + for (float& v : left_out) { + v = deque_out_L.front(); + + deque_out_L.pop_front(); + } + + for (float& v : right_out) { + v = deque_out_R.front(); + + deque_out_R.pop_front(); + } + } else { + const uint offset = 2U * (left_out.size() - deque_out_L.size()); + + if (offset != latency_n_frames) { + latency_n_frames = offset; + + notify_latency = true; + } + + for (uint n = 0U; !deque_out_L.empty() && n < left_out.size(); n++) { + if (n < offset) { + left_out[n] = 0.0F; + right_out[n] = 0.0F; + } else { + left_out[n] = deque_out_L.front(); + right_out[n] = deque_out_R.front(); + + deque_out_R.pop_front(); + deque_out_L.pop_front(); + } + } + } + } + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (notify_latency) { + latency_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_value, "") + " s"); + + util::idle_add([=, this] { latency.emit(latency_value); }); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + + notify_latency = false; + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +void Convolver::read_kernel_file() { + kernel_is_initialized = false; + + const auto path = util::gsettings_get_string(settings, "kernel-path"); + + if (path.empty()) { + util::warning(log_tag + name + ": irs file path is null. Entering passthrough mode..."); + + return; + } + + // SndfileHandle might have issues with std::string, so we provide cstring + + SndfileHandle file = SndfileHandle(path.c_str()); + + if (file.channels() == 0 || file.frames() == 0) { + util::warning(log_tag + name + ": irs file does not exists or it is empty: " + path); + util::warning(log_tag + name + ": Entering passthrough mode..."); + + return; + } + + util::debug(log_tag + name + ": irs file: " + path); + util::debug(log_tag + name + ": irs rate: " + util::to_string(file.samplerate()) + " Hz"); + util::debug(log_tag + name + ": irs channels: " + util::to_string(file.channels())); + util::debug(log_tag + name + ": irs frames: " + util::to_string(file.frames())); + + // for now only stereo irs files are supported + + if (file.channels() != 2) { + util::warning(log_tag + name + " Only stereo impulse responses are supported."); + util::warning(log_tag + name + " The impulse file was not loaded!"); + + return; + } + + std::vector buffer(file.frames() * file.channels()); + std::vector buffer_L(file.frames()); + std::vector buffer_R(file.frames()); + + file.readf(buffer.data(), file.frames()); + + for (size_t n = 0U; n < buffer_L.size(); n++) { + buffer_L[n] = buffer[2U * n]; + buffer_R[n] = buffer[2U * n + 1U]; + } + + if (file.samplerate() != static_cast(rate)) { + util::debug(log_tag + name + " resampling the kernel to " + util::to_string(rate)); + + auto resampler = std::make_unique(file.samplerate(), rate); + + original_kernel_L = resampler->process(buffer_L, true); + + resampler = std::make_unique(file.samplerate(), rate); + + original_kernel_R = resampler->process(buffer_R, true); + } else { + original_kernel_L = buffer_L; + original_kernel_R = buffer_R; + } + + kernel_is_initialized = true; + + util::debug(log_tag + name + ": kernel initialized"); +} + +void Convolver::apply_kernel_autogain() { + if (!do_autogain) { + return; + } + + if (kernel_L.empty() || kernel_R.empty()) { + return; + } + + const float abs_peak_L = + std::ranges::max(kernel_L, [](const auto& a, const auto& b) { return (std::fabs(a) < std::fabs(b)); }); + const float abs_peak_R = + std::ranges::max(kernel_R, [](const auto& a, const auto& b) { return (std::fabs(a) < std::fabs(b)); }); + + const float peak = (abs_peak_L > abs_peak_R) ? abs_peak_L : abs_peak_R; + + // normalize + + std::ranges::for_each(kernel_L, [&](auto& v) { v /= peak; }); + std::ranges::for_each(kernel_R, [&](auto& v) { v /= peak; }); + + // find average power + + float power_L = 0.0F, power_R = 0.0F; + + std::ranges::for_each(kernel_L, [&](const auto& v) { power_L += v * v; }); + std::ranges::for_each(kernel_R, [&](const auto& v) { power_R += v * v; }); + + const float power = std::max(power_L, power_R); + + const float autogain = std::min(1.0F, 1.0F / std::sqrt(power)); + + util::debug(log_tag + "autogain factor: " + util::to_string(autogain)); + + std::ranges::for_each(kernel_L, [&](auto& v) { v *= autogain; }); + std::ranges::for_each(kernel_R, [&](auto& v) { v *= autogain; }); +} + +/* + Mid-Side based Stereo width effect + taken from https://github.com/tomszilagyi/ir.lv2/blob/automatable/ir.cc +*/ +void Convolver::set_kernel_stereo_width() { + const float w = static_cast(ir_width) * 0.01F; + const float x = (1.0F - w) / (1.0F + w); // M-S coeff.; L_out = L + x*R; R_out = R + x*L + + for (uint i = 0U; i < original_kernel_L.size(); i++) { + const auto L = original_kernel_L[i]; + const auto R = original_kernel_R[i]; + + kernel_L[i] = L + x * R; + kernel_R[i] = R + x * L; + } +} + +void Convolver::setup_zita() { + zita_ready = false; + + if (n_samples == 0U || !kernel_is_initialized) { + return; + } + + const uint max_convolution_size = kernel_L.size(); + const uint buffer_size = get_zita_buffer_size(); + + if (conv != nullptr) { + conv->stop_process(); + + conv->cleanup(); + + delete conv; + } + + conv = new Convproc(); + + conv->set_options(0); + + int ret = conv->configure(2, 2, max_convolution_size, buffer_size, buffer_size, buffer_size, 0.0F /*density*/); + + if (ret != 0) { + util::warning(log_tag + name + " can't initialise zita-convolver engine: " + util::to_string(ret, "")); + + return; + } + + ret = conv->impdata_create(0, 0, 1, kernel_L.data(), 0, static_cast(kernel_L.size())); + + if (ret != 0) { + util::warning(log_tag + name + " left impdata_create failed: " + util::to_string(ret)); + + return; + } + + ret = conv->impdata_create(1, 1, 1, kernel_R.data(), 0, static_cast(kernel_R.size())); + + if (ret != 0) { + util::warning(log_tag + name + " right impdata_create failed: " + util::to_string(ret, "")); + + return; + } + + ret = conv->start_process(CONVPROC_SCHEDULER_PRIORITY, CONVPROC_SCHEDULER_CLASS); + + if (ret != 0) { + util::warning(log_tag + name + " start_process failed: " + util::to_string(ret, "")); + + conv->stop_process(); + conv->cleanup(); + + return; + } + + zita_ready = true; + + util::debug(log_tag + name + ": zita is ready"); +} + +auto Convolver::get_zita_buffer_size() -> uint { + if (n_samples_is_power_of_2) { + return n_samples; + } + + return blocksize; +} + +auto Convolver::get_latency_seconds() -> float { + return this->latency_value; +} + +void Convolver::prepare_kernel() { + if (n_samples == 0U || rate == 0U) { + return; + } + + data_mutex.lock(); + + ready = false; + + data_mutex.unlock(); + + read_kernel_file(); + + if (kernel_is_initialized) { + kernel_L = original_kernel_L; + kernel_R = original_kernel_R; + + set_kernel_stereo_width(); + apply_kernel_autogain(); + + setup_zita(); + + data_mutex.lock(); + + ready = kernel_is_initialized && zita_ready; + + data_mutex.unlock(); + } +} \ No newline at end of file diff --git a/src/convolver_menu_combine.cpp b/src/convolver_menu_combine.cpp new file mode 100644 index 0000000..334d364 --- /dev/null +++ b/src/convolver_menu_combine.cpp @@ -0,0 +1,272 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "convolver_menu_combine.hpp" + +namespace ui::convolver_menu_combine { + +using namespace std::string_literals; + +auto constexpr irs_ext = ".irs"; + +static std::filesystem::path irs_dir = g_get_user_config_dir() + "/easyeffects/irs"s; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + std::vector mythreads; +}; + +struct _ConvolverMenuCombine { + GtkBox parent_instance; + + GtkDropDown *dropdown_kernel_1, *dropdown_kernel_2; + + GtkEntry* output_kernel_name; + + GtkSpinner* spinner; + + GtkStringList *string_list_1, *string_list_2; + + GSettings* app_settings; + + Data* data; +}; + +G_DEFINE_TYPE(ConvolverMenuCombine, convolver_menu_combine, GTK_TYPE_POPOVER) + +void append_to_string_list(ConvolverMenuCombine* self, const std::string& irs_filename) { + ui::append_to_string_list(self->string_list_1, irs_filename); + ui::append_to_string_list(self->string_list_2, irs_filename); +} + +void remove_from_string_list(ConvolverMenuCombine* self, const std::string& irs_filename) { + ui::remove_from_string_list(self->string_list_1, irs_filename); + ui::remove_from_string_list(self->string_list_2, irs_filename); +} + +void direct_conv(const std::vector& a, const std::vector& b, std::vector& c) { + std::vector indices(c.size()); + + std::iota(indices.begin(), indices.end(), 0); + + std::for_each(std::execution::par_unseq, indices.begin(), indices.end(), [&](size_t n) { + c[n] = 0.0F; + + for (uint m = 0U; m < b.size(); m++) { + if (n - m >= 0U && n - m < a.size() - 1U) { + c[n] += b[m] * a[n - m]; + } + } + }); +} + +void combine_kernels(ConvolverMenuCombine* self, + const std::string& kernel_1_name, + const std::string& kernel_2_name, + const std::string& output_file_name) { + if (output_file_name.empty()) { + // The method combine_kernels run in a secondary thread. But the widgets have to be used in the main thread. + + util::idle_add([=] { gtk_spinner_stop(self->spinner); }); + + return; + } + + auto [rate1, kernel_1_L, kernel_1_R] = ui::convolver::read_kernel(irs_dir, irs_ext, kernel_1_name); + auto [rate2, kernel_2_L, kernel_2_R] = ui::convolver::read_kernel(irs_dir, irs_ext, kernel_2_name); + + if (rate1 == 0 || rate2 == 0) { + util::idle_add([=] { gtk_spinner_stop(self->spinner); }); + + return; + } + + if (rate1 > rate2) { + util::debug("resampling the kernel " + kernel_2_name + " to " + util::to_string(rate1) + " Hz"); + + auto resampler = std::make_unique(rate2, rate1); + + kernel_2_L = resampler->process(kernel_2_L, true); + + resampler = std::make_unique(rate2, rate1); + + kernel_2_R = resampler->process(kernel_2_R, true); + } else if (rate2 > rate1) { + util::debug("resampling the kernel " + kernel_1_name + " to " + util::to_string(rate2) + " Hz"); + + auto resampler = std::make_unique(rate1, rate2); + + kernel_1_L = resampler->process(kernel_1_L, true); + + resampler = std::make_unique(rate1, rate2); + + kernel_1_R = resampler->process(kernel_1_R, true); + } + + std::vector kernel_L(kernel_1_L.size() + kernel_2_L.size() - 1); + std::vector kernel_R(kernel_1_R.size() + kernel_2_R.size() - 1); + + // As the convolution is commutative we change the order based on which will run faster. + + if (kernel_1_L.size() > kernel_2_L.size()) { + direct_conv(kernel_1_L, kernel_2_L, kernel_L); + direct_conv(kernel_1_R, kernel_2_R, kernel_R); + } else { + direct_conv(kernel_2_L, kernel_1_L, kernel_L); + direct_conv(kernel_2_R, kernel_1_R, kernel_R); + } + + std::vector buffer(kernel_L.size() * 2); // 2 channels interleaved + + for (size_t n = 0; n < kernel_L.size(); n++) { + buffer[2 * n] = kernel_L[n]; + buffer[2 * n + 1] = kernel_R[n]; + } + + const auto output_file_path = irs_dir / std::filesystem::path{output_file_name + irs_ext}; + + auto mode = SFM_WRITE; + auto format = SF_FORMAT_WAV | SF_FORMAT_PCM_32; + auto n_channels = 2; + auto rate = (rate1 > rate2) ? rate1 : rate2; + + auto sndfile = SndfileHandle(output_file_path.string(), mode, format, n_channels, rate); + + sndfile.writef(buffer.data(), static_cast(kernel_L.size())); + + util::debug("combined kernel saved: " + output_file_path.string()); + + util::idle_add([=] { gtk_spinner_stop(self->spinner); }); +} + +void on_combine_kernels(ConvolverMenuCombine* self, GtkButton* btn) { + if (g_list_model_get_n_items(G_LIST_MODEL(self->string_list_1)) == 0 || + g_list_model_get_n_items(G_LIST_MODEL(self->string_list_2)) == 0) { + return; + } + + auto dropdown_1_selection = gtk_drop_down_get_selected_item(self->dropdown_kernel_1); + auto dropdown_2_selection = gtk_drop_down_get_selected_item(self->dropdown_kernel_2); + + if (dropdown_1_selection == nullptr || dropdown_2_selection == nullptr) { + return; + } + + gtk_spinner_start(self->spinner); + + const auto kernel_1_name = gtk_string_object_get_string(GTK_STRING_OBJECT(dropdown_1_selection)); + + const auto kernel_2_name = gtk_string_object_get_string(GTK_STRING_OBJECT(dropdown_2_selection)); + + std::string output_name = gtk_editable_get_text(GTK_EDITABLE(self->output_kernel_name)); + + if (output_name.empty() || output_name.find_first_of("\\/") != std::string::npos) { + util::debug(" combined IR filename is empty or has illegal characters."); + + gtk_widget_add_css_class(GTK_WIDGET(self->output_kernel_name), "error"); + + gtk_widget_grab_focus(GTK_WIDGET(self->output_kernel_name)); + + gtk_spinner_stop(self->spinner); + } else { + // Truncate filename if longer than 100 characters + + if (output_name.length() > 100U) { + output_name.resize(100U); + } + + gtk_widget_remove_css_class(GTK_WIDGET(self->output_kernel_name), "error"); + + /* + The current code convolving the impulse responses is doing direct convolution. It can be very slow depending on + the size of each kernel. So we do not want to do it in the main thread. + */ + + self->data->mythreads.emplace_back( // Using emplace_back here makes sense + [=]() { combine_kernels(self, kernel_1_name, kernel_2_name, output_name); }); + } +} + +void dispose(GObject* object) { + auto* self = EE_CONVOLVER_MENU_COMBINE(object); + + for (auto& t : self->data->mythreads) { + t.join(); + } + + self->data->mythreads.clear(); + + g_object_unref(self->app_settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(convolver_menu_combine_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_CONVOLVER_MENU_COMBINE(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(convolver_menu_combine_parent_class)->finalize(object); +} + +void convolver_menu_combine_class_init(ConvolverMenuCombineClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::convolver_menu_combine_ui); + + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuCombine, string_list_1); + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuCombine, string_list_2); + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuCombine, dropdown_kernel_1); + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuCombine, dropdown_kernel_2); + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuCombine, output_kernel_name); + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuCombine, spinner); + + gtk_widget_class_bind_template_callback(widget_class, on_combine_kernels); +} + +void convolver_menu_combine_init(ConvolverMenuCombine* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + for (const auto& name : util::get_files_name(irs_dir, irs_ext)) { + gtk_string_list_append(self->string_list_1, name.c_str()); + gtk_string_list_append(self->string_list_2, name.c_str()); + } + + self->app_settings = g_settings_new(tags::app::id); + + g_settings_bind(self->app_settings, "autohide-popovers", self, "autohide", G_SETTINGS_BIND_DEFAULT); +} + +auto create() -> ConvolverMenuCombine* { + return static_cast(g_object_new(EE_TYPE_CONVOLVER_MENU_COMBINE, nullptr)); +} + +} // namespace ui::convolver_menu_combine diff --git a/src/convolver_menu_impulses.cpp b/src/convolver_menu_impulses.cpp new file mode 100644 index 0000000..e16c73c --- /dev/null +++ b/src/convolver_menu_impulses.cpp @@ -0,0 +1,347 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "convolver_menu_impulses.hpp" + +namespace ui::convolver_menu_impulses { + +using namespace std::string_literals; + +enum class ImpulseImportState { success, no_regular_file, no_frame, no_stereo }; + +auto constexpr irs_ext = ".irs"; + +static std::filesystem::path irs_dir = g_get_user_config_dir() + "/easyeffects/irs"s; + +struct _ConvolverMenuImpulses { + GtkBox parent_instance; + + GtkScrolledWindow* scrolled_window; + + GtkListView* listview; + + GtkSpinButton* ir_width; + + GtkSearchEntry* entry_search; + + GtkStringList* string_list; + + GSettings *settings, *app_settings; + + app::Application* application; +}; + +G_DEFINE_TYPE(ConvolverMenuImpulses, convolver_menu_impulses, GTK_TYPE_POPOVER) + +void append_to_string_list(ConvolverMenuImpulses* self, const std::string& irs_filename) { + ui::append_to_string_list(self->string_list, irs_filename); +} + +void remove_from_string_list(ConvolverMenuImpulses* self, const std::string& irs_filename) { + ui::remove_from_string_list(self->string_list, irs_filename); +} + +auto import_irs_file(const std::string& file_path) -> ImpulseImportState { + std::filesystem::path p{file_path}; + + if (!std::filesystem::is_regular_file(p)) { + util::warning(p.string() + " is not a file!"); + + return ImpulseImportState::no_regular_file; + } + + auto file = SndfileHandle(file_path.c_str()); + + if (file.frames() == 0) { + util::warning("Cannot import the impulse response! The format may be corrupted or unsupported."); + util::warning(file_path + " loading failed"); + + return ImpulseImportState::no_frame; + } else if (file.channels() != 2) { + util::warning("Only stereo impulse files are supported!"); + util::warning(file_path + " loading failed"); + + return ImpulseImportState::no_stereo; + } + + auto out_path = irs_dir / p.filename(); + + out_path.replace_extension(irs_ext); + + std::filesystem::copy_file(p, out_path, std::filesystem::copy_options::overwrite_existing); + + util::debug("Irs file successfully imported to: " + out_path.string()); + + return ImpulseImportState::success; +} + +void notify_import_error(const ImpulseImportState& import_state, ConvolverMenuImpulses* self) { + std::string descr; + + switch (import_state) { + case ImpulseImportState::no_regular_file: { + descr = _("The File Is Not Regular"); + + break; + } + case ImpulseImportState::no_frame: { + descr = _("The Impulse File May Be Corrupted or Unsupported"); + + break; + } + case ImpulseImportState::no_stereo: { + descr = _("Only Stereo Impulse Files Are Supported"); + + break; + } + default: + return; + } + + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->application)); + + ui::show_simple_message_dialog(GTK_WIDGET(active_window), _("Impulse File Not Imported"), descr); +} + +void on_import_irs_clicked(ConvolverMenuImpulses* self, GtkButton* btn) { + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->application)); + + auto* dialog = gtk_file_chooser_native_new(_("Import Impulse File"), active_window, GTK_FILE_CHOOSER_ACTION_OPEN, + _("Open"), _("Cancel")); + + auto* filter = gtk_file_filter_new(); + + gtk_file_filter_set_name(filter, _("Impulse Response")); + gtk_file_filter_add_pattern(filter, "*.irs"); + gtk_file_filter_add_pattern(filter, "*.wav"); + + gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); + + g_signal_connect(dialog, "response", + G_CALLBACK(+[](GtkNativeDialog* dialog, int response, ConvolverMenuImpulses* self) { + if (response == GTK_RESPONSE_ACCEPT) { + auto* chooser = GTK_FILE_CHOOSER(dialog); + auto* file = gtk_file_chooser_get_file(chooser); + auto* path = g_file_get_path(file); + + auto import_state = import_irs_file(path); + + if (import_state != ImpulseImportState::success) { + notify_import_error(import_state, self); + } + + g_free(path); + + g_object_unref(file); + } + + g_object_unref(dialog); + }), + self); + + gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(dialog), 1); + gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog)); +} + +void remove_irs_file(const std::string& name) { + const auto irs_file = irs_dir / std::filesystem::path{name + irs_ext}; + + if (std::filesystem::exists(irs_file)) { + std::filesystem::remove(irs_file); + + util::debug("removed irs file: " + irs_file.string()); + } +} + +void setup_listview(ConvolverMenuImpulses* self) { + auto* factory = gtk_signal_list_item_factory_new(); + + // setting the factory callbacks + + g_signal_connect(factory, "setup", + G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, ConvolverMenuImpulses* self) { + auto* box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); + auto* label = gtk_label_new(nullptr); + auto* load = gtk_button_new_with_label(_("Load")); + auto* remove = gtk_button_new_from_icon_name("user-trash-symbolic"); + + gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); + gtk_widget_set_hexpand(GTK_WIDGET(label), 1); + + gtk_box_append(GTK_BOX(box), GTK_WIDGET(label)); + gtk_box_append(GTK_BOX(box), GTK_WIDGET(load)); + gtk_box_append(GTK_BOX(box), GTK_WIDGET(remove)); + + gtk_list_item_set_activatable(item, 0); + gtk_list_item_set_child(item, GTK_WIDGET(box)); + + g_object_set_data(G_OBJECT(item), "name", label); + g_object_set_data(G_OBJECT(item), "load", load); + g_object_set_data(G_OBJECT(item), "remove", remove); + + g_signal_connect(load, "clicked", G_CALLBACK(+[](GtkButton* btn, ConvolverMenuImpulses* self) { + if (auto* string_object = + GTK_STRING_OBJECT(g_object_get_data(G_OBJECT(btn), "string-object")); + string_object != nullptr) { + auto* name = gtk_string_object_get_string(string_object); + + auto irs_file = irs_dir / std::filesystem::path{name}; + + irs_file += irs_ext; + + g_settings_set_string(self->settings, "kernel-path", irs_file.c_str()); + } + }), + self); + + g_signal_connect(remove, "clicked", G_CALLBACK(+[](GtkButton* btn, ConvolverMenuImpulses* self) { + if (auto* string_object = + GTK_STRING_OBJECT(g_object_get_data(G_OBJECT(btn), "string-object")); + string_object != nullptr) { + auto* name = gtk_string_object_get_string(string_object); + + remove_irs_file(name); + } + }), + self); + }), + self); + + g_signal_connect(factory, "bind", + G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, ConvolverMenuImpulses* self) { + auto* label = static_cast(g_object_get_data(G_OBJECT(item), "name")); + auto* load = static_cast(g_object_get_data(G_OBJECT(item), "load")); + auto* remove = static_cast(g_object_get_data(G_OBJECT(item), "remove")); + + auto* child_item = gtk_list_item_get_item(item); + auto* string_object = GTK_STRING_OBJECT(child_item); + + g_object_set_data(G_OBJECT(load), "string-object", string_object); + g_object_set_data(G_OBJECT(remove), "string-object", string_object); + + auto* name = gtk_string_object_get_string(GTK_STRING_OBJECT(child_item)); + + gtk_label_set_text(label, name); + + gtk_accessible_update_property(GTK_ACCESSIBLE(load), GTK_ACCESSIBLE_PROPERTY_LABEL, + (_("Load Impulse") + " "s + name).c_str(), -1); + + gtk_accessible_update_property(GTK_ACCESSIBLE(remove), GTK_ACCESSIBLE_PROPERTY_LABEL, + (_("Remove Impulse") + " "s + name).c_str(), -1); + }), + self); + + gtk_list_view_set_factory(self->listview, factory); + + g_object_unref(factory); + + for (const auto& name : util::get_files_name(irs_dir, irs_ext)) { + gtk_string_list_append(self->string_list, name.c_str()); + } + + // filter + + auto* filter = gtk_string_filter_new(gtk_property_expression_new(GTK_TYPE_STRING_OBJECT, nullptr, "string")); + + auto* filter_model = gtk_filter_list_model_new(G_LIST_MODEL(self->string_list), GTK_FILTER(filter)); + + gtk_filter_list_model_set_incremental(filter_model, 1); + + g_object_bind_property(self->entry_search, "text", filter, "search", G_BINDING_DEFAULT); + + // sorter + + auto* sorter = gtk_string_sorter_new(gtk_property_expression_new(GTK_TYPE_STRING_OBJECT, nullptr, "string")); + + auto* sorter_model = gtk_sort_list_model_new(G_LIST_MODEL(filter_model), GTK_SORTER(sorter)); + + // setting the listview model and factory + + auto* selection = gtk_no_selection_new(G_LIST_MODEL(sorter_model)); + + gtk_list_view_set_model(self->listview, GTK_SELECTION_MODEL(selection)); + + g_object_unref(selection); +} + +void setup(ConvolverMenuImpulses* self, const std::string& schema_path, app::Application* application) { + self->application = application; + + self->settings = g_settings_new_with_path(tags::schema::convolver::id, schema_path.c_str()); + + setup_listview(self); +} + +void show(GtkWidget* widget) { + auto* self = EE_CONVOLVER_MENU_IMPULSES(widget); + + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->application)); + + auto active_window_height = gtk_widget_get_allocated_height(GTK_WIDGET(active_window)); + + const int menu_height = static_cast(0.5F * static_cast(active_window_height)); + + gtk_scrolled_window_set_max_content_height(self->scrolled_window, menu_height); + + GTK_WIDGET_CLASS(convolver_menu_impulses_parent_class)->show(widget); +} + +void dispose(GObject* object) { + auto* self = EE_CONVOLVER_MENU_IMPULSES(object); + + g_object_unref(self->settings); + g_object_unref(self->app_settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(convolver_menu_impulses_parent_class)->dispose(object); +} + +void convolver_menu_impulses_class_init(ConvolverMenuImpulsesClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + + widget_class->show = show; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::convolver_menu_impulses_ui); + + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuImpulses, scrolled_window); + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuImpulses, listview); + gtk_widget_class_bind_template_child(widget_class, ConvolverMenuImpulses, entry_search); + + gtk_widget_class_bind_template_callback(widget_class, on_import_irs_clicked); +} + +void convolver_menu_impulses_init(ConvolverMenuImpulses* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->string_list = gtk_string_list_new(nullptr); + + self->app_settings = g_settings_new(tags::app::id); + + g_settings_bind(self->app_settings, "autohide-popovers", self, "autohide", G_SETTINGS_BIND_DEFAULT); +} + +auto create() -> ConvolverMenuImpulses* { + return static_cast(g_object_new(EE_TYPE_CONVOLVER_MENU_IMPULSES, nullptr)); +} + +} // namespace ui::convolver_menu_impulses diff --git a/src/convolver_preset.cpp b/src/convolver_preset.cpp new file mode 100644 index 0000000..943575d --- /dev/null +++ b/src/convolver_preset.cpp @@ -0,0 +1,54 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "convolver_preset.hpp" + +ConvolverPreset::ConvolverPreset() { + input_settings = g_settings_new_with_path(tags::schema::convolver::id, tags::schema::convolver::input_path); + + output_settings = g_settings_new_with_path(tags::schema::convolver::id, tags::schema::convolver::output_path); +} + +void ConvolverPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["convolver"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["convolver"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["convolver"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["convolver"]["kernel-path"] = util::gsettings_get_string(settings, "kernel-path"); + + json[section]["convolver"]["ir-width"] = g_settings_get_int(settings, "ir-width"); + + json[section]["convolver"]["autogain"] = g_settings_get_boolean(settings, "autogain") != 0; +} + +void ConvolverPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("convolver"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("convolver"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("convolver"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("convolver"), settings, "kernel-path", "kernel-path"); + + update_key(json.at(section).at("convolver"), settings, "ir-width", "ir-width"); + + update_key(json.at(section).at("convolver"), settings, "autogain", "autogain"); +} diff --git a/src/convolver_ui.cpp b/src/convolver_ui.cpp new file mode 100644 index 0000000..2cb1368 --- /dev/null +++ b/src/convolver_ui.cpp @@ -0,0 +1,705 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "convolver_ui.hpp" + +namespace ui::convolver_box { + +using namespace std::string_literals; + +auto constexpr irs_ext = ".irs"; + +static std::filesystem::path irs_dir = g_get_user_config_dir() + "/easyeffects/irs"s; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + app::Application* application; + + std::shared_ptr convolver; + + std::mutex lock_guard_irs_info; + + std::vector mythreads; + + std::vector connections; + + std::vector gconnections; + + std::vector left_mag, right_mag, time_axis, left_spectrum, right_spectrum, freq_axis; +}; + +struct _ConvolverBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkMenuButton *menu_button_impulses, *menu_button_combine; + + GtkLabel *label_file_name, *label_sampling_rate, *label_samples, *label_duration; + + GtkSpinButton* ir_width; + + GtkCheckButton *check_left, *check_right; + + GtkToggleButton *show_fft, *enable_log_scale; + + GtkBox* chart_box; + + ui::convolver_menu_impulses::ConvolverMenuImpulses* impulses_menu; + + ui::convolver_menu_combine::ConvolverMenuCombine* combine_menu; + + ui::chart::Chart* chart; + + GSettings* settings; + + GFileMonitor* folder_monitor; + + Data* data; + + GtkToggleButton* autogain; +}; + +G_DEFINE_TYPE(ConvolverBox, convolver_box, GTK_TYPE_BOX) + +void on_reset(ConvolverBox* self, GtkButton* btn) { + gtk_toggle_button_set_active(self->autogain, 0); + + util::reset_all_keys_except(self->settings); +} + +void plot_fft(ConvolverBox* self) { + if (self->data->freq_axis.empty() || self->data->left_spectrum.empty() || self->data->right_spectrum.empty()) { + return; + } + + ui::chart::set_chart_type(self->chart, ui::chart::ChartType::line); + ui::chart::set_fill_bars(self->chart, false); + ui::chart::set_line_width(self->chart, 2.0); + ui::chart::set_n_x_decimals(self->chart, 0); + ui::chart::set_n_y_decimals(self->chart, 2); + ui::chart::set_x_unit(self->chart, "Hz"); + + if (gtk_toggle_button_get_active(self->enable_log_scale) != 0) { + ui::chart::set_chart_scale(self->chart, ui::chart::ChartScale::logarithmic); + } else { + ui::chart::set_chart_scale(self->chart, ui::chart::ChartScale::linear); + } + + ui::chart::set_x_data(self->chart, self->data->freq_axis); + + if (gtk_check_button_get_active(self->check_left) != 0) { + ui::chart::set_y_data(self->chart, self->data->left_spectrum); + } else if (gtk_check_button_get_active(self->check_right) != 0) { + ui::chart::set_y_data(self->chart, self->data->right_spectrum); + } +} + +void plot_waveform(ConvolverBox* self) { + if (self->data->time_axis.empty() || self->data->left_spectrum.empty() || self->data->right_spectrum.empty()) { + return; + } + + ui::chart::set_chart_type(self->chart, ui::chart::ChartType::line); + ui::chart::set_chart_scale(self->chart, ui::chart::ChartScale::linear); + ui::chart::set_fill_bars(self->chart, false); + ui::chart::set_line_width(self->chart, 2.0); + ui::chart::set_n_x_decimals(self->chart, 2); + ui::chart::set_n_y_decimals(self->chart, 2); + ui::chart::set_x_unit(self->chart, "s"); + + ui::chart::set_x_data(self->chart, self->data->time_axis); + + if (gtk_check_button_get_active(self->check_left) != 0) { + ui::chart::set_y_data(self->chart, self->data->left_mag); + } else if (gtk_check_button_get_active(self->check_right) != 0) { + ui::chart::set_y_data(self->chart, self->data->right_mag); + } +} + +void on_show_fft(ConvolverBox* self, GtkToggleButton* btn) { + if (gtk_toggle_button_get_active(btn) != 0) { + plot_fft(self); + } else { + plot_waveform(self); + } +} + +void on_show_channel(ConvolverBox* self, GtkCheckButton* btn) { + if (gtk_check_button_get_active(btn) != 0) { + on_show_fft(self, self->show_fft); + } +} + +void on_enable_log_scale(ConvolverBox* self, GtkToggleButton* btn) { + plot_fft(self); +} + +void get_irs_spectrum(ConvolverBox* self, const int& rate) { + if (self->data->left_mag.empty() || self->data->right_mag.empty() || + self->data->left_mag.size() != self->data->right_mag.size()) { + util::debug(" aborting the impulse fft calculation..."); + + return; + } + + util::debug(" calculating the impulse fft..."); + + self->data->left_spectrum.resize(self->data->left_mag.size() / 2U + 1U); + self->data->right_spectrum.resize(self->data->right_mag.size() / 2U + 1U); + + auto real_input = self->data->left_mag; + + for (uint n = 0U; n < real_input.size(); n++) { + // https://en.wikipedia.org/wiki/Hann_function + + const float w = 0.5F * (1.0F - std::cos(2.0F * std::numbers::pi_v * static_cast(n) / + static_cast(real_input.size() - 1U))); + + real_input[n] *= w; + } + + auto* complex_output = fftwf_alloc_complex(real_input.size()); + + auto* plan = + fftwf_plan_dft_r2c_1d(static_cast(real_input.size()), real_input.data(), complex_output, FFTW_ESTIMATE); + + fftwf_execute(plan); + + for (uint i = 0U; i < self->data->left_spectrum.size(); i++) { + float sqr = complex_output[i][0] * complex_output[i][0] + complex_output[i][1] * complex_output[i][1]; + + sqr /= static_cast(self->data->left_spectrum.size() * self->data->left_spectrum.size()); + + self->data->left_spectrum[i] = sqr; + } + + // right channel fft + + real_input = self->data->right_mag; + + for (uint n = 0U; n < real_input.size(); n++) { + // https://en.wikipedia.org/wiki/Hann_function + + const float w = 0.5F * (1.0F - std::cos(2.0F * std::numbers::pi_v * static_cast(n) / + static_cast(real_input.size() - 1U))); + + real_input[n] *= w; + } + + fftwf_execute(plan); + + for (uint i = 0U; i < self->data->right_spectrum.size(); i++) { + float sqr = complex_output[i][0] * complex_output[i][0] + complex_output[i][1] * complex_output[i][1]; + + sqr /= static_cast(self->data->right_spectrum.size() * self->data->right_spectrum.size()); + + self->data->right_spectrum[i] = sqr; + } + + // cleaning + + if (complex_output != nullptr) { + fftwf_free(complex_output); + } + + fftwf_destroy_plan(plan); + + // initializing the frequency axis + + self->data->freq_axis.resize(self->data->left_spectrum.size()); + + for (uint n = 0U; n < self->data->freq_axis.size(); n++) { + self->data->freq_axis[n] = + 0.5F * static_cast(rate) * static_cast(n) / static_cast(self->data->freq_axis.size()); + } + + // removing the DC component at f = 0 Hz + + self->data->freq_axis.erase(self->data->freq_axis.begin()); + self->data->left_spectrum.erase(self->data->left_spectrum.begin()); + self->data->right_spectrum.erase(self->data->right_spectrum.begin()); + + size_t bin_size = + (gtk_widget_get_width(GTK_WIDGET(self->chart)) > 0) ? gtk_widget_get_width(GTK_WIDGET(self->chart)) : 500; + + // initializing the logarithmic frequency axis + + float max_freq = std::ranges::max(self->data->freq_axis); + float min_freq = std::ranges::min(self->data->freq_axis); + + util::debug("min fft frequency: " + util::to_string(min_freq, "")); + util::debug("max fft frequency: " + util::to_string(max_freq, "")); + + const auto log_axis = util::logspace(min_freq, max_freq, bin_size); + // const auto log_axis = util::logspace(20.0F, 22000.0F, self->data->freq_axis.size()); + + std::vector l(log_axis.size()); + std::vector r(log_axis.size()); + + std::ranges::fill(l, 0.0F); + std::ranges::fill(r, 0.0F); + + // reducing the amount of data we have to plot and converting the frequency axis to the logarithimic scale + + size_t last_j = 0; + + for (size_t n = 0U; n < log_axis.size(); n++) { + for (size_t j = last_j; j < self->data->freq_axis.size(); j++) { + if (self->data->freq_axis[j] > log_axis[n]) { + last_j = j; + + break; + } else { + l[n] += self->data->left_spectrum[j]; + r[n] += self->data->right_spectrum[j]; + } + } + } + + self->data->freq_axis = log_axis; + self->data->left_spectrum = l; + self->data->right_spectrum = r; + + // find min and max values + + const auto fft_min_left = std::ranges::min(self->data->left_spectrum); + const auto fft_max_left = std::ranges::max(self->data->left_spectrum); + + const auto fft_min_right = std::ranges::min(self->data->right_spectrum); + const auto fft_max_right = std::ranges::max(self->data->right_spectrum); + + // rescaling between 0 and 1 + + for (uint n = 0; n < self->data->left_spectrum.size(); n++) { + self->data->left_spectrum[n] = (self->data->left_spectrum[n] - fft_min_left) / (fft_max_left - fft_min_left); + self->data->right_spectrum[n] = (self->data->right_spectrum[n] - fft_min_right) / (fft_max_right - fft_min_right); + } + + util::idle_add([=]() { + if (!ui::chart::get_is_visible(self->chart)) { + return; + } + + if (gtk_toggle_button_get_active(self->show_fft) != 0) { + plot_fft(self); + } + }); +} + +void get_irs_info(ConvolverBox* self) { + const std::string path = util::gsettings_get_string(self->settings, "kernel-path"); + + if (path.empty()) { + util::warning(": irs file path is null."); + + // Set label to initial empty state + gtk_widget_remove_css_class(GTK_WIDGET(self->label_file_name), "error"); + gtk_widget_add_css_class(GTK_WIDGET(self->label_file_name), "dim-label"); + gtk_label_set_text(self->label_file_name, _("No Impulse File Loaded")); + + gtk_label_set_text(self->label_sampling_rate, ""); + gtk_label_set_text(self->label_samples, ""); + gtk_label_set_text(self->label_duration, ""); + + return; + } + + auto [rate, kernel_L, kernel_R] = ui::convolver::read_kernel(irs_dir, irs_ext, path); + + if (rate == 0) { + // warning the user that there is a problem + + util::idle_add([=]() { + if (!ui::chart::get_is_visible(self->chart)) { + return; + } + + // Move label to error state + gtk_widget_remove_css_class(GTK_WIDGET(self->label_file_name), "dim-label"); + gtk_widget_add_css_class(GTK_WIDGET(self->label_file_name), "error"); + gtk_label_set_text(self->label_file_name, _("Failed To Load The Impulse File")); + + gtk_label_set_text(self->label_sampling_rate, ""); + gtk_label_set_text(self->label_samples, ""); + gtk_label_set_text(self->label_duration, ""); + }); + + return; + } + + const float dt = 1.0F / static_cast(rate); + + const float duration = (static_cast(kernel_L.size()) - 1.0F) * dt; + + self->data->time_axis.resize(kernel_L.size()); + + self->data->left_mag = kernel_L; + self->data->right_mag = kernel_R; + + for (size_t n = 0; n < self->data->time_axis.size(); n++) { + self->data->time_axis[n] = static_cast(n) * dt; + } + + get_irs_spectrum(self, rate); + + size_t bin_size = (gtk_widget_get_width(GTK_WIDGET(self->chart)) > 0) + ? self->data->time_axis.size() / gtk_widget_get_width(GTK_WIDGET(self->chart)) + : 0; + + if (bin_size > 0) { + // decimating the data so we can draw it + + std::vector t; + std::vector l; + std::vector r; + std::vector bin_x; + std::vector bin_l_y; + std::vector bin_r_y; + + for (size_t n = 0; n < self->data->time_axis.size(); n++) { + bin_x.push_back(self->data->time_axis[n]); + + bin_l_y.push_back(self->data->left_mag[n]); + bin_r_y.push_back(self->data->right_mag[n]); + + if (bin_x.size() == bin_size) { + const auto [min, max] = std::ranges::minmax_element(bin_l_y); + + t.push_back(bin_x[min - bin_l_y.begin()]); + t.push_back(bin_x[max - bin_l_y.begin()]); + + l.push_back(*min); + l.push_back(*max); + + const auto [minr, maxr] = std::ranges::minmax_element(bin_r_y); + + r.push_back(*minr); + r.push_back(*maxr); + + bin_x.resize(0); + bin_l_y.resize(0); + bin_r_y.resize(0); + } + } + + self->data->time_axis = t; + self->data->left_mag = l; + self->data->right_mag = r; + } + + self->data->time_axis.shrink_to_fit(); + self->data->left_mag.shrink_to_fit(); + self->data->right_mag.shrink_to_fit(); + + // find min and max values + + const auto min_left = std::ranges::min(self->data->left_mag); + const auto max_left = std::ranges::max(self->data->left_mag); + + const auto min_right = std::ranges::min(self->data->right_mag); + const auto max_right = std::ranges::max(self->data->right_mag); + + // rescaling between 0 and 1 + + for (size_t n = 0U; n < self->data->left_mag.size(); n++) { + self->data->left_mag[n] = (self->data->left_mag[n] - min_left) / (max_left - min_left); + self->data->right_mag[n] = (self->data->right_mag[n] - min_right) / (max_right - min_right); + } + + // updating interface with ir file info + + auto rate_copy = rate; + auto n_samples = kernel_L.size(); + + util::idle_add([=]() { + if (!ui::chart::get_is_visible(self->chart)) { + return; + } + + const auto fpath = std::filesystem::path{path}; + + // Set label to ready state and update with filename + gtk_widget_remove_css_class(GTK_WIDGET(self->label_file_name), "error"); + gtk_widget_add_css_class(GTK_WIDGET(self->label_file_name), "dim-label"); + gtk_label_set_text(self->label_file_name, fpath.stem().c_str()); + + gtk_label_set_text(self->label_sampling_rate, fmt::format(ui::get_user_locale(), "{0:Ld} Hz", rate_copy).c_str()); + gtk_label_set_text(self->label_samples, fmt::format(ui::get_user_locale(), "{0:Ld}", n_samples).c_str()); + gtk_label_set_text(self->label_duration, fmt::format(ui::get_user_locale(), "{0:.3Lf}", duration).c_str()); + + if (gtk_toggle_button_get_active(self->show_fft) == 0) { + plot_waveform(self); + } + }); +} + +void setup(ConvolverBox* self, + std::shared_ptr convolver, + const std::string& schema_path, + app::Application* application) { + self->data->convolver = convolver; + self->data->application = application; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::convolver::id, schema_path.c_str()); + + convolver->set_post_messages(true); + + ui::convolver_menu_impulses::setup(self->impulses_menu, schema_path, application); + + self->data->connections.push_back(convolver->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(convolver->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::kernel-path", G_CALLBACK(+[](GSettings* settings, char* key, ConvolverBox* self) { + self->data->mythreads.emplace_back([=]() { + std::scoped_lock lock(self->data->lock_guard_irs_info); + + get_irs_info(self); + }); + }), + self)); + + gsettings_bind_widgets<"input-gain", "output-gain", "autogain">(self->settings, self->input_gain, self->output_gain, + self->autogain); + + g_settings_bind(self->settings, "ir-width", gtk_spin_button_get_adjustment(self->ir_width), "value", + G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_CONVOLVER_BOX(object); + + self->data->convolver->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + g_file_monitor_cancel(self->folder_monitor); + + g_object_unref(self->folder_monitor); + + for (auto& t : self->data->mythreads) { + t.join(); + } + + self->data->mythreads.clear(); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(convolver_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_CONVOLVER_BOX(object); + + for (auto& t : self->data->mythreads) { + t.join(); + } + + self->data->mythreads.clear(); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(convolver_box_parent_class)->finalize(object); +} + +void convolver_box_class_init(ConvolverBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::convolver_ui); + + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, menu_button_impulses); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, menu_button_combine); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, label_file_name); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, label_sampling_rate); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, label_samples); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, label_duration); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, ir_width); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, check_left); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, check_right); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, show_fft); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, enable_log_scale); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, chart_box); + gtk_widget_class_bind_template_child(widget_class, ConvolverBox, autogain); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + gtk_widget_class_bind_template_callback(widget_class, on_show_fft); + gtk_widget_class_bind_template_callback(widget_class, on_show_channel); + gtk_widget_class_bind_template_callback(widget_class, on_enable_log_scale); +} + +void convolver_box_init(ConvolverBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + // irs dir + + if (!std::filesystem::is_directory(irs_dir)) { + if (std::filesystem::create_directories(irs_dir)) { + util::debug("irs directory created: " + irs_dir.string()); + } else { + util::warning("failed to create irs directory: " + irs_dir.string()); + } + } else { + util::debug("irs directory already exists: " + irs_dir.string()); + } + + prepare_spinbuttons<"%">(self->ir_width); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + self->chart = ui::chart::create(); + + gtk_widget_set_vexpand(GTK_WIDGET(self->chart), 1); + + self->impulses_menu = ui::convolver_menu_impulses::create(); + self->combine_menu = ui::convolver_menu_combine::create(); + + gtk_menu_button_set_popover(self->menu_button_impulses, GTK_WIDGET(self->impulses_menu)); + gtk_menu_button_set_popover(self->menu_button_combine, GTK_WIDGET(self->combine_menu)); + + gtk_box_insert_child_after(self->chart_box, GTK_WIDGET(self->chart), + gtk_widget_get_first_child(GTK_WIDGET(self->chart_box))); + + // setting some signals + + auto gfile = g_file_new_for_path(irs_dir.c_str()); + + self->folder_monitor = g_file_monitor_directory(gfile, G_FILE_MONITOR_NONE, nullptr, nullptr); + + g_signal_connect(self->folder_monitor, "changed", + G_CALLBACK(+[](GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonitorEvent event_type, + ConvolverBox* self) { + const auto irs_filename = util::remove_filename_extension(g_file_get_basename(file)); + + if (irs_filename.empty()) { + util::warning("can't retrieve information about irs file"); + + return; + } + + switch (event_type) { + case G_FILE_MONITOR_EVENT_CREATED: { + ui::convolver_menu_impulses::append_to_string_list(self->impulses_menu, irs_filename); + ui::convolver_menu_combine::append_to_string_list(self->combine_menu, irs_filename); + + break; + } + + case G_FILE_MONITOR_EVENT_DELETED: { + ui::convolver_menu_impulses::remove_from_string_list(self->impulses_menu, irs_filename); + ui::convolver_menu_combine::remove_from_string_list(self->combine_menu, irs_filename); + + break; + } + + default: + break; + } + }), + self); + + g_object_unref(gfile); + + g_signal_connect(GTK_WIDGET(self), "realize", G_CALLBACK(+[](GtkWidget* widget, ConvolverBox* self) { + /* + Reading the current configured irs file. We do this here because we need some widgets to be ready + when the impulse response file information is available + */ + + self->data->mythreads.emplace_back([=]() { // Using emplace_back here makes sense + std::scoped_lock lock(self->data->lock_guard_irs_info); + + get_irs_info(self); + }); + }), + self); +} + +auto create() -> ConvolverBox* { + return static_cast(g_object_new(EE_TYPE_CONVOLVER_BOX, nullptr)); +} + +} // namespace ui::convolver_box diff --git a/src/convolver_ui_common.cpp b/src/convolver_ui_common.cpp new file mode 100644 index 0000000..4aac65a --- /dev/null +++ b/src/convolver_ui_common.cpp @@ -0,0 +1,70 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "convolver_ui_common.hpp" + +namespace ui::convolver { + +auto read_kernel(std::filesystem::path irs_dir, const std::string& irs_ext, const std::string& file_name) + -> std::tuple, std::vector> { + int rate = 0; + std::vector buffer; + std::vector kernel_L; + std::vector kernel_R; + + auto file_path = irs_dir / std::filesystem::path{file_name}; + + util::debug("reading the impulse file: " + file_path.string()); + + if (file_path.extension() != irs_ext) { + file_path += irs_ext; + } + + if (!std::filesystem::exists(file_path)) { + util::debug("file: " + file_path.string() + " does not exist"); + + return std::make_tuple(rate, kernel_L, kernel_R); + } + + auto sndfile = SndfileHandle(file_path.string()); + + if (sndfile.channels() != 2 || sndfile.frames() == 0) { + util::warning(" Only stereo impulse responses are supported."); + util::warning(" The impulse file was not loaded!"); + + return std::make_tuple(rate, kernel_L, kernel_R); + } + + buffer.resize(sndfile.frames() * sndfile.channels()); + kernel_L.resize(sndfile.frames()); + kernel_R.resize(sndfile.frames()); + + sndfile.readf(buffer.data(), sndfile.frames()); + + for (size_t n = 0U; n < kernel_L.size(); n++) { + kernel_L[n] = buffer[2U * n]; + kernel_R[n] = buffer[2U * n + 1U]; + } + + rate = sndfile.samplerate(); + + return std::make_tuple(rate, kernel_L, kernel_R); +} + +} // namespace ui::convolver \ No newline at end of file diff --git a/src/crossfeed.cpp b/src/crossfeed.cpp new file mode 100644 index 0000000..2db592e --- /dev/null +++ b/src/crossfeed.cpp @@ -0,0 +1,120 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "crossfeed.hpp" + +Crossfeed::Crossfeed(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::crossfeed, schema, schema_path, pipe_manager) { + bs2b.set_level_fcut(g_settings_get_int(settings, "fcut")); + + bs2b.set_level_feed(10 * static_cast(g_settings_get_double(settings, "feed"))); + + gconnections.push_back(g_signal_connect(settings, "changed::fcut", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + std::scoped_lock lock(self->data_mutex); + + self->bs2b.set_level_fcut(g_settings_get_int(settings, key)); + }), + this)); + + gconnections.push_back( + g_signal_connect(settings, "changed::feed", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + std::scoped_lock lock(self->data_mutex); + + self->bs2b.set_level_feed(10 * static_cast(g_settings_get_double(settings, key))); + }), + this)); + + setup_input_output_gain(); +} + +Crossfeed::~Crossfeed() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Crossfeed::setup() { + std::scoped_lock lock(data_mutex); + + data.resize(2 * n_samples); + + if (rate != bs2b.get_srate()) { + bs2b.set_srate(rate); + } +} + +void Crossfeed::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::scoped_lock lock(data_mutex); + + if (bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + for (size_t n = 0U; n < left_in.size(); n++) { + data[n * 2U] = left_in[n]; + data[n * 2U + 1U] = right_in[n]; + } + + bs2b.cross_feed(data.data(), static_cast(n_samples)); + + for (size_t n = 0U; n < left_out.size(); n++) { + left_out[n] = data[n * 2U]; + right_out[n] = data[n * 2U + 1U]; + } + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Crossfeed::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/crossfeed_preset.cpp b/src/crossfeed_preset.cpp new file mode 100644 index 0000000..0665385 --- /dev/null +++ b/src/crossfeed_preset.cpp @@ -0,0 +1,50 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "crossfeed_preset.hpp" + +CrossfeedPreset::CrossfeedPreset() { + input_settings = g_settings_new_with_path(tags::schema::crossfeed::id, tags::schema::crossfeed::input_path); + + output_settings = g_settings_new_with_path(tags::schema::crossfeed::id, tags::schema::crossfeed::output_path); +} + +void CrossfeedPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["crossfeed"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["crossfeed"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["crossfeed"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["crossfeed"]["fcut"] = g_settings_get_int(settings, "fcut"); + + json[section]["crossfeed"]["feed"] = g_settings_get_double(settings, "feed"); +} + +void CrossfeedPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("crossfeed"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("crossfeed"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("crossfeed"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("crossfeed"), settings, "fcut", "fcut"); + + update_key(json.at(section).at("crossfeed"), settings, "feed", "feed"); +} diff --git a/src/crossfeed_ui.cpp b/src/crossfeed_ui.cpp new file mode 100644 index 0000000..81f6abe --- /dev/null +++ b/src/crossfeed_ui.cpp @@ -0,0 +1,197 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "crossfeed_ui.hpp" + +namespace ui::crossfeed_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr crossfeed; + + std::vector connections; + + std::vector gconnections; +}; + +struct _CrossfeedBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkSpinButton *fcut, *feed; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(CrossfeedBox, crossfeed_box, GTK_TYPE_BOX) + +void on_reset(CrossfeedBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void on_preset_cmoy(CrossfeedBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->fcut, 700.0); + gtk_spin_button_set_value(self->feed, 6.0); +} + +void on_preset_default(CrossfeedBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->fcut, 700.0); + gtk_spin_button_set_value(self->feed, 4.5); +} + +void on_preset_jmeier(CrossfeedBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->fcut, 650.0); + gtk_spin_button_set_value(self->feed, 9.0); +} + +void setup(CrossfeedBox* self, std::shared_ptr crossfeed, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->crossfeed = crossfeed; + + self->settings = g_settings_new_with_path(tags::schema::crossfeed::id, schema_path.c_str()); + + crossfeed->set_post_messages(true); + + self->data->connections.push_back(crossfeed->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(crossfeed->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "fcut", gtk_spin_button_get_adjustment(self->fcut), "value", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "feed", gtk_spin_button_get_adjustment(self->feed), "value", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_CROSSFEED_BOX(object); + + self->data->crossfeed->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(crossfeed_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_CROSSFEED_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(crossfeed_box_parent_class)->finalize(object); +} + +void crossfeed_box_class_init(CrossfeedBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::crossfeed_ui); + + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, fcut); + gtk_widget_class_bind_template_child(widget_class, CrossfeedBox, feed); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + + gtk_widget_class_bind_template_callback(widget_class, on_preset_cmoy); + gtk_widget_class_bind_template_callback(widget_class, on_preset_default); + gtk_widget_class_bind_template_callback(widget_class, on_preset_jmeier); +} + +void crossfeed_box_init(CrossfeedBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_spinbuttons<"Hz">(self->fcut); + prepare_spinbuttons<"dB">(self->feed); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> CrossfeedBox* { + return static_cast(g_object_new(EE_TYPE_CROSSFEED_BOX, nullptr)); +} + +} // namespace ui::crossfeed_box diff --git a/src/crystalizer.cpp b/src/crystalizer.cpp new file mode 100644 index 0000000..8723f24 --- /dev/null +++ b/src/crystalizer.cpp @@ -0,0 +1,323 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "crystalizer.hpp" + +Crystalizer::Crystalizer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::crystalizer, schema, schema_path, pipe_manager) { + for (uint n = 0U; n < nbands; n++) { + filters.at(n) = std::make_unique(log_tag + name + " band" + util::to_string(n)); + } + + std::ranges::fill(band_mute, false); + std::ranges::fill(band_bypass, false); + std::ranges::fill(band_intensity, 1.0F); + std::ranges::fill(band_last_L, 0.0F); + std::ranges::fill(band_last_R, 0.0F); + + frequencies[0] = 20.0F; + frequencies[1] = 520.0F; + frequencies[2] = 1020.0F; + frequencies[3] = 2020.0F; + frequencies[4] = 3020.0F; + frequencies[5] = 4020.0F; + frequencies[6] = 5020.0F; + frequencies[7] = 6020.0F; + frequencies[8] = 7020.0F; + frequencies[9] = 8020.0F; + frequencies[10] = 9020.0F; + frequencies[11] = 10020.0F; + frequencies[12] = 15020.0F; + frequencies[13] = 20020.0F; + + for (uint n = 0U; n < nbands; n++) { + bind_band(static_cast(n)); + } + + setup_input_output_gain(); +} + +Crystalizer::~Crystalizer() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + data_mutex.lock(); + + filters_are_ready = false; + + data_mutex.unlock(); + + util::debug(log_tag + name + " destroyed"); +} + +void Crystalizer::setup() { + data_mutex.lock(); + + filters_are_ready = false; + + data_mutex.unlock(); + + /* + As zita uses fftw we have to be careful when reinitializing it. The thread that creates the fftw plan has to be the + same that destroys it. Otherwise segmentation faults can happen. As we do not want to do this initializing in the + plugin realtime thread we send it to the main thread through g_idle_add().connect_once + */ + + util::idle_add([&, this] { + if (filters_are_ready) { + return; + } + + blocksize = n_samples; + + n_samples_is_power_of_2 = (n_samples & (n_samples - 1)) == 0 && n_samples != 0; + + if (!n_samples_is_power_of_2) { + while ((blocksize & (blocksize - 1)) != 0 && blocksize > 2) { + blocksize--; + } + } + + util::debug(log_tag + name + " blocksize: " + util::to_string(blocksize)); + + notify_latency = true; + do_first_rotation = true; + + latency_n_frames = 1U; // the second derivative forces us to delay at least one sample + + deque_out_L.resize(0); + deque_out_R.resize(0); + + data_L.resize(0); + data_R.resize(0); + + for (uint n = 0U; n < nbands; n++) { + band_data_L.at(n).resize(blocksize); + band_data_R.at(n).resize(blocksize); + + band_second_derivative_L.at(n).resize(blocksize); + band_second_derivative_R.at(n).resize(blocksize); + } + + for (uint n = 0U; n < nbands; n++) { + filters.at(n)->set_n_samples(blocksize); + filters.at(n)->set_rate(rate); + + filters.at(n)->set_min_frequency(frequencies.at(n)); + filters.at(n)->set_max_frequency(frequencies.at(n + 1U)); + + filters.at(n)->setup(); + } + + data_mutex.lock(); + + filters_are_ready = true; + + data_mutex.unlock(); + }); +} + +void Crystalizer::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::scoped_lock lock(data_mutex); + + if (bypass || !filters_are_ready) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + if (n_samples_is_power_of_2 && blocksize == n_samples) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + enhance_peaks(left_out, right_out); + } else { + for (size_t j = 0U; j < left_in.size(); j++) { + data_L.push_back(left_in[j]); + data_R.push_back(right_in[j]); + + if (data_L.size() == blocksize) { + enhance_peaks(data_L, data_R); + + for (const auto& v : data_L) { + deque_out_L.push_back(v); + } + + for (const auto& v : data_R) { + deque_out_R.push_back(v); + } + + data_L.resize(0); + data_R.resize(0); + } + } + + // copying the processed samples to the output buffers + + if (deque_out_L.size() >= left_out.size()) { + for (float& v : left_out) { + v = deque_out_L.front(); + + deque_out_L.pop_front(); + } + + for (float& v : right_out) { + v = deque_out_R.front(); + + deque_out_R.pop_front(); + } + } else { + uint offset = 2U * (left_out.size() - deque_out_L.size()); + + if (offset != latency_n_frames) { + latency_n_frames = offset + 1U; // the second derivative forces us to delay at least one sample + + notify_latency = true; + } + + for (uint n = 0U; !deque_out_L.empty() && n < left_out.size(); n++) { + if (n < offset) { + left_out[n] = 0.0F; + right_out[n] = 0.0F; + } else { + left_out[n] = deque_out_L.front(); + right_out[n] = deque_out_R.front(); + + deque_out_R.pop_front(); + deque_out_L.pop_front(); + } + } + } + } + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (notify_latency) { + latency_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_value, "") + " s"); + + util::idle_add([=, this]() { + if (!latency.empty()) { + latency.emit(latency_value); + } + }); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + + notify_latency = false; + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +void Crystalizer::bind_band(const int& n) { + const std::string bandn = "band" + util::to_string(n); + + band_intensity.at(n) = + static_cast(util::db_to_linear(g_settings_get_double(settings, ("intensity-" + bandn).c_str()))); + + band_mute.at(n) = g_settings_get_boolean(settings, ("mute-" + bandn).c_str()) != 0; + band_bypass.at(n) = g_settings_get_boolean(settings, ("bypass-" + bandn).c_str()) != 0; + + using namespace std::string_literals; + + gconnections.push_back(g_signal_connect(settings, ("changed::"s + "intensity-"s + bandn).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto s_key = std::string(key); + + int index = 0; + + if (util::str_to_num(s_key.substr(s_key.find("-band") + 5), index)) { + auto self = static_cast(user_data); + + self->band_intensity.at(index) = + g_settings_get_double(settings, key) != 0; + } + }), + this)); + + gconnections.push_back(g_signal_connect(settings, ("changed::"s + "mute-"s + bandn).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto s_key = std::string(key); + + int index = 0; + + if (util::str_to_num(s_key.substr(s_key.find("-band") + 5), index)) { + auto self = static_cast(user_data); + + self->band_mute.at(index) = g_settings_get_boolean(settings, key) != 0; + } + }), + this)); + + gconnections.push_back(g_signal_connect(settings, ("changed::"s + "bypass-"s + bandn).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto s_key = std::string(key); + + int index = 0; + + if (util::str_to_num(s_key.substr(s_key.find("-band") + 5), index)) { + auto self = static_cast(user_data); + + self->band_bypass.at(index) = g_settings_get_boolean(settings, key) != 0; + } + }), + this)); +} + +auto Crystalizer::get_latency_seconds() -> float { + return this->latency_value; +} \ No newline at end of file diff --git a/src/crystalizer_preset.cpp b/src/crystalizer_preset.cpp new file mode 100644 index 0000000..15eeb80 --- /dev/null +++ b/src/crystalizer_preset.cpp @@ -0,0 +1,62 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "crystalizer_preset.hpp" + +CrystalizerPreset::CrystalizerPreset() { + input_settings = g_settings_new_with_path(tags::schema::crystalizer::id, tags::schema::crystalizer::input_path); + + output_settings = g_settings_new_with_path(tags::schema::crystalizer::id, tags::schema::crystalizer::output_path); +} + +void CrystalizerPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["crystalizer"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["crystalizer"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["crystalizer"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + for (int n = 0; n < 13; n++) { + const auto bandn = "band" + util::to_string(n); + + json[section]["crystalizer"][bandn]["intensity"] = g_settings_get_double(settings, ("intensity-" + bandn).c_str()); + + json[section]["crystalizer"][bandn]["mute"] = g_settings_get_boolean(settings, ("mute-" + bandn).c_str()) != 0; + + json[section]["crystalizer"][bandn]["bypass"] = g_settings_get_boolean(settings, ("bypass-" + bandn).c_str()) != 0; + } +} + +void CrystalizerPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("crystalizer"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("crystalizer"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("crystalizer"), settings, "output-gain", "output-gain"); + + for (int n = 0; n < 13; n++) { + const auto bandn = "band" + util::to_string(n); + + update_key(json.at(section).at("crystalizer")[bandn], settings, "intensity-" + bandn, "intensity"); + + update_key(json.at(section).at("crystalizer")[bandn], settings, "mute-" + bandn, "mute"); + + update_key(json.at(section).at("crystalizer")[bandn], settings, "bypass-" + bandn, "bypass"); + } +} diff --git a/src/crystalizer_ui.cpp b/src/crystalizer_ui.cpp new file mode 100644 index 0000000..c5982d9 --- /dev/null +++ b/src/crystalizer_ui.cpp @@ -0,0 +1,248 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "crystalizer_ui.hpp" + +namespace ui::crystalizer_box { + +constexpr uint nbands = 13U; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr crystalizer; + + std::vector connections; + + std::vector gconnections; +}; + +struct _CrystalizerBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkBox* bands_box; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(CrystalizerBox, crystalizer_box, GTK_TYPE_BOX) + +void on_reset(CrystalizerBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void build_bands(CrystalizerBox* self) { + for (uint n = 0; n < nbands; n++) { + auto builder = gtk_builder_new_from_resource(tags::resources::crystalizer_band_ui); + + auto* band_box = GTK_BOX(gtk_builder_get_object(builder, "band_box")); + + auto* band_label = GTK_LABEL(gtk_builder_get_object(builder, "band_label")); + + auto* band_intensity = GTK_SCALE(gtk_builder_get_object(builder, "band_intensity")); + + auto* band_bypass = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "band_bypass")); + auto* band_mute = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "band_mute")); + + prepare_scales<"">(band_intensity); + + const auto bandn = "band" + util::to_string(n); + + // connections + + g_settings_bind(self->settings, ("intensity-" + bandn).c_str(), gtk_range_get_adjustment(GTK_RANGE(band_intensity)), + "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, ("mute-" + bandn).c_str(), band_mute, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, ("bypass-" + bandn).c_str(), band_bypass, "active", G_SETTINGS_BIND_DEFAULT); + + switch (n) { + case 0: + gtk_label_set_text(band_label, "250 Hz"); + break; + case 1: + gtk_label_set_text(band_label, "750 Hz"); + break; + case 2: + gtk_label_set_text(band_label, "1.5 kHz"); + break; + case 3: + gtk_label_set_text(band_label, "2.5 kHz"); + break; + case 4: + gtk_label_set_text(band_label, "3.5 kHz"); + break; + case 5: + gtk_label_set_text(band_label, "4.5 kHz"); + break; + case 6: + gtk_label_set_text(band_label, "5.5 kHz"); + break; + case 7: + gtk_label_set_text(band_label, "6.5 kHz"); + break; + case 8: + gtk_label_set_text(band_label, "7.5 kHz"); + break; + case 9: + gtk_label_set_text(band_label, "8.5 kHz"); + break; + case 10: + gtk_label_set_text(band_label, "9.5 kHz"); + break; + case 11: + gtk_label_set_text(band_label, "12.5 kHz"); + break; + case 12: + gtk_label_set_text(band_label, "17.5 kHz"); + break; + } + + gtk_box_append(self->bands_box, GTK_WIDGET(band_box)); + + g_object_unref(builder); + } +} + +void setup(CrystalizerBox* self, std::shared_ptr crystalizer, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->crystalizer = crystalizer; + + self->settings = g_settings_new_with_path(tags::schema::crystalizer::id, schema_path.c_str()); + + crystalizer->set_post_messages(true); + + build_bands(self); + + self->data->connections.push_back(crystalizer->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(crystalizer->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); +} + +void dispose(GObject* object) { + auto* self = EE_CRYSTALIZER_BOX(object); + + self->data->crystalizer->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(crystalizer_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_CRYSTALIZER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(crystalizer_box_parent_class)->finalize(object); +} + +void crystalizer_box_class_init(CrystalizerBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::crystalizer_ui); + + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, CrystalizerBox, bands_box); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void crystalizer_box_init(CrystalizerBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> CrystalizerBox* { + return static_cast(g_object_new(EE_TYPE_CRYSTALIZER_BOX, nullptr)); +} + +} // namespace ui::crystalizer_box diff --git a/src/deesser.cpp b/src/deesser.cpp new file mode 100644 index 0000000..f0804c2 --- /dev/null +++ b/src/deesser.cpp @@ -0,0 +1,124 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "deesser.hpp" + +Deesser::Deesser(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::deesser, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://calf.sourceforge.net/plugins/Deesser")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://calf.sourceforge.net/plugins/Deesser is not installed"); + } + + lv2_wrapper->bind_key_enum<"mode", "mode">(settings); + + lv2_wrapper->bind_key_enum<"detection", "detection">(settings); + + lv2_wrapper->bind_key_double<"ratio", "ratio">(settings); + + lv2_wrapper->bind_key_double<"f1_freq", "f1-freq">(settings); + + lv2_wrapper->bind_key_double<"f2_freq", "f2-freq">(settings); + + lv2_wrapper->bind_key_double<"f2_q", "f2-q">(settings); + + lv2_wrapper->bind_key_double_db<"threshold", "threshold">(settings); + + lv2_wrapper->bind_key_double_db<"makeup", "makeup">(settings); + + lv2_wrapper->bind_key_double_db<"f1_level", "f1-level">(settings); + + lv2_wrapper->bind_key_double_db<"f2_level", "f2-level">(settings); + + lv2_wrapper->bind_key_int<"laxity", "laxity">(settings); + + lv2_wrapper->bind_key_bool<"sc_listen", "sc-listen">(settings); + + setup_input_output_gain(); +} + +Deesser::~Deesser() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Deesser::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Deesser::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + // values needed as double for levelbars widget ui, so we convert them here + + detected_port_value = static_cast(lv2_wrapper->get_control_port_value("detected")); + compression_port_value = static_cast(lv2_wrapper->get_control_port_value("compression")); + + detected.emit(detected_port_value); + compression.emit(compression_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Deesser::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/deesser_preset.cpp b/src/deesser_preset.cpp new file mode 100644 index 0000000..6668d13 --- /dev/null +++ b/src/deesser_preset.cpp @@ -0,0 +1,90 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "deesser_preset.hpp" + +DeesserPreset::DeesserPreset() { + input_settings = g_settings_new_with_path(tags::schema::deesser::id, tags::schema::deesser::input_path); + + output_settings = g_settings_new_with_path(tags::schema::deesser::id, tags::schema::deesser::output_path); +} + +void DeesserPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["deesser"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["deesser"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["deesser"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["deesser"]["detection"] = util::gsettings_get_string(settings, "detection"); + + json[section]["deesser"]["mode"] = util::gsettings_get_string(settings, "mode"); + + json[section]["deesser"]["threshold"] = g_settings_get_double(settings, "threshold"); + + json[section]["deesser"]["ratio"] = g_settings_get_double(settings, "ratio"); + + json[section]["deesser"]["laxity"] = g_settings_get_int(settings, "laxity"); + + json[section]["deesser"]["makeup"] = g_settings_get_double(settings, "makeup"); + + json[section]["deesser"]["f1-freq"] = g_settings_get_double(settings, "f1-freq"); + + json[section]["deesser"]["f2-freq"] = g_settings_get_double(settings, "f2-freq"); + + json[section]["deesser"]["f1-level"] = g_settings_get_double(settings, "f1-level"); + + json[section]["deesser"]["f2-level"] = g_settings_get_double(settings, "f2-level"); + + json[section]["deesser"]["f2-q"] = g_settings_get_double(settings, "f2-q"); + + json[section]["deesser"]["sc-listen"] = g_settings_get_boolean(settings, "sc-listen") != 0; +} + +void DeesserPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("deesser"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("deesser"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("deesser"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("deesser"), settings, "detection", "detection"); + + update_key(json.at(section).at("deesser"), settings, "mode", "mode"); + + update_key(json.at(section).at("deesser"), settings, "threshold", "threshold"); + + update_key(json.at(section).at("deesser"), settings, "ratio", "ratio"); + + update_key(json.at(section).at("deesser"), settings, "laxity", "laxity"); + + update_key(json.at(section).at("deesser"), settings, "makeup", "makeup"); + + update_key(json.at(section).at("deesser"), settings, "f1-freq", "f1-freq"); + + update_key(json.at(section).at("deesser"), settings, "f2-freq", "f2-freq"); + + update_key(json.at(section).at("deesser"), settings, "f1-level", "f1-level"); + + update_key(json.at(section).at("deesser"), settings, "f2-level", "f2-level"); + + update_key(json.at(section).at("deesser"), settings, "f2-q", "f2-q"); + + update_key(json.at(section).at("deesser"), settings, "sc-listen", "sc-listen"); +} diff --git a/src/deesser_ui.cpp b/src/deesser_ui.cpp new file mode 100644 index 0000000..efb53fa --- /dev/null +++ b/src/deesser_ui.cpp @@ -0,0 +1,262 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "deesser_ui.hpp" + +namespace ui::deesser_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr deesser; + + std::vector connections; + + std::vector gconnections; +}; + +struct _DeesserBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkLevelBar *compression, *detected; + + GtkLabel *compression_label, *detected_label; + + GtkSpinButton *f1_freq, *f2_freq, *f1_level, *f2_level, *f2_q, *threshold, *ratio, *laxity, *makeup; + + GtkToggleButton* sc_listen; + + GtkComboBoxText *detection, *mode; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(DeesserBox, deesser_box, GTK_TYPE_BOX) + +void on_reset(DeesserBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(DeesserBox* self, std::shared_ptr deesser, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->deesser = deesser; + + self->settings = g_settings_new_with_path(tags::schema::deesser::id, schema_path.c_str()); + + deesser->set_post_messages(true); + + self->data->connections.push_back(deesser->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(deesser->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(deesser->detected.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->compression) || !GTK_IS_LABEL(self->compression_label)) { + return; + } + + gtk_level_bar_set_value(self->compression, 1.0 - value); + gtk_label_set_text(self->compression_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(deesser->compression.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->detected) || !GTK_IS_LABEL(self->detected_label)) { + return; + } + + gtk_level_bar_set_value(self->detected, value); + gtk_label_set_text(self->detected_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "makeup", gtk_spin_button_get_adjustment(self->makeup), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "ratio", gtk_spin_button_get_adjustment(self->ratio), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "threshold", gtk_spin_button_get_adjustment(self->threshold), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "f1-freq", gtk_spin_button_get_adjustment(self->f1_freq), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "f2-freq", gtk_spin_button_get_adjustment(self->f2_freq), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "f1-level", gtk_spin_button_get_adjustment(self->f1_level), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "f2-level", gtk_spin_button_get_adjustment(self->f2_level), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "f2-q", gtk_spin_button_get_adjustment(self->f2_q), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "laxity", gtk_spin_button_get_adjustment(self->laxity), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sc-listen", self->sc_listen, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "detection", self->detection, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mode", self->mode, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_DEESSER_BOX(object); + + self->data->deesser->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(deesser_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_DEESSER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(deesser_box_parent_class)->finalize(object); +} + +void deesser_box_class_init(DeesserBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->finalize = finalize; + object_class->dispose = dispose; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::deesser_ui); + + gtk_widget_class_bind_template_child(widget_class, DeesserBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, DeesserBox, compression); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, compression_label); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, detected); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, detected_label); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, sc_listen); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, detection); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, mode); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, f1_freq); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, f2_freq); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, f1_level); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, f2_level); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, f2_q); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, threshold); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, ratio); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, laxity); + gtk_widget_class_bind_template_child(widget_class, DeesserBox, makeup); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void deesser_box_init(DeesserBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_spinbuttons<"dB">(self->makeup, self->threshold, self->f1_level, self->f2_level); + + prepare_spinbuttons<"Hz">(self->f1_freq, self->f2_freq); + + prepare_spinbuttons<"">(self->f2_q); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> DeesserBox* { + return static_cast(g_object_new(EE_TYPE_DEESSER_BOX, nullptr)); +} + +} // namespace ui::deesser_box diff --git a/src/delay.cpp b/src/delay.cpp new file mode 100644 index 0000000..030a703 --- /dev/null +++ b/src/delay.cpp @@ -0,0 +1,134 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "delay.hpp" + +Delay::Delay(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::delay, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://lsp-plug.in/plugins/lv2/comp_delay_x2_stereo")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://lsp-plug.in/plugins/lv2/comp_delay_x2_stereo is not installed"); + } + + lv2_wrapper->set_control_port_value("mode_l", 2); + lv2_wrapper->set_control_port_value("mode_r", 2); + + lv2_wrapper->bind_key_double<"time_l", "time-l">(settings); + lv2_wrapper->bind_key_double<"time_r", "time-r">(settings); + + setup_input_output_gain(); +} + +Delay::~Delay() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Delay::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Delay::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("out_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + util::idle_add([=, this]() { + if (!post_messages) { + return; + } + + latency.emit(latency_port_value); + }); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Delay::get_latency_seconds() -> float { + return latency_port_value; +} diff --git a/src/delay_preset.cpp b/src/delay_preset.cpp new file mode 100644 index 0000000..c73dc08 --- /dev/null +++ b/src/delay_preset.cpp @@ -0,0 +1,50 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "delay_preset.hpp" + +DelayPreset::DelayPreset() { + input_settings = g_settings_new_with_path(tags::schema::delay::id, tags::schema::delay::input_path); + + output_settings = g_settings_new_with_path(tags::schema::delay::id, tags::schema::delay::output_path); +} + +void DelayPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["delay"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["delay"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["delay"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["delay"]["time-l"] = g_settings_get_double(settings, "time-l"); + + json[section]["delay"]["time-r"] = g_settings_get_double(settings, "time-r"); +} + +void DelayPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("delay"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("delay"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("delay"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("delay"), settings, "time-l", "time-l"); + + update_key(json.at(section).at("delay"), settings, "time-r", "time-r"); +} diff --git a/src/delay_ui.cpp b/src/delay_ui.cpp new file mode 100644 index 0000000..13afbc9 --- /dev/null +++ b/src/delay_ui.cpp @@ -0,0 +1,182 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "delay_ui.hpp" + +namespace ui::delay_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr delay; + + std::vector connections; + + std::vector gconnections; +}; + +struct _DelayBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkSpinButton *time_l, *time_r; + + GtkToggleButton *floor_active, *listen; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(DelayBox, delay_box, GTK_TYPE_BOX) + +void on_reset(DelayBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(DelayBox* self, std::shared_ptr delay, const std::string& schema_path) { + self->data->delay = delay; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::delay::id, schema_path.c_str()); + + delay->set_post_messages(true); + + self->data->connections.push_back(delay->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(delay->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "time-l", gtk_spin_button_get_adjustment(self->time_l), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "time-r", gtk_spin_button_get_adjustment(self->time_r), "value", + G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_DELAY_BOX(object); + + self->data->delay->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(delay_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_DELAY_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(delay_box_parent_class)->finalize(object); +} + +void delay_box_class_init(DelayBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::delay_ui); + + gtk_widget_class_bind_template_child(widget_class, DelayBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, DelayBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, DelayBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, DelayBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, DelayBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, DelayBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, DelayBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, DelayBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, DelayBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, DelayBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, DelayBox, time_l); + gtk_widget_class_bind_template_child(widget_class, DelayBox, time_r); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void delay_box_init(DelayBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_spinbuttons<"ms">(self->time_l, self->time_r); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> DelayBox* { + return static_cast(g_object_new(EE_TYPE_DELAY_BOX, nullptr)); +} + +} // namespace ui::delay_box diff --git a/src/easyeffects.cpp b/src/easyeffects.cpp new file mode 100644 index 0000000..be0a854 --- /dev/null +++ b/src/easyeffects.cpp @@ -0,0 +1,68 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include +#include "application.hpp" +#include "config.h" + +auto sigterm(void* data) -> bool { + auto* app = G_APPLICATION(data); + + app::hide_all_windows(app); + + g_application_quit(app); + + return G_SOURCE_REMOVE; +} + +auto main(int argc, char* argv[]) -> int { + util::debug("easyeffects version: " + std::string(VERSION)); + + try { + // Init internationalization support before anything else + + auto* bindtext_output = bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR); + bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); + textdomain(GETTEXT_PACKAGE); + + if (bindtext_output != nullptr) { + util::debug("locale directory: " + std::string(bindtext_output)); + } else if (errno == ENOMEM) { + util::warning("bindtextdomain: Not enough memory available!"); + + return errno; + } + + auto* app = app::application_new(); + + g_unix_signal_add(2, (GSourceFunc)sigterm, app); + + auto status = g_application_run(app, argc, argv); + + g_object_unref(app); + + util::debug("Exitting the main function with status: " + util::to_string(status, "")); + + return status; + } catch (const std::exception& e) { + std::cerr << e.what() << std::endl; + + return EXIT_FAILURE; + } +} diff --git a/src/echo_canceller.cpp b/src/echo_canceller.cpp new file mode 100644 index 0000000..64063bd --- /dev/null +++ b/src/echo_canceller.cpp @@ -0,0 +1,266 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "echo_canceller.hpp" + +EchoCanceller::EchoCanceller(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::echo_canceller, schema, schema_path, pipe_manager, true) { + gconnections.push_back(g_signal_connect(settings, "changed::frame-size", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + std::scoped_lock lock(self->data_mutex); + + self->blocksize_ms = g_settings_get_int(settings, key); + + self->init_speex(); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::filter-length", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + std::scoped_lock lock(self->data_mutex); + + self->filter_length_ms = g_settings_get_int(settings, key); + + self->init_speex(); + }), + this)); + + setup_input_output_gain(); +} + +EchoCanceller::~EchoCanceller() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + data_mutex.lock(); + + ready = false; + + if (echo_state_L != nullptr) { + speex_echo_state_destroy(echo_state_L); + } + + if (echo_state_R != nullptr) { + speex_echo_state_destroy(echo_state_R); + } + + data_mutex.unlock(); + + util::debug(log_tag + name + " destroyed"); +} + +void EchoCanceller::setup() { + std::scoped_lock lock(data_mutex); + + ready = false; + + notify_latency = true; + + latency_n_frames = 0U; + + deque_out_L.resize(0); + deque_out_R.resize(0); + + init_speex(); +} + +void EchoCanceller::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) { + std::scoped_lock lock(data_mutex); + + if (bypass || !ready) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + for (size_t j = 0U; j < left_in.size(); j++) { + data_L.push_back(left_in[j] * (SHRT_MAX + 1)); + data_R.push_back(right_in[j] * (SHRT_MAX + 1)); + + probe_L.push_back(probe_left[j] * (SHRT_MAX + 1)); + probe_R.push_back(probe_right[j] * (SHRT_MAX + 1)); + + if (data_L.size() == blocksize) { + speex_echo_cancellation(echo_state_L, data_L.data(), probe_L.data(), filtered_L.data()); + speex_echo_cancellation(echo_state_R, data_R.data(), probe_R.data(), filtered_R.data()); + + for (const auto& v : filtered_L) { + deque_out_L.push_back(static_cast(v) * inv_short_max); + } + + for (const auto& v : filtered_R) { + deque_out_R.push_back(static_cast(v) * inv_short_max); + } + + data_L.resize(0); + data_R.resize(0); + probe_L.resize(0); + probe_R.resize(0); + } + } + + // copying the processed samples to the output buffers + + if (deque_out_L.size() >= left_out.size()) { + for (float& v : left_out) { + v = deque_out_L.front(); + + deque_out_L.pop_front(); + } + + for (float& v : right_out) { + v = deque_out_R.front(); + + deque_out_R.pop_front(); + } + } else { + const uint offset = left_out.size() - deque_out_L.size(); + + if (offset != latency_n_frames) { + latency_n_frames = offset; + + notify_latency = true; + } + + for (uint n = 0U; !deque_out_L.empty() && n < left_out.size(); n++) { + if (n < offset) { + left_out[n] = 0.0F; + right_out[n] = 0.0F; + } else { + left_out[n] = deque_out_L.front(); + right_out[n] = deque_out_R.front(); + + deque_out_R.pop_front(); + deque_out_L.pop_front(); + } + } + } + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (notify_latency) { + const float latency_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_value, "") + " s"); + + util::idle_add([=, this]() { + if (!post_messages) { + return; + } + + latency.emit(latency_value); + }); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + + notify_latency = false; + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +void EchoCanceller::init_speex() { + if (n_samples == 0U || rate == 0U) { + return; + } + + data_L.resize(0); + data_R.resize(0); + probe_L.resize(0); + probe_R.resize(0); + + blocksize = 0.001F * blocksize_ms * rate; + + util::debug(log_tag + name + " blocksize: " + util::to_string(blocksize)); + + filtered_L.resize(blocksize); + filtered_R.resize(blocksize); + + const uint filter_length = 0.001F * filter_length_ms * rate; + + util::debug(log_tag + name + " filter length: " + util::to_string(filter_length)); + + if (echo_state_L != nullptr) { + speex_echo_state_destroy(echo_state_L); + } + + echo_state_L = speex_echo_state_init(blocksize, filter_length); + + if (speex_echo_ctl(echo_state_L, SPEEX_ECHO_SET_SAMPLING_RATE, &rate) != 0) { + util::warning(log_tag + name + "SPEEX_ECHO_SET_SAMPLING_RATE: unknown request"); + } + + if (echo_state_R != nullptr) { + speex_echo_state_destroy(echo_state_R); + } + + echo_state_R = speex_echo_state_init(blocksize, filter_length); + + if (speex_echo_ctl(echo_state_R, SPEEX_ECHO_SET_SAMPLING_RATE, &rate) != 0) { + util::warning(log_tag + name + "SPEEX_ECHO_SET_SAMPLING_RATE: unknown request"); + } + + ready = true; +} + +auto EchoCanceller::get_latency_seconds() -> float { + return latency_value; +} \ No newline at end of file diff --git a/src/echo_canceller_preset.cpp b/src/echo_canceller_preset.cpp new file mode 100644 index 0000000..70444e8 --- /dev/null +++ b/src/echo_canceller_preset.cpp @@ -0,0 +1,51 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "echo_canceller_preset.hpp" + +EchoCancellerPreset::EchoCancellerPreset() { + input_settings = g_settings_new_with_path(tags::schema::echo_canceller::id, tags::schema::echo_canceller::input_path); + + output_settings = + g_settings_new_with_path(tags::schema::echo_canceller::id, tags::schema::echo_canceller::output_path); +} + +void EchoCancellerPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["echo_canceller"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["echo_canceller"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["echo_canceller"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["echo_canceller"]["frame-size"] = g_settings_get_int(settings, "frame-size"); + + json[section]["echo_canceller"]["filter-length"] = g_settings_get_int(settings, "filter-length"); +} + +void EchoCancellerPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("echo_canceller"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("echo_canceller"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("echo_canceller"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("echo_canceller"), settings, "frame-size", "frame-size"); + + update_key(json.at(section).at("echo_canceller"), settings, "filter-length", "filter-length"); +} diff --git a/src/echo_canceller_ui.cpp b/src/echo_canceller_ui.cpp new file mode 100644 index 0000000..28cd37c --- /dev/null +++ b/src/echo_canceller_ui.cpp @@ -0,0 +1,180 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "echo_canceller_ui.hpp" + +namespace ui::echo_canceller_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr echo_canceller; + + std::vector connections; + + std::vector gconnections; +}; + +struct _EchoCancellerBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkSpinButton *frame_size, *filter_length; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(EchoCancellerBox, echo_canceller_box, GTK_TYPE_BOX) + +void on_reset(EchoCancellerBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(EchoCancellerBox* self, std::shared_ptr echo_canceller, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->echo_canceller = echo_canceller; + + self->settings = g_settings_new_with_path(tags::schema::echo_canceller::id, schema_path.c_str()); + + echo_canceller->set_post_messages(true); + + self->data->connections.push_back(echo_canceller->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(echo_canceller->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "frame-size", gtk_spin_button_get_adjustment(self->frame_size), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "filter-length", gtk_spin_button_get_adjustment(self->filter_length), "value", + G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_ECHO_CANCELLER_BOX(object); + + self->data->echo_canceller->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(echo_canceller_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_ECHO_CANCELLER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(echo_canceller_box_parent_class)->finalize(object); +} + +void echo_canceller_box_class_init(EchoCancellerBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::echo_canceller_ui); + + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, frame_size); + gtk_widget_class_bind_template_child(widget_class, EchoCancellerBox, filter_length); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void echo_canceller_box_init(EchoCancellerBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_spinbuttons<"ms">(self->filter_length, self->frame_size); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> EchoCancellerBox* { + return static_cast(g_object_new(EE_TYPE_ECHO_CANCELLER_BOX, nullptr)); +} + +} // namespace ui::echo_canceller_box diff --git a/src/effects_base.cpp b/src/effects_base.cpp new file mode 100644 index 0000000..34c0afb --- /dev/null +++ b/src/effects_base.cpp @@ -0,0 +1,255 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "effects_base.hpp" + +EffectsBase::EffectsBase(std::string tag, const std::string& schema, PipeManager* pipe_manager) + : log_tag(std::move(tag)), + pm(pipe_manager), + settings(g_settings_new(schema.c_str())), + global_settings(g_settings_new(tags::app::id)) { + using namespace std::string_literals; + + schema_base_path = "/" + schema + "/"; + + std::replace(schema_base_path.begin(), schema_base_path.end(), '.', '/'); + + output_level = + std::make_shared(log_tag, tags::schema::output_level::id, schema_base_path + "outputlevel/", pm); + + spectrum = std::make_shared(log_tag, tags::schema::spectrum::id, tags::app::path + "/spectrum/"s, pm); + + if (!output_level->connected_to_pw) { + output_level->connect_to_pw(); + } + + if (!spectrum->connected_to_pw) { + spectrum->connect_to_pw(); + } + + create_filters_if_necessary(); + + gconnections.push_back(g_signal_connect(settings, "changed::plugins", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->create_filters_if_necessary(); + + self->broadcast_pipeline_latency(); + }), + this)); +} + +EffectsBase::~EffectsBase() { + for (auto& c : connections) { + c.disconnect(); + } + + for (auto& handler_id : gconnections) { + g_signal_handler_disconnect(settings, handler_id); + } + + g_object_unref(settings); + + util::debug("effects_base: destroyed"); +} + +void EffectsBase::reset_settings() { + util::reset_all_keys_except(settings, {"input-device", "output-device"}); + + spectrum->reset_settings(); + + for (auto& plugin : plugins | std::views::values) { + plugin->reset_settings(); + } +} + +void EffectsBase::create_filters_if_necessary() { + const auto list = util::gchar_array_to_vector(g_settings_get_strv(settings, "plugins")); + + if (list.empty()) { + return; + } + + for (const auto& name : list) { + if (plugins.contains(name)) { + continue; + } + + std::shared_ptr filter; + + // With rfind we check if the plugin name starts with a given base name + + if (name.rfind(tags::plugin_name::autogain, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::autogain::id, + schema_base_path + tags::plugin_name::autogain + "/", pm); + } else if (name.rfind(tags::plugin_name::bass_enhancer, 0) == 0) { + auto path = schema_base_path + tags::plugin_name::bass_enhancer + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + filter = std::make_shared(log_tag, tags::schema::bass_enhancer::id, path, pm); + } else if (name.rfind(tags::plugin_name::bass_loudness, 0) == 0) { + auto path = schema_base_path + tags::plugin_name::bass_loudness + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + filter = std::make_shared(log_tag, tags::schema::bass_loudness::id, path, pm); + } else if (name.rfind(tags::plugin_name::compressor, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::compressor::id, + schema_base_path + tags::plugin_name::compressor + "/", pm); + } else if (name.rfind(tags::plugin_name::convolver, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::convolver::id, + schema_base_path + tags::plugin_name::convolver + "/", pm); + } else if (name.rfind(tags::plugin_name::crossfeed, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::crossfeed::id, + schema_base_path + tags::plugin_name::crossfeed + "/", pm); + } else if (name.rfind(tags::plugin_name::crystalizer, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::crystalizer::id, + schema_base_path + tags::plugin_name::crystalizer + "/", pm); + } else if (name.rfind(tags::plugin_name::deesser, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::deesser::id, + schema_base_path + tags::plugin_name::deesser + "/", pm); + } else if (name.rfind(tags::plugin_name::delay, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::delay::id, + schema_base_path + tags::plugin_name::delay + "/", pm); + } else if (name.rfind(tags::plugin_name::echo_canceller, 0) == 0) { + auto path = schema_base_path + tags::plugin_name::echo_canceller + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + filter = std::make_shared(log_tag, tags::schema::echo_canceller::id, path, pm); + } else if (name.rfind(tags::plugin_name::exciter, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::exciter::id, + schema_base_path + tags::plugin_name::exciter + "/", pm); + } else if (name.rfind(tags::plugin_name::equalizer, 0) == 0) { + filter = std::make_shared( + log_tag, tags::schema::equalizer::id, schema_base_path + "equalizer/", tags::schema::equalizer::channel_id, + schema_base_path + "equalizer/leftchannel/", schema_base_path + "equalizer/rightchannel/", pm); + } else if (name.rfind(tags::plugin_name::filter, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::filter::id, + schema_base_path + tags::plugin_name::filter + "/", pm); + } else if (name.rfind(tags::plugin_name::gate, 0) == 0) { + filter = + std::make_shared(log_tag, tags::schema::gate::id, schema_base_path + tags::plugin_name::gate + "/", pm); + } else if (name.rfind(tags::plugin_name::limiter, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::limiter::id, + schema_base_path + tags::plugin_name::limiter + "/", pm); + } else if (name.rfind(tags::plugin_name::loudness, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::loudness::id, + schema_base_path + tags::plugin_name::loudness + "/", pm); + } else if (name.rfind(tags::plugin_name::maximizer, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::maximizer::id, + schema_base_path + tags::plugin_name::maximizer + "/", pm); + } else if (name.rfind(tags::plugin_name::multiband_compressor, 0) == 0) { + auto path = schema_base_path + tags::plugin_name::multiband_compressor + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + filter = std::make_shared(log_tag, tags::schema::multiband_compressor::id, path, pm); + } else if (name.rfind(tags::plugin_name::multiband_gate, 0) == 0) { + auto path = schema_base_path + tags::plugin_name::multiband_gate + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + filter = std::make_shared(log_tag, tags::schema::multiband_gate::id, path, pm); + } else if (name.rfind(tags::plugin_name::pitch, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::pitch::id, + schema_base_path + tags::plugin_name::pitch + "/", pm); + } else if (name.rfind(tags::plugin_name::reverb, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::reverb::id, + schema_base_path + tags::plugin_name::reverb + "/", pm); + } else if (name.rfind(tags::plugin_name::rnnoise, 0) == 0) { + filter = std::make_shared(log_tag, tags::schema::rnnoise::id, + schema_base_path + tags::plugin_name::rnnoise + "/", pm); + } else if (name.rfind(tags::plugin_name::stereo_tools, 0) == 0) { + auto path = schema_base_path + tags::plugin_name::stereo_tools + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + filter = std::make_shared(log_tag, tags::schema::stereo_tools::id, path, pm); + } + + connections.push_back(filter->latency.connect([=, this](const auto& v) { broadcast_pipeline_latency(); })); + + plugins.insert(std::make_pair(name, filter)); + } +} + +void EffectsBase::remove_unused_filters() { + const auto list = util::gchar_array_to_vector(g_settings_get_strv(settings, "plugins")); + + if (list.empty()) { + plugins.clear(); + + return; + } + + for (auto it = plugins.begin(); it != plugins.end();) { + auto key = it->first; + + if (std::ranges::find(list, key) == list.end()) { + auto plugin = it->second; + + plugin->bypass = true; + plugin->set_post_messages(false); + plugin->latency.clear(); + + if (plugin->connected_to_pw) { + plugin->disconnect_from_pw(); + } + + it = plugins.erase(it); + } else { + it++; + } + } +} + +void EffectsBase::activate_filters() { + for (auto& plugin : plugins | std::views::values) { + plugin->set_active(true); + } +} + +void EffectsBase::deactivate_filters() { + for (auto& plugin : plugins | std::views::values) { + plugin->set_active(false); + } +} + +auto EffectsBase::get_pipeline_latency() -> float { + float total = 0.0F; + + for (const auto& name : util::gchar_array_to_vector(g_settings_get_strv(settings, "plugins"))) { + if (plugins.contains(name)) { + total += plugins[name]->get_latency_seconds(); + } + } + + return total * 1000.0F; +} + +void EffectsBase::broadcast_pipeline_latency() { + const auto latency_value = get_pipeline_latency(); + + util::debug(log_tag + "pipeline latency: " + util::to_string(latency_value, "") + " ms"); + + pipeline_latency.emit(latency_value); +} diff --git a/src/effects_box.cpp b/src/effects_box.cpp new file mode 100644 index 0000000..433ede4 --- /dev/null +++ b/src/effects_box.cpp @@ -0,0 +1,562 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "effects_box.hpp" + +namespace { + +bool schedule_signal_idle = false; + +} + +namespace ui::effects_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + app::Application* application; + + EffectsBase* effects_base; + + PipelineType pipeline_type; + + uint spectrum_rate, spectrum_n_bands; + + float global_output_level_left, global_output_level_right, pipeline_latency_ms; + + std::vector spectrum_mag, spectrum_freqs, spectrum_x_axis; + + std::vector spectrum_bin_count; + + std::vector connections; + + std::vector gconnections_spectrum; +}; + +struct _EffectsBox { + GtkBox parent_instance; + + AdwViewStack* stack; + + AdwViewStackPage *apps_box_page, *plugins_box_page; + + GtkLabel *device_state, *latency_status, *label_global_output_level_left, *label_global_output_level_right; + + GtkToggleButton* toggle_listen_mic; + + GtkMenuButton* menubutton_blocklist; + + GtkImage* saturation_icon; + + GtkIconTheme* icon_theme; + + ui::chart::Chart* spectrum_chart; + + ui::apps_box::AppsBox* appsBox; + + ui::plugins_box::PluginsBox* pluginsBox; + + ui::blocklist_menu::BlocklistMenu* blocklist_menu; + + GSettings *settings_spectrum, *app_settings; + + Data* data; +}; + +G_DEFINE_TYPE(EffectsBox, effects_box, GTK_TYPE_BOX) + +void init_spectrum_frequency_axis(EffectsBox* self) { + self->data->spectrum_freqs.resize(self->data->spectrum_n_bands); + + for (uint n = 0U; n < self->data->spectrum_n_bands; n++) { + self->data->spectrum_freqs[n] = 0.5F * static_cast(self->data->spectrum_rate) * static_cast(n) / + static_cast(self->data->spectrum_n_bands); + } + + if (!self->data->spectrum_freqs.empty()) { + const auto min_freq = static_cast(g_settings_get_int(self->settings_spectrum, "minimum-frequency")); + const auto max_freq = static_cast(g_settings_get_int(self->settings_spectrum, "maximum-frequency")); + + if (min_freq > (max_freq - 100.0F)) { + return; + } + + self->data->spectrum_x_axis = + util::logspace(min_freq, max_freq, g_settings_get_int(self->settings_spectrum, "n-points")); + + const auto x_axis_size = self->data->spectrum_x_axis.size(); + + self->data->spectrum_mag.resize(x_axis_size); + + self->data->spectrum_bin_count.resize(x_axis_size); + + ui::chart::set_x_data(self->spectrum_chart, self->data->spectrum_x_axis); + } +} + +void setup_spectrum(EffectsBox* self) { + self->data->spectrum_rate = 0U; + self->data->spectrum_n_bands = 0U; + + ui::chart::set_color(self->spectrum_chart, util::gsettings_get_color(self->settings_spectrum, "color")); + + ui::chart::set_axis_labels_color(self->spectrum_chart, + util::gsettings_get_color(self->settings_spectrum, "color-axis-labels")); + + ui::chart::set_fill_bars(self->spectrum_chart, g_settings_get_boolean(self->settings_spectrum, "fill") != 0); + + ui::chart::set_rounded_corners(self->spectrum_chart, + g_settings_get_boolean(self->settings_spectrum, "rounded-corners") != 0); + + ui::chart::set_draw_bar_border(self->spectrum_chart, + g_settings_get_boolean(self->settings_spectrum, "show-bar-border") != 0); + + ui::chart::set_line_width(self->spectrum_chart, g_settings_get_double(self->settings_spectrum, "line-width")); + + ui::chart::set_chart_scale(self->spectrum_chart, ui::chart::ChartScale::logarithmic); + + ui::chart::set_x_unit(self->spectrum_chart, "Hz"); + ui::chart::set_y_unit(self->spectrum_chart, "dB"); + + ui::chart::set_n_x_decimals(self->spectrum_chart, 0); + ui::chart::set_n_y_decimals(self->spectrum_chart, 1); + + ui::chart::set_margin(self->spectrum_chart, 0); + + gtk_widget_set_size_request(GTK_WIDGET(self->spectrum_chart), -1, + g_settings_get_int(self->settings_spectrum, "height")); + + auto chart_type = util::gsettings_get_string(self->settings_spectrum, "type"); + + if (chart_type == "Bars") { + ui::chart::set_chart_type(self->spectrum_chart, chart::ChartType::bar); + } else if (chart_type == "Lines") { + ui::chart::set_chart_type(self->spectrum_chart, chart::ChartType::line); + } else if (chart_type == "Dots") { + ui::chart::set_chart_type(self->spectrum_chart, chart::ChartType::dots); + } + + g_settings_bind(self->settings_spectrum, "show", self->spectrum_chart, "visible", G_SETTINGS_BIND_GET); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::color", G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + ui::chart::set_color(self->spectrum_chart, util::gsettings_get_color(self->settings_spectrum, key)); + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::color-axis-labels", + G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + ui::chart::set_axis_labels_color(self->spectrum_chart, util::gsettings_get_color(self->settings_spectrum, key)); + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::fill", G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + ui::chart::set_fill_bars(self->spectrum_chart, g_settings_get_boolean(self->settings_spectrum, key) != 0); + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::rounded-corners", + G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + ui::chart::set_rounded_corners(self->spectrum_chart, g_settings_get_boolean(self->settings_spectrum, key) != 0); + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::show-bar-border", + G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + ui::chart::set_draw_bar_border(self->spectrum_chart, g_settings_get_boolean(self->settings_spectrum, key) != 0); + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::line-width", G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + ui::chart::set_line_width(self->spectrum_chart, g_settings_get_double(self->settings_spectrum, key)); + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::height", G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + gtk_widget_set_size_request(GTK_WIDGET(self->spectrum_chart), -1, + g_settings_get_int(self->settings_spectrum, key)); + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::type", G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + auto chart_type = util::gsettings_get_string(self->settings_spectrum, key); + + if (chart_type == "Bars") { + ui::chart::set_chart_type(self->spectrum_chart, chart::ChartType::bar); + } else if (chart_type == "Lines") { + ui::chart::set_chart_type(self->spectrum_chart, chart::ChartType::line); + } else if (chart_type == "Dots") { + ui::chart::set_chart_type(self->spectrum_chart, chart::ChartType::dots); + } + }), + self)); + + self->data->gconnections_spectrum.push_back(g_signal_connect( + self->settings_spectrum, "changed::n-points", G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + util::idle_add([=]() { init_spectrum_frequency_axis(self); }); + }), + self)); + + self->data->gconnections_spectrum.push_back( + g_signal_connect(self->settings_spectrum, "changed::minimum-frequency", + G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + util::idle_add([=]() { init_spectrum_frequency_axis(self); }); + }), + self)); + + self->data->gconnections_spectrum.push_back( + g_signal_connect(self->settings_spectrum, "changed::maximum-frequency", + G_CALLBACK(+[](GSettings* settings, char* key, EffectsBox* self) { + util::idle_add([=]() { init_spectrum_frequency_axis(self); }); + }), + self)); +} +void stack_visible_child_changed(EffectsBox* self, GParamSpec* pspec, GtkWidget* stack) { + const auto* name = adw_view_stack_get_visible_child_name(ADW_VIEW_STACK(stack)); + + gtk_widget_set_visible(GTK_WIDGET(self->menubutton_blocklist), static_cast(g_strcmp0(name, "apps") == 0)); + + if (self->data->pipeline_type == PipelineType::input) { + gtk_widget_set_visible(GTK_WIDGET(self->toggle_listen_mic), static_cast(g_strcmp0(name, "plugins") == 0)); + } +} + +void on_listen_mic_toggled(EffectsBox* self, GtkToggleButton* button) { + self->data->application->sie->set_listen_to_mic(gtk_toggle_button_get_active(button) != 0); +} + +void setup(EffectsBox* self, app::Application* application, PipelineType pipeline_type, GtkIconTheme* icon_theme) { + self->data->application = application; + self->data->pipeline_type = pipeline_type; + self->icon_theme = icon_theme; + + switch (pipeline_type) { + case PipelineType::input: { + self->data->effects_base = static_cast(self->data->application->sie); + + self->apps_box_page = adw_view_stack_add_titled(self->stack, GTK_WIDGET(self->appsBox), "apps", _("Recorders")); + + adw_view_stack_page_set_icon_name(self->apps_box_page, "media-record-symbolic"); + + auto set_device_state_label = [=]() { + auto source_rate = static_cast(application->pm->ee_source_node.rate) * 0.001F; + + gtk_label_set_text(self->device_state, fmt::format(ui::get_user_locale(), "{0:.1Lf} kHz", source_rate).c_str()); + }; + + set_device_state_label(); + + self->data->connections.push_back(application->pm->source_changed.connect([=](const auto nd_info) { + if (nd_info.id == application->pm->ee_source_node.id) { + set_device_state_label(); + } + })); + + break; + } + case PipelineType::output: { + self->data->effects_base = static_cast(self->data->application->soe); + + self->apps_box_page = adw_view_stack_add_titled(self->stack, GTK_WIDGET(self->appsBox), "apps", _("Players")); + + adw_view_stack_page_set_icon_name(self->apps_box_page, "multimedia-player-symbolic"); + + auto set_device_state_label = [=]() { + auto sink_rate = static_cast(application->pm->ee_sink_node.rate) * 0.001F; + + gtk_label_set_text(self->device_state, fmt::format(ui::get_user_locale(), "{0:.1Lf} kHz", sink_rate).c_str()); + }; + + set_device_state_label(); + + self->data->connections.push_back(application->pm->sink_changed.connect([=](const auto nd_info) { + if (nd_info.id == application->pm->ee_sink_node.id) { + set_device_state_label(); + } + })); + + break; + } + } + + self->plugins_box_page = + adw_view_stack_add_titled(self->stack, GTK_WIDGET(self->pluginsBox), "plugins", _("Effects")); + + adw_view_stack_page_set_icon_name(self->plugins_box_page, "emblem-music-symbolic"); + + // setting up the boxes we added t othe stack + + ui::apps_box::setup(self->appsBox, application, pipeline_type, icon_theme); + ui::plugins_box::setup(self->pluginsBox, application, pipeline_type); + ui::blocklist_menu::setup(self->blocklist_menu, application, pipeline_type); + + // output level + + self->data->connections.push_back( + self->data->effects_base->output_level->output_level.connect([=](const float& left, const float& right) { + self->data->global_output_level_left = left; + self->data->global_output_level_right = right; + + if (!schedule_signal_idle) { + return; + } + + g_idle_add((GSourceFunc) + + [](EffectsBox* self) { + if (!schedule_signal_idle) { + return G_SOURCE_REMOVE; + } + + gtk_label_set_text(self->label_global_output_level_left, + fmt::format("{0:.0f}", self->data->global_output_level_left).c_str()); + + gtk_label_set_text(self->label_global_output_level_right, + fmt::format("{0:.0f}", self->data->global_output_level_right).c_str()); + + gtk_widget_set_opacity( + GTK_WIDGET(self->saturation_icon), + (self->data->global_output_level_left > 0.0 || self->data->global_output_level_right > 0.0) + ? 1.0 + : 0.0); + + return G_SOURCE_REMOVE; + }, + self); + })); + + // spectrum array + + self->data->connections.push_back( + self->data->effects_base->spectrum->power.connect([=](uint rate, uint n_bands, std::vector magnitudes) { + if (!ui::chart::get_is_visible(self->spectrum_chart)) { + return; + } + + if (!schedule_signal_idle) { + return; + } + + if (self->data->spectrum_rate != rate || self->data->spectrum_n_bands != n_bands) { + self->data->spectrum_rate = rate; + self->data->spectrum_n_bands = n_bands; + + init_spectrum_frequency_axis(self); + } + + std::ranges::fill(self->data->spectrum_mag, 0.0F); + std::ranges::fill(self->data->spectrum_bin_count, 0U); + + // reducing the amount of data so we can plot them + + size_t last_j = 0; + + for (size_t n = 0U; n < self->data->spectrum_x_axis.size(); n++) { + for (size_t j = last_j; j < self->data->spectrum_freqs.size(); j++) { + if (self->data->spectrum_freqs[j] > self->data->spectrum_x_axis[n]) { + last_j = j; + + break; + } else { + self->data->spectrum_mag[n] += magnitudes[j]; + + self->data->spectrum_bin_count[n]++; + } + } + } + + for (size_t n = 0U; n < self->data->spectrum_bin_count.size(); n++) { + if (self->data->spectrum_bin_count[n] != 0U) { + continue; + } + + if (n > 0U && n < self->data->spectrum_bin_count.size() + 1) { + self->data->spectrum_mag[n] = self->data->spectrum_mag[n - 1U]; + } + } + + std::ranges::for_each(self->data->spectrum_mag, [](auto& v) { + v = 10.0F * std::log10(v); + + if (!std::isinf(v)) { + v = (v > util::minimum_db_level) ? v : util::minimum_db_level; + } else { + v = util::minimum_db_level; + } + }); + + ui::chart::set_y_data(self->spectrum_chart, self->data->spectrum_mag); + })); + + // As we are showing the window we want the filters to send notifications about level meters, etc + + self->data->effects_base->spectrum->bypass = !g_settings_get_boolean(self->settings_spectrum, "show"); + + self->data->effects_base->output_level->set_post_messages(true); + + // pipeline latency + + gtk_label_set_text( + self->latency_status, + fmt::format(ui::get_user_locale(), " {0:.1Lf} ms", self->data->effects_base->get_pipeline_latency()).c_str()); + + self->data->connections.push_back(self->data->effects_base->pipeline_latency.connect([=](const float& v) { + self->data->pipeline_latency_ms = v; + + if (!schedule_signal_idle) { + return; + } + + g_idle_add( + (GSourceFunc) + + [](EffectsBox* self) { + if (!schedule_signal_idle) { + return G_SOURCE_REMOVE; + } + + gtk_label_set_text( + self->latency_status, + fmt::format(ui::get_user_locale(), " {0:.1Lf} ms", self->data->pipeline_latency_ms).c_str()); + + return G_SOURCE_REMOVE; + }, + self); + })); +} + +void realize(GtkWidget* widget) { + schedule_signal_idle = true; + + GTK_WIDGET_CLASS(effects_box_parent_class)->realize(widget); +} + +void unroot(GtkWidget* widget) { + schedule_signal_idle = false; + + GTK_WIDGET_CLASS(effects_box_parent_class)->unroot(widget); +} + +void dispose(GObject* object) { + auto* self = EE_EFFECTS_BOX(object); + + schedule_signal_idle = false; + + self->data->effects_base->spectrum->bypass = true; + + self->data->effects_base->output_level->set_post_messages(false); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections_spectrum) { + g_signal_handler_disconnect(self->settings_spectrum, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections_spectrum.clear(); + + g_object_unref(self->app_settings); + g_object_unref(self->settings_spectrum); + + util::debug("disposed"); + + G_OBJECT_CLASS(effects_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_EFFECTS_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(effects_box_parent_class)->finalize(object); +} + +void effects_box_class_init(EffectsBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + widget_class->realize = realize; + widget_class->unroot = unroot; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::effects_box_ui); + + gtk_widget_class_bind_template_child(widget_class, EffectsBox, stack); + gtk_widget_class_bind_template_child(widget_class, EffectsBox, device_state); + gtk_widget_class_bind_template_child(widget_class, EffectsBox, latency_status); + gtk_widget_class_bind_template_child(widget_class, EffectsBox, label_global_output_level_left); + gtk_widget_class_bind_template_child(widget_class, EffectsBox, label_global_output_level_right); + gtk_widget_class_bind_template_child(widget_class, EffectsBox, toggle_listen_mic); + gtk_widget_class_bind_template_child(widget_class, EffectsBox, menubutton_blocklist); + gtk_widget_class_bind_template_child(widget_class, EffectsBox, saturation_icon); + + gtk_widget_class_bind_template_callback(widget_class, stack_visible_child_changed); + gtk_widget_class_bind_template_callback(widget_class, on_listen_mic_toggled); +} + +void effects_box_init(EffectsBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + schedule_signal_idle = false; + + self->app_settings = g_settings_new(tags::app::id); + self->settings_spectrum = g_settings_new(tags::schema::spectrum::id); + + self->spectrum_chart = ui::chart::create(); + + self->appsBox = ui::apps_box::create(); + self->pluginsBox = ui::plugins_box::create(); + self->blocklist_menu = ui::blocklist_menu::create(); + + gtk_menu_button_set_popover(self->menubutton_blocklist, GTK_WIDGET(self->blocklist_menu)); + + setup_spectrum(self); + + gtk_box_insert_child_after(GTK_BOX(self), GTK_WIDGET(self->spectrum_chart), nullptr); + + g_signal_connect(GTK_WIDGET(self->spectrum_chart), "show", G_CALLBACK(+[](GtkWidget* widget, EffectsBox* self) { + self->data->effects_base->spectrum->bypass = false; + }), + self); + + g_signal_connect(GTK_WIDGET(self->spectrum_chart), "hide", G_CALLBACK(+[](GtkWidget* widget, EffectsBox* self) { + self->data->effects_base->spectrum->bypass = true; + }), + self); +} + +auto create() -> EffectsBox* { + return static_cast(g_object_new(EE_TYPE_EFFECTS_BOX, nullptr)); +} + +} // namespace ui::effects_box diff --git a/src/equalizer.cpp b/src/equalizer.cpp new file mode 100644 index 0000000..227c613 --- /dev/null +++ b/src/equalizer.cpp @@ -0,0 +1,266 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "equalizer.hpp" + +using namespace std::string_literals; + +Equalizer::Equalizer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + const std::string& schema_channel, + const std::string& schema_channel_left_path, + const std::string& schema_channel_right_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::equalizer, schema, schema_path, pipe_manager), + settings_left(g_settings_new_with_path(schema_channel.c_str(), schema_channel_left_path.c_str())), + settings_right(g_settings_new_with_path(schema_channel.c_str(), schema_channel_right_path.c_str())), + lv2_wrapper(std::make_unique("http://lsp-plug.in/plugins/lv2/para_equalizer_x32_lr")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://lsp-plug.in/plugins/lv2/para_equalizer_x32_lr is not installed"); + } + + lv2_wrapper->bind_key_enum<"mode", "mode">(settings); + + bind_bands(std::make_index_sequence()); + + on_split_channels(); + + gconnections.push_back(g_signal_connect(settings, "changed::num-bands", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + const uint nbands = g_settings_get_int(settings, key); + + const bool split = g_settings_get_boolean(settings, "split-channels") == 1; + + using namespace tags::equalizer; + + for (uint n = 0U; n < self->max_bands; n++) { + if (n < nbands) { + g_settings_set_enum(self->settings_left, band_type[n], 1); + + if (split) { + g_settings_set_enum(self->settings_right, band_type[n], 1); + } + } else { + // turn off unused bands + g_settings_set_enum(self->settings_left, band_type[n], 0); + + if (split) { + g_settings_set_enum(self->settings_right, band_type[n], 0); + } + } + } + }), + this)); + + gconnections.push_back(g_signal_connect( + settings, "changed::split-channels", + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { self->on_split_channels(); }), this)); + + setup_input_output_gain(); +} + +Equalizer::~Equalizer() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + for (auto& handler_id : this->gconnections_unified) { + g_signal_handler_disconnect(this->settings_left, handler_id); + } + + this->gconnections_unified.clear(); + + util::debug(log_tag + name + " destroyed"); +} + +void Equalizer::on_split_channels() { + if (g_settings_get_boolean(settings, "split-channels") == 1) { + for (auto& handler_id : gconnections_unified) { + g_signal_handler_disconnect(settings_left, handler_id); + } + + gconnections_unified.clear(); + + return; + } + + using namespace tags::equalizer; + + for (uint n = 0U; n < max_bands; n++) { + g_settings_set_enum(settings_right, band_type[n], g_settings_get_enum(settings_left, band_type[n])); + + g_settings_set_enum(settings_right, band_mode[n], g_settings_get_enum(settings_left, band_mode[n])); + + g_settings_set_enum(settings_right, band_slope[n], g_settings_get_enum(settings_left, band_slope[n])); + + g_settings_set_boolean(settings_right, band_solo[n], g_settings_get_boolean(settings_left, band_solo[n])); + + g_settings_set_boolean(settings_right, band_mute[n], g_settings_get_boolean(settings_left, band_mute[n])); + + g_settings_set_double(settings_right, band_frequency[n], g_settings_get_double(settings_left, band_frequency[n])); + + g_settings_set_double(settings_right, band_gain[n], g_settings_get_double(settings_left, band_gain[n])); + + g_settings_set_double(settings_right, band_q[n], g_settings_get_double(settings_left, band_q[n])); + + /* + When in unified mode we want settings applied to the left channel to be propagated to the right channel + database + */ + + gconnections_unified.push_back(g_signal_connect(settings_left, ("changed::"s + band_gain[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { + g_settings_set_double(self->settings_right, key, + g_settings_get_double(settings, key)); + }), + this)); + + gconnections_unified.push_back(g_signal_connect(settings_left, ("changed::"s + band_frequency[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { + g_settings_set_double(self->settings_right, key, + g_settings_get_double(settings, key)); + }), + this)); + + gconnections_unified.push_back(g_signal_connect(settings_left, ("changed::"s + band_q[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { + g_settings_set_double(self->settings_right, key, + g_settings_get_double(settings, key)); + }), + this)); + + gconnections_unified.push_back(g_signal_connect(settings_left, ("changed::"s + band_type[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { + g_settings_set_enum(self->settings_right, key, + g_settings_get_enum(settings, key)); + }), + this)); + + gconnections_unified.push_back(g_signal_connect(settings_left, ("changed::"s + band_mode[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { + g_settings_set_enum(self->settings_right, key, + g_settings_get_enum(settings, key)); + }), + this)); + + gconnections_unified.push_back(g_signal_connect(settings_left, ("changed::"s + band_slope[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { + g_settings_set_enum(self->settings_right, key, + g_settings_get_enum(settings, key)); + }), + this)); + + gconnections_unified.push_back(g_signal_connect(settings_left, ("changed::"s + band_mute[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, Equalizer* self) { + g_settings_set_boolean(self->settings_right, key, + g_settings_get_boolean(settings, key)); + }), + this)); + } +} + +void Equalizer::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Equalizer::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("out_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + util::idle_add([=, this]() { + if (!post_messages) { + return; + } + + latency.emit(latency_port_value); + }); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Equalizer::get_latency_seconds() -> float { + return latency_port_value; +} \ No newline at end of file diff --git a/src/equalizer_band_box.cpp b/src/equalizer_band_box.cpp new file mode 100644 index 0000000..d27aad5 --- /dev/null +++ b/src/equalizer_band_box.cpp @@ -0,0 +1,202 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "equalizer_band_box.hpp" + +namespace ui::equalizer_band_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + int index; + + std::vector gconnections; +}; + +struct _EqualizerBandBox { + GtkBox parent_instance; + + GtkComboBoxText *band_type, *band_mode, *band_slope; + + GtkButton *reset_frequency, *reset_quality; + + GtkToggleButton *band_solo, *band_mute; + + GtkScale* band_scale; + + GtkSpinButton *band_frequency, *band_quality; + + GtkPopover* popover_menu; + + GSettings *settings, *app_settings; + + Data* data; +}; + +G_DEFINE_TYPE(EqualizerBandBox, equalizer_band_box, GTK_TYPE_BOX) + +void on_reset_quality(EqualizerBandBox* self, GtkButton* btn) { + g_settings_reset(self->settings, tags::equalizer::band_q[self->data->index]); +} + +void on_reset_frequency(EqualizerBandBox* self, GtkButton* btn) { + g_settings_reset(self->settings, tags::equalizer::band_frequency[self->data->index]); +} + +auto set_band_label(EqualizerBandBox* self, double value) -> const char* { + if (self->data == nullptr) { + return g_strdup(""); + } + + if (value > 1000.0) { + return g_strdup(fmt::format(ui::get_user_locale(), "{0:.1Lf} kHz", value / 1000.0).c_str()); + } else { + return g_strdup(fmt::format(ui::get_user_locale(), "{0:.1Lf} Hz", value).c_str()); + } +} + +auto set_band_quality_label(EqualizerBandBox* self, double value) -> const char* { + if (self->data == nullptr) { + return g_strdup(""); + } + + return g_strdup(fmt::format(ui::get_user_locale(), "Q {0:.2Lf}", value).c_str()); +} + +auto set_band_width_label(EqualizerBandBox* self, double quality, double frequency) -> const char* { + if (self->data == nullptr) { + return g_strdup(""); + } + + if (quality > 0.0) { + return g_strdup(fmt::format(ui::get_user_locale(), "{0:.1Lf} Hz", frequency / quality).c_str()); + } else { + return g_strdup(_("infinity")); + } +} + +auto set_band_scale_sensitive(EqualizerBandBox* self, const char* active_id) -> gboolean { + if (g_strcmp0(active_id, "Off") == 0 || g_strcmp0(active_id, "Hi-pass") == 0 || + g_strcmp0(active_id, "Lo-pass") == 0) { + return 0; + } + + return 1; +} + +void setup(EqualizerBandBox* self, GSettings* settings, int index) { + self->data->index = index; + self->settings = settings; + + g_settings_bind(settings, tags::equalizer::band_gain[index], gtk_range_get_adjustment(GTK_RANGE(self->band_scale)), + "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, tags::equalizer::band_frequency[index], + gtk_spin_button_get_adjustment(self->band_frequency), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, tags::equalizer::band_q[index], gtk_spin_button_get_adjustment(self->band_quality), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, tags::equalizer::band_solo[index], self->band_solo, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, tags::equalizer::band_mute[index], self->band_mute, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, tags::equalizer::band_type[index], self->band_type, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, tags::equalizer::band_mode[index], self->band_mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, tags::equalizer::band_slope[index], self->band_slope, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_EQUALIZER_BAND_BOX(object); + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->gconnections.clear(); + + g_object_unref(self->app_settings); + + util::debug("index: " + util::to_string(self->data->index) + " disposed"); + + G_OBJECT_CLASS(equalizer_band_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_EQUALIZER_BAND_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(equalizer_band_box_parent_class)->finalize(object); +} + +void equalizer_band_box_class_init(EqualizerBandBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::equalizer_band_ui); + + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_type); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_mode); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_slope); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, reset_frequency); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, reset_quality); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_solo); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_mute); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_scale); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_frequency); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, band_quality); + gtk_widget_class_bind_template_child(widget_class, EqualizerBandBox, popover_menu); + + gtk_widget_class_bind_template_callback(widget_class, on_reset_quality); + gtk_widget_class_bind_template_callback(widget_class, on_reset_frequency); + gtk_widget_class_bind_template_callback(widget_class, set_band_scale_sensitive); + gtk_widget_class_bind_template_callback(widget_class, set_band_label); + gtk_widget_class_bind_template_callback(widget_class, set_band_quality_label); + gtk_widget_class_bind_template_callback(widget_class, set_band_width_label); +} + +void equalizer_band_box_init(EqualizerBandBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->app_settings = g_settings_new(tags::app::id); + + g_settings_bind(self->app_settings, "autohide-popovers", self->popover_menu, "autohide", G_SETTINGS_BIND_DEFAULT); + + prepare_scales<"">(self->band_scale); + + prepare_spinbuttons<"Hz">(self->band_frequency); + prepare_spinbuttons<"">(self->band_quality); +} + +auto create() -> EqualizerBandBox* { + return static_cast(g_object_new(EE_TYPE_EQUALIZER_BAND_BOX, nullptr)); +} + +} // namespace ui::equalizer_band_box diff --git a/src/equalizer_preset.cpp b/src/equalizer_preset.cpp new file mode 100644 index 0000000..dbc9d5d --- /dev/null +++ b/src/equalizer_preset.cpp @@ -0,0 +1,135 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "equalizer_preset.hpp" + +using namespace tags::equalizer; + +EqualizerPreset::EqualizerPreset() + : input_settings_left( + g_settings_new_with_path(tags::schema::equalizer::channel_id, tags::schema::equalizer::input_path_left)), + input_settings_right( + g_settings_new_with_path(tags::schema::equalizer::channel_id, tags::schema::equalizer::input_path_right)), + output_settings_left( + g_settings_new_with_path(tags::schema::equalizer::channel_id, tags::schema::equalizer::output_path_left)), + output_settings_right( + g_settings_new_with_path(tags::schema::equalizer::channel_id, tags::schema::equalizer::output_path_right)) { + input_settings = g_settings_new_with_path(tags::schema::equalizer::id, tags::schema::equalizer::input_path); + + output_settings = g_settings_new_with_path(tags::schema::equalizer::id, tags::schema::equalizer::output_path); +} + +EqualizerPreset::~EqualizerPreset() { + g_object_unref(input_settings_left); + g_object_unref(input_settings_right); + g_object_unref(output_settings_left); + g_object_unref(output_settings_right); +} + +void EqualizerPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["equalizer"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["equalizer"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["equalizer"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["equalizer"]["mode"] = util::gsettings_get_string(settings, "mode"); + + json[section]["equalizer"]["split-channels"] = g_settings_get_boolean(settings, "split-channels") != 0; + + const auto nbands = g_settings_get_int(settings, "num-bands"); + + json[section]["equalizer"]["num-bands"] = nbands; + + if (section == "input") { + save_channel(json[section]["equalizer"]["left"], input_settings_left, nbands); + save_channel(json[section]["equalizer"]["right"], input_settings_right, nbands); + } else if (section == "output") { + save_channel(json[section]["equalizer"]["left"], output_settings_left, nbands); + save_channel(json[section]["equalizer"]["right"], output_settings_right, nbands); + } +} + +void EqualizerPreset::save_channel(nlohmann::json& json, GSettings* settings, const int& nbands) { + for (int n = 0; n < nbands; n++) { + const auto bandn = band_id[n]; + + json[bandn]["type"] = util::gsettings_get_string(settings, band_type[n]); + + json[bandn]["mode"] = util::gsettings_get_string(settings, band_mode[n]); + + json[bandn]["slope"] = util::gsettings_get_string(settings, band_slope[n]); + + json[bandn]["solo"] = g_settings_get_boolean(settings, band_solo[n]) != 0; + + json[bandn]["mute"] = g_settings_get_boolean(settings, band_mute[n]) != 0; + + json[bandn]["gain"] = g_settings_get_double(settings, band_gain[n]); + + json[bandn]["frequency"] = g_settings_get_double(settings, band_frequency[n]); + + json[bandn]["q"] = g_settings_get_double(settings, band_q[n]); + } +} + +void EqualizerPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("equalizer"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("equalizer"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("equalizer"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("equalizer"), settings, "mode", "mode"); + + update_key(json.at(section).at("equalizer"), settings, "num-bands", "num-bands"); + + update_key(json.at(section).at("equalizer"), settings, "split-channels", "split-channels"); + + const auto nbands = g_settings_get_int(settings, "num-bands"); + + if (section == "input") { + load_channel(json.at(section).at("equalizer").at("left"), input_settings_left, nbands); + load_channel(json.at(section).at("equalizer").at("right"), input_settings_right, nbands); + } else if (section == "output") { + load_channel(json.at(section).at("equalizer").at("left"), output_settings_left, nbands); + load_channel(json.at(section).at("equalizer").at("right"), output_settings_right, nbands); + } +} + +void EqualizerPreset::load_channel(const nlohmann::json& json, GSettings* settings, const int& nbands) { + for (int n = 0; n < nbands; n++) { + const auto bandn = "band" + util::to_string(n); + + update_key(json.at(bandn), settings, band_type[n], "type"); + + update_key(json.at(bandn), settings, band_mode[n], "mode"); + + update_key(json.at(bandn), settings, band_slope[n], "slope"); + + update_key(json.at(bandn), settings, band_solo[n], "solo"); + + update_key(json.at(bandn), settings, band_mute[n], "mute"); + + update_key(json.at(bandn), settings, band_gain[n], "gain"); + + update_key(json.at(bandn), settings, band_frequency[n], "frequency"); + + update_key(json.at(bandn), settings, band_q[n], "q"); + } +} diff --git a/src/equalizer_ui.cpp b/src/equalizer_ui.cpp new file mode 100644 index 0000000..0e874e5 --- /dev/null +++ b/src/equalizer_ui.cpp @@ -0,0 +1,618 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "equalizer_ui.hpp" + +namespace ui::equalizer_box { + +using namespace tags::equalizer; + +constexpr int max_bands = 32U; + +enum Channel { left, right }; + +struct APO_Band { + std::string type; + float freq = 1000.0f; + float gain = 0.0f; + float quality = (1.0f / std::numbers::sqrt2_v); +}; + +std::unordered_map const FilterTypeMap = { + {"PK", "Bell"}, {"MODAL", "Bell"}, {"PEQ", "Bell"}, {"LP", "Lo-pass"}, {"LPQ", "Lo-pass"}, + {"HP", "Hi-pass"}, {"HPQ", "Hi-pass"}, {"LS", "Lo-shelf"}, {"LSC", "Lo-shelf"}, {"LS 6DB", "Lo-shelf"}, + {"LS 12DB", "Lo-shelf"}, {"HS", "Hi-shelf"}, {"HSC", "Hi-shelf"}, {"HS 6DB", "Hi-shelf"}, {"HS 12DB", "Hi-shelf"}, + {"NO", "Notch"}, {"AP", "Allpass"}}; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + app::Application* application; + + std::shared_ptr equalizer; + + std::vector connections; + + std::vector gconnections, gconnections_left, gconnections_right; +}; + +struct _EqualizerBox { + GtkBox parent_instance; + + GtkOverlay* overlay; + + AdwToastOverlay* toast_overlay; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkStack* stack; + + GtkBox *bands_box_left, *bands_box_right; + + GtkSpinButton* nbands; + + GtkComboBoxText* mode; + + GtkToggleButton* split_channels; + + GSettings *settings, *settings_left, *settings_right; + + Data* data; +}; + +G_DEFINE_TYPE(EqualizerBox, equalizer_box, GTK_TYPE_BOX) + +void on_reset(EqualizerBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); + util::reset_all_keys_except(self->settings_left); + util::reset_all_keys_except(self->settings_right); +} + +void on_flat_response(EqualizerBox* self, GtkButton* btn) { + for (int n = 0; n < max_bands; n++) { + g_settings_reset(self->settings_left, band_gain[n]); + + g_settings_reset(self->settings_right, band_gain[n]); + } +} + +void on_calculate_frequencies(EqualizerBox* self, GtkButton* btn) { + constexpr double min_freq = 20.0; + constexpr double max_freq = 20000.0; + + double freq0 = min_freq; + double freq1 = 0.0; + + const auto nbands = g_settings_get_int(self->settings, "num-bands"); + + // code taken from gstreamer equalizer sources: gstiirequalizer.c + // function: gst_iir_equalizer_compute_frequencies + + const double step = std::pow(max_freq / min_freq, 1.0 / static_cast(nbands)); + + for (int n = 0; n < nbands; n++) { + freq1 = freq0 * step; + + const double freq = freq0 + 0.5 * (freq1 - freq0); + const double width = freq1 - freq0; + const double q = freq / width; + + // std::cout << n << "\t" << freq << "\t" << width << std::endl; + + g_settings_set_double(self->settings_left, band_frequency[n], freq); + g_settings_set_double(self->settings_left, band_q[n], q); + + g_settings_set_double(self->settings_right, band_frequency[n], freq); + g_settings_set_double(self->settings_right, band_q[n], q); + + freq0 = freq1; + } +} + +auto parse_apo_preamp(const std::string& line, double& preamp) -> bool { + std::smatch matches; + + static const auto re_preamp = std::regex(R"(preamp\s*+:\s*+([+-]?+\d++(?:\.\d++)?+)\s*+db)", std::regex::icase); + + std::regex_search(line, matches, re_preamp); + + if (matches.size() != 2U) { + return false; + } + + return util::str_to_num(matches.str(1), preamp); +} + +auto parse_apo_filter(const std::string& line, struct APO_Band& filter) -> std::string { + std::smatch matches; + + static const auto re_filter = + std::regex(R"(filter\s*+\d*+\s*+:\s*+on\s++([a-z]++(?:\s++(?:6|12)db)?+))", std::regex::icase); + + std::regex_search(line, matches, re_filter); + + if (matches.size() != 2U) { + return ""; + } + + // Possible multiple whitespaces are replaced by a single space + auto apo_filter = std::regex_replace(matches.str(1), std::regex(R"(\s++)"), " "); + + // Filter string needed in uppercase for unordered_map + std::transform(apo_filter.begin(), apo_filter.end(), apo_filter.begin(), + [](unsigned char c) { return std::toupper(c); }); + + try { + filter.type = FilterTypeMap.at(apo_filter); + } catch (...) { + filter.type = "Off"; + } + + return apo_filter; +} + +auto parse_apo_frequency(const std::string& line, struct APO_Band& filter) -> bool { + std::smatch matches; + + static const auto re_freq = std::regex(R"(fc\s++(\d++(?:,\d++)?+(?:\.\d++)?+)\s*+hz)", std::regex::icase); + + std::regex_search(line, matches, re_freq); + + if (matches.size() != 2U) { + return false; + } + + // Frequency could have a comma as thousands separator + // to be removed for the correct float conversion. + return util::str_to_num(std::regex_replace(matches.str(1), std::regex(","), ""), filter.freq); +} + +auto parse_apo_gain(const std::string& line, struct APO_Band& filter) -> bool { + std::smatch matches; + + static const auto re_gain = std::regex(R"(gain\s++([+-]?+\d++(?:\.\d++)?+)\s*+db)", std::regex::icase); + + std::regex_search(line, matches, re_gain); + + if (matches.size() != 2U) { + return false; + } + + return util::str_to_num(matches.str(1), filter.gain); +} + +auto parse_apo_quality(const std::string& line, struct APO_Band& filter) -> bool { + std::smatch matches; + + static const auto re_quality = std::regex(R"(q\s++(\d++(?:\.\d++)?+))", std::regex::icase); + + std::regex_search(line, matches, re_quality); + + if (matches.size() != 2U) { + return false; + } + + return util::str_to_num(matches.str(1), filter.quality); +} + +auto parse_apo_config_line(const std::string& line, struct APO_Band& filter) -> bool { + auto filter_type = parse_apo_filter(line, filter); + + if (filter_type.empty()) { + return false; + } + + // The configuration line refers to an existing APO filter, so we try to get the other parameters. + parse_apo_frequency(line, filter); + + // Inspired by funtion "para_equalizer_ui::import_rew_file(const LSPString*)" + // inside 'lsp-plugins/src/ui/plugins/para_equalizer_ui.cpp' at + // https://github.com/sadko4u/lsp-plugins + if (filter_type == "PK" || filter_type == "MODAL" || filter_type == "PEQ") { + parse_apo_gain(line, filter); + + parse_apo_quality(line, filter); + } else if (filter_type == "LP" || filter_type == "LPQ" || filter_type == "HP" || filter_type == "HPQ") { + parse_apo_quality(line, filter); + } else if (filter_type == "LS" || filter_type == "LSC" || filter_type == "HS" || filter_type == "HSC") { + parse_apo_gain(line, filter); + + if (!parse_apo_quality(line, filter)) { + filter.quality = 2.0f / 3.0f; + } + } else if (filter_type == "LS 6DB") { + filter.freq = filter.freq * 2.0f / 3.0f; + filter.quality = std::numbers::sqrt2_v / 3.0f; + + parse_apo_gain(line, filter); + } else if (filter_type == "LS 12DB") { + filter.freq = filter.freq * 3.0f / 2.0f; + + parse_apo_gain(line, filter); + } else if (filter_type == "HS 6DB") { + filter.freq = filter.freq / (1.0f / std::numbers::sqrt2_v); + filter.quality = std::numbers::sqrt2_v / 3.0f; + + parse_apo_gain(line, filter); + } else if (filter_type == "HS 12DB") { + filter.freq = filter.freq * (1.0f / std::numbers::sqrt2_v); + + parse_apo_gain(line, filter); + } else if (filter_type == "NO") { + if (!parse_apo_quality(line, filter)) { + filter.quality = 100.0f / 3.0f; + } + } else if (filter_type == "AP") { + parse_apo_quality(line, filter); + } + + // If the APO filter type is different than the ones specified above, + // it's set as Off since it's not supported by LSP Equalizer. + // Default values are assumed. + return true; +} + +auto import_apo_preset(EqualizerBox* self, const std::string& file_path) -> bool { + std::filesystem::path p{file_path}; + + if (!std::filesystem::is_regular_file(p)) { + return false; + } + + std::ifstream eq_file; + eq_file.open(p.c_str()); + + std::vector bands; + double preamp = 0.0; + + if (eq_file.is_open()) { + for (std::string line; getline(eq_file, line);) { + if (struct APO_Band filter; parse_apo_config_line(line, filter)) { + bands.push_back(filter); + } else { + parse_apo_preamp(line, preamp); + } + } + } + + eq_file.close(); + + if (bands.empty()) { + return false; + } + + // Apply APO parameters obtained + g_settings_set_int(self->settings, "num-bands", static_cast(bands.size())); + g_settings_set_double(self->settings, "input-gain", preamp); + + std::vector settings_channels; + + // Whether to apply the parameters to both channels or the selected one only + if (g_settings_get_boolean(self->settings, "split-channels") == 0) { + settings_channels.push_back(self->settings_left); + settings_channels.push_back(self->settings_right); + } else if (g_strcmp0(gtk_stack_get_visible_child_name(self->stack), "page_left_channel") == 0) { + settings_channels.push_back(self->settings_left); + } else { + settings_channels.push_back(self->settings_right); + } + + for (int n = 0, apo_bands = static_cast(bands.size()); n < max_bands; n++) { + for (auto* channel : settings_channels) { + if (n < apo_bands) { + g_settings_set_string(channel, band_type[n], bands[n].type.c_str()); + g_settings_set_string(channel, band_mode[n], "APO (DR)"); + g_settings_set_double(channel, band_frequency[n], bands[n].freq); + g_settings_set_double(channel, band_gain[n], bands[n].gain); + g_settings_set_double(channel, band_q[n], bands[n].quality); + } else { + g_settings_set_string(channel, band_type[n], "Off"); + g_settings_reset(channel, band_mode[n]); + g_settings_reset(channel, band_frequency[n]); + g_settings_reset(channel, band_gain[n]); + g_settings_reset(channel, band_q[n]); + } + + g_settings_reset(channel, band_slope[n]); + g_settings_reset(channel, band_solo[n]); + g_settings_reset(channel, band_mute[n]); + } + } + + return true; +} + +void on_import_apo_preset_clicked(EqualizerBox* self, GtkButton* btn) { + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->data->application)); + + auto* dialog = gtk_file_chooser_native_new(_("Import APO Preset File"), active_window, GTK_FILE_CHOOSER_ACTION_OPEN, + _("Open"), _("Cancel")); + + auto* filter = gtk_file_filter_new(); + + gtk_file_filter_add_pattern(filter, "*.txt"); + gtk_file_filter_set_name(filter, _("APO Presets")); + + gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); + + g_signal_connect(dialog, "response", G_CALLBACK(+[](GtkNativeDialog* dialog, int response, EqualizerBox* self) { + if (response == GTK_RESPONSE_ACCEPT) { + auto* chooser = GTK_FILE_CHOOSER(dialog); + auto* file = gtk_file_chooser_get_file(chooser); + auto* path = g_file_get_path(file); + + if (!import_apo_preset(self, path)) { + // notify error on APO preset loading + ui::show_fixed_toast( + self->toast_overlay, + _("APO Preset Not Loaded. File Format May Be Wrong. Please Check Its Content.")); + } + + g_free(path); + + g_object_unref(file); + } + + g_object_unref(dialog); + }), + self); + + gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(dialog), 1); + gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog)); +} + +template +void build_channel_bands(EqualizerBox* self, const int& nbands, const bool& split_mode) { + GSettings* settings; + GtkBox* bands_box; + + if constexpr (channel == Channel::left) { + settings = self->settings_left; + + bands_box = self->bands_box_left; + } else if constexpr (channel == Channel::right) { + settings = self->settings_right; + + bands_box = self->bands_box_right; + } + + for (int n = 0; n < nbands; n++) { + auto band_box = ui::equalizer_band_box::create(); + + ui::equalizer_band_box::setup(band_box, settings, n); + + gtk_box_append(bands_box, GTK_WIDGET(band_box)); + } +} + +void build_all_bands(EqualizerBox* self) { + for (auto& handler_id : self->data->gconnections_left) { + g_signal_handler_disconnect(self->settings_left, handler_id); + } + + for (auto& handler_id : self->data->gconnections_right) { + g_signal_handler_disconnect(self->settings_right, handler_id); + } + + self->data->gconnections_left.clear(); + self->data->gconnections_right.clear(); + + for (auto* child = gtk_widget_get_first_child(GTK_WIDGET(self->bands_box_left)); child != nullptr;) { + auto* next_child = gtk_widget_get_next_sibling(child); + + gtk_box_remove(self->bands_box_left, child); + + child = next_child; + } + + for (auto* child = gtk_widget_get_first_child(GTK_WIDGET(self->bands_box_right)); child != nullptr;) { + auto* next_child = gtk_widget_get_next_sibling(child); + + gtk_box_remove(self->bands_box_right, child); + + child = next_child; + } + + const auto split = g_settings_get_boolean(self->settings, "split-channels") != 0; + + const auto nbands = g_settings_get_int(self->settings, "num-bands"); + + build_channel_bands(self, nbands, split); + + if (split) { + build_channel_bands(self, nbands, split); + } +} + +void setup(EqualizerBox* self, + std::shared_ptr equalizer, + const std::string& schema_path, + app::Application* application) { + self->data->equalizer = equalizer; + + self->data->application = application; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::equalizer::id, schema_path.c_str()); + + self->settings_left = + g_settings_new_with_path(tags::schema::equalizer::channel_id, (schema_path + "leftchannel/").c_str()); + + self->settings_right = + g_settings_new_with_path(tags::schema::equalizer::channel_id, (schema_path + "rightchannel/").c_str()); + + equalizer->set_post_messages(true); + + build_all_bands(self); + + self->data->connections.push_back(equalizer->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(equalizer->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "num-bands", gtk_spin_button_get_adjustment(self->nbands), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "split-channels", self->split_channels, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mode", self->mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::num-bands", + G_CALLBACK(+[](GSettings* settings, char* key, EqualizerBox* self) { build_all_bands(self); }), self)); + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::split-channels", G_CALLBACK(+[](GSettings* settings, char* key, EqualizerBox* self) { + gtk_stack_set_visible_child_name(self->stack, "page_left_channel"); + + build_all_bands(self); + }), + self)); +} + +void dispose(GObject* object) { + auto* self = EE_EQUALIZER_BOX(object); + + self->data->equalizer->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + for (auto& handler_id : self->data->gconnections_left) { + g_signal_handler_disconnect(self->settings_left, handler_id); + } + + for (auto& handler_id : self->data->gconnections_right) { + g_signal_handler_disconnect(self->settings_right, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + self->data->gconnections_left.clear(); + self->data->gconnections_right.clear(); + + g_object_unref(self->settings); + g_object_unref(self->settings_left); + g_object_unref(self->settings_right); + + util::debug("disposed"); + + G_OBJECT_CLASS(equalizer_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_EQUALIZER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(equalizer_box_parent_class)->finalize(object); +} + +void equalizer_box_class_init(EqualizerBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::equalizer_ui); + + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, overlay); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, toast_overlay); + + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, stack); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, bands_box_left); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, bands_box_right); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, nbands); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, mode); + gtk_widget_class_bind_template_child(widget_class, EqualizerBox, split_channels); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + + gtk_widget_class_bind_template_callback(widget_class, on_flat_response); + gtk_widget_class_bind_template_callback(widget_class, on_calculate_frequencies); + gtk_widget_class_bind_template_callback(widget_class, on_import_apo_preset_clicked); +} + +void equalizer_box_init(EqualizerBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> EqualizerBox* { + return static_cast(g_object_new(EE_TYPE_EQUALIZER_BOX, nullptr)); +} + +} // namespace ui::equalizer_box diff --git a/src/exciter.cpp b/src/exciter.cpp new file mode 100644 index 0000000..02b9caa --- /dev/null +++ b/src/exciter.cpp @@ -0,0 +1,116 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "exciter.hpp" + +Exciter::Exciter(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::exciter, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://calf.sourceforge.net/plugins/Exciter")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://calf.sourceforge.net/plugins/Exciter is not installed"); + } + + lv2_wrapper->bind_key_double_db<"amount", "amount">(settings); + + lv2_wrapper->bind_key_double<"drive", "harmonics">(settings); + + lv2_wrapper->bind_key_double<"freq", "scope">(settings); + + lv2_wrapper->bind_key_double<"ceil", "ceil">(settings); + + lv2_wrapper->bind_key_double<"blend", "blend">(settings); + + lv2_wrapper->bind_key_bool<"ceil_active", "ceil-active">(settings); + + lv2_wrapper->bind_key_bool<"listen", "listen">(settings); + + setup_input_output_gain(); +} + +Exciter::~Exciter() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Exciter::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Exciter::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + /// harmonics needed as double for levelbar widget ui, so we convert it here + + harmonics_port_value = static_cast(lv2_wrapper->get_control_port_value("meter_drive")); + + if (!post_messages) { + return; + } + + harmonics.emit(harmonics_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Exciter::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/exciter_preset.cpp b/src/exciter_preset.cpp new file mode 100644 index 0000000..36b2b62 --- /dev/null +++ b/src/exciter_preset.cpp @@ -0,0 +1,66 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "exciter_preset.hpp" + +ExciterPreset::ExciterPreset() { + input_settings = g_settings_new_with_path(tags::schema::exciter::id, tags::schema::exciter::input_path); + + output_settings = g_settings_new_with_path(tags::schema::exciter::id, tags::schema::exciter::output_path); +} + +void ExciterPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["exciter"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["exciter"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["exciter"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["exciter"]["amount"] = g_settings_get_double(settings, "amount"); + + json[section]["exciter"]["harmonics"] = g_settings_get_double(settings, "harmonics"); + + json[section]["exciter"]["scope"] = g_settings_get_double(settings, "scope"); + + json[section]["exciter"]["ceil"] = g_settings_get_double(settings, "ceil"); + + json[section]["exciter"]["blend"] = g_settings_get_double(settings, "blend"); + + json[section]["exciter"]["ceil-active"] = g_settings_get_boolean(settings, "ceil-active") != 0; +} + +void ExciterPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("exciter"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("exciter"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("exciter"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("exciter"), settings, "amount", "amount"); + + update_key(json.at(section).at("exciter"), settings, "harmonics", "harmonics"); + + update_key(json.at(section).at("exciter"), settings, "scope", "scope"); + + update_key(json.at(section).at("exciter"), settings, "ceil", "ceil"); + + update_key(json.at(section).at("exciter"), settings, "blend", "blend"); + + update_key(json.at(section).at("exciter"), settings, "ceil-active", "ceil-active"); +} diff --git a/src/exciter_ui.cpp b/src/exciter_ui.cpp new file mode 100644 index 0000000..6e94f87 --- /dev/null +++ b/src/exciter_ui.cpp @@ -0,0 +1,223 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "exciter_ui.hpp" + +namespace ui::exciter_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr exciter; + + std::vector connections; + + std::vector gconnections; +}; + +struct _ExciterBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkLevelBar* harmonics_levelbar; + + GtkLabel* harmonics_levelbar_label; + + GtkSpinButton *ceil, *amount, *harmonics, *scope; + + GtkScale* blend; + + GtkToggleButton *ceil_active, *listen; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(ExciterBox, exciter_box, GTK_TYPE_BOX) + +void on_reset(ExciterBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(ExciterBox* self, std::shared_ptr exciter, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->exciter = exciter; + + self->settings = g_settings_new_with_path(tags::schema::exciter::id, schema_path.c_str()); + + exciter->set_post_messages(true); + + self->data->connections.push_back(exciter->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(exciter->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(exciter->harmonics.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->harmonics_levelbar) || !GTK_IS_LABEL(self->harmonics_levelbar_label)) { + return; + } + + gtk_level_bar_set_value(self->harmonics_levelbar, value); + gtk_label_set_text(self->harmonics_levelbar_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "amount", gtk_spin_button_get_adjustment(self->amount), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "harmonics", gtk_spin_button_get_adjustment(self->harmonics), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "scope", gtk_spin_button_get_adjustment(self->scope), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "ceil", gtk_spin_button_get_adjustment(self->ceil), "value", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "blend", gtk_range_get_adjustment(GTK_RANGE(self->blend)), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "listen", self->listen, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "ceil-active", self->ceil_active, "active", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_EXCITER_BOX(object); + + self->data->exciter->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(exciter_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_EXCITER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(exciter_box_parent_class)->finalize(object); +} + +void exciter_box_class_init(ExciterBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::exciter_ui); + + gtk_widget_class_bind_template_child(widget_class, ExciterBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, ExciterBox, harmonics_levelbar_label); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, harmonics_levelbar); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, ceil); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, amount); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, harmonics); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, scope); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, blend); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, ceil_active); + gtk_widget_class_bind_template_child(widget_class, ExciterBox, listen); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void exciter_box_init(ExciterBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->amount); + + prepare_spinbuttons<"Hz">(self->scope, self->ceil); + + prepare_spinbuttons<"">(self->harmonics); + + prepare_scales<"">(self->blend); +} + +auto create() -> ExciterBox* { + return static_cast(g_object_new(EE_TYPE_EXCITER_BOX, nullptr)); +} + +} // namespace ui::exciter_box diff --git a/src/filter.cpp b/src/filter.cpp new file mode 100644 index 0000000..98afda3 --- /dev/null +++ b/src/filter.cpp @@ -0,0 +1,98 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "filter.hpp" + +Filter::Filter(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::filter, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://calf.sourceforge.net/plugins/Filter")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://calf.sourceforge.net/plugins/Filter is not installed"); + } + + lv2_wrapper->bind_key_double<"freq", "frequency">(settings); + + lv2_wrapper->bind_key_double_db<"res", "resonance">(settings); + + lv2_wrapper->bind_key_enum<"mode", "mode">(settings); + + setup_input_output_gain(); +} + +Filter::~Filter() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Filter::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Filter::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Filter::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/filter_preset.cpp b/src/filter_preset.cpp new file mode 100644 index 0000000..c91ce42 --- /dev/null +++ b/src/filter_preset.cpp @@ -0,0 +1,58 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "filter_preset.hpp" + +FilterPreset::FilterPreset() { + input_settings = g_settings_new_with_path(tags::schema::filter::id, tags::schema::filter::input_path); + + output_settings = g_settings_new_with_path(tags::schema::filter::id, tags::schema::filter::output_path); +} + +void FilterPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["filter"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["filter"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["filter"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["filter"]["frequency"] = g_settings_get_double(settings, "frequency"); + + json[section]["filter"]["resonance"] = g_settings_get_double(settings, "resonance"); + + json[section]["filter"]["mode"] = util::gsettings_get_string(settings, "mode"); + + json[section]["filter"]["inertia"] = g_settings_get_double(settings, "inertia"); +} + +void FilterPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("filter"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("filter"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("filter"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("filter"), settings, "frequency", "frequency"); + + update_key(json.at(section).at("filter"), settings, "resonance", "resonance"); + + update_key(json.at(section).at("filter"), settings, "mode", "mode"); + + update_key(json.at(section).at("filter"), settings, "inertia", "inertia"); +} diff --git a/src/filter_ui.cpp b/src/filter_ui.cpp new file mode 100644 index 0000000..4af4376 --- /dev/null +++ b/src/filter_ui.cpp @@ -0,0 +1,191 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "filter_ui.hpp" + +namespace ui::filter_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr filter; + + std::vector connections; + + std::vector gconnections; +}; + +struct _FilterBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkComboBoxText* mode; + + GtkSpinButton *frequency, *resonance, *inertia; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(FilterBox, filter_box, GTK_TYPE_BOX) + +void on_reset(FilterBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(FilterBox* self, std::shared_ptr filter, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->filter = filter; + + self->settings = g_settings_new_with_path(tags::schema::filter::id, schema_path.c_str()); + + filter->set_post_messages(true); + + self->data->connections.push_back(filter->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(filter->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "frequency", gtk_spin_button_get_adjustment(self->frequency), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "resonance", gtk_spin_button_get_adjustment(self->resonance), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "inertia", gtk_spin_button_get_adjustment(self->inertia), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mode", self->mode, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_FILTER_BOX(object); + + self->data->filter->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(filter_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_FILTER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(filter_box_parent_class)->finalize(object); +} + +void filter_box_class_init(FilterBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::filter_ui); + + gtk_widget_class_bind_template_child(widget_class, FilterBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, FilterBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, FilterBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, FilterBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, FilterBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, FilterBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, FilterBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, FilterBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, FilterBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, FilterBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, FilterBox, mode); + gtk_widget_class_bind_template_child(widget_class, FilterBox, frequency); + gtk_widget_class_bind_template_child(widget_class, FilterBox, resonance); + gtk_widget_class_bind_template_child(widget_class, FilterBox, inertia); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void filter_box_init(FilterBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"Hz">(self->frequency); + prepare_spinbuttons<"dB">(self->resonance); + prepare_spinbuttons<"ms">(self->inertia); +} + +auto create() -> FilterBox* { + return static_cast(g_object_new(EE_TYPE_FILTER_BOX, nullptr)); +} + +} // namespace ui::filter_box diff --git a/src/fir_filter_bandpass.cpp b/src/fir_filter_bandpass.cpp new file mode 100644 index 0000000..aa4d5b0 --- /dev/null +++ b/src/fir_filter_bandpass.cpp @@ -0,0 +1,54 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "fir_filter_bandpass.hpp" + +FirFilterBandpass::FirFilterBandpass(std::string tag) : FirFilterBase(std::move(tag)) {} + +FirFilterBandpass::~FirFilterBandpass() = default; + +void FirFilterBandpass::setup() { + const auto lowpass_kernel = create_lowpass_kernel(max_frequency, transition_band); + + // high-pass kernel + + auto highpass_kernel = create_lowpass_kernel(min_frequency, transition_band); + + std::ranges::for_each(highpass_kernel, [](auto& v) { v *= -1.0F; }); + + highpass_kernel[(highpass_kernel.size() - 1U) / 2U] += 1.0F; + + kernel.resize(highpass_kernel.size()); + + /* + Creating a bandpass from a band reject through spectral inversion https://www.dspguide.com/ch16/4.htm + */ + + for (size_t n = 0U; n < kernel.size(); n++) { + kernel[n] = lowpass_kernel[n] + highpass_kernel[n]; + } + + std::ranges::for_each(kernel, [](auto& v) { v *= -1.0F; }); + + kernel[(kernel.size() - 1U) / 2U] += 1.0F; + + delay = 0.5F * static_cast(kernel.size() - 1U) / static_cast(rate); + + setup_zita(); +} diff --git a/src/fir_filter_base.cpp b/src/fir_filter_base.cpp new file mode 100644 index 0000000..51dfb2d --- /dev/null +++ b/src/fir_filter_base.cpp @@ -0,0 +1,210 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "fir_filter_base.hpp" + +namespace { + +constexpr auto CONVPROC_SCHEDULER_PRIORITY = 0; + +constexpr auto CONVPROC_SCHEDULER_CLASS = SCHED_FIFO; + +} // namespace + +FirFilterBase::FirFilterBase(std::string tag) : log_tag(std::move(tag)) {} + +FirFilterBase::~FirFilterBase() { + zita_ready = false; + + if (conv != nullptr) { + conv->stop_process(); + + conv->cleanup(); + + delete conv; + } +} + +void FirFilterBase::set_rate(const uint& value) { + rate = value; +} + +void FirFilterBase::set_n_samples(const uint& value) { + n_samples = value; +} + +void FirFilterBase::set_min_frequency(const float& value) { + min_frequency = value; +} + +void FirFilterBase::set_max_frequency(const float& value) { + max_frequency = value; +} + +void FirFilterBase::set_transition_band(const float& value) { + transition_band = value; +} + +void FirFilterBase::setup() {} + +auto FirFilterBase::create_lowpass_kernel(const float& cutoff, const float& transition_band) const + -> std::vector { + std::vector output; + + if (rate == 0) { + return output; + } + + /* + transition band frequency as a fraction of the sample rate + */ + + const float b = transition_band / static_cast(rate); + + /* + The kernel size must be odd: M + 1 where M is even. This is done so it can be symmetric around the main lobe + https://www.dspguide.com/ch16/1.htm + + The kernel size is related to the transition bandwidth M = 4/BW + */ + + size_t M = std::ceil(4.0F / b); + + M = (M % 2 == 0) ? M : M + 1; // checking if M is even + + output.resize(M + 1); + + /* + cutoff frequency as a fraction of the sample rate + */ + + const float fc = cutoff / static_cast(rate); + + float sum = 0.0F; + + for (size_t n = 0U; n < output.size(); n++) { + /* + windowed-sinc kernel https://www.dspguide.com/ch16/1.htm + */ + + if (n == M / 2U) { + output[n] = 2.0F * std::numbers::pi_v * fc; + } else { + output[n] = std::sin(2.0F * std::numbers::pi_v * fc * static_cast(n - static_cast(M / 2U))) / + static_cast(n - static_cast(M / 2U)); + } + + /* + Blackman window https://www.dspguide.com/ch16/1.htm + */ + + const float w = 0.42F - + 0.5F * std::cos(2.0F * std::numbers::pi_v * static_cast(n) / static_cast(M)) + + 0.08F * std::cos(4.0F * std::numbers::pi_v * static_cast(n) / static_cast(M)); + + output[n] *= w; + + sum += output[n]; + } + + /* + Normalizing so that we have unit gain at zero frequency + */ + + std::ranges::for_each(output, [&](auto& v) { v /= sum; }); + + return output; +} + +void FirFilterBase::setup_zita() { + zita_ready = false; + + if (n_samples == 0U || kernel.empty()) { + return; + } + + if (conv != nullptr) { + conv->stop_process(); + + conv->cleanup(); + + delete conv; + } + + conv = new Convproc(); + + conv->set_options(0); + + int ret = conv->configure(2, 2, kernel.size(), n_samples, n_samples, n_samples, 0.0F /*density*/); + + if (ret != 0) { + util::warning(log_tag + "can't initialise zita-convolver engine: " + util::to_string(ret, "")); + + return; + } + + ret = conv->impdata_create(0, 0, 1, kernel.data(), 0, static_cast(kernel.size())); + + if (ret != 0) { + util::warning(log_tag + "left impdata_create failed: " + util::to_string(ret, "")); + + return; + } + + ret = conv->impdata_create(1, 1, 1, kernel.data(), 0, static_cast(kernel.size())); + + if (ret != 0) { + util::warning(log_tag + "right impdata_create failed: " + util::to_string(ret, "")); + + return; + } + + ret = conv->start_process(CONVPROC_SCHEDULER_PRIORITY, CONVPROC_SCHEDULER_CLASS); + + if (ret != 0) { + util::warning(log_tag + "start_process failed: " + util::to_string(ret, "")); + + conv->stop_process(); + conv->cleanup(); + + return; + } + + // conv->print(); + + zita_ready = true; +} + +void FirFilterBase::direct_conv(const std::vector& a, const std::vector& b, std::vector& c) { + const uint M = (c.size() + 1U) / 2U; + + for (uint n = 0U; n < c.size(); n++) { + c[n] = 0.0F; + + for (uint m = 0U; m < M; m++) { + if (n > m && n - m < M) { + c[n] += a[n - m] * b[m]; + } + } + } +} + +auto FirFilterBase::get_delay() const -> float { + return delay; +} diff --git a/src/fir_filter_highpass.cpp b/src/fir_filter_highpass.cpp new file mode 100644 index 0000000..95e51dc --- /dev/null +++ b/src/fir_filter_highpass.cpp @@ -0,0 +1,36 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "fir_filter_highpass.hpp" + +FirFilterHighpass::FirFilterHighpass(std::string tag) : FirFilterBase(std::move(tag)) {} + +FirFilterHighpass::~FirFilterHighpass() = default; + +void FirFilterHighpass::setup() { + kernel = create_lowpass_kernel(min_frequency, transition_band); + + std::ranges::for_each(kernel, [](auto& v) { v *= -1.0F; }); + + kernel[(kernel.size() - 1U) / 2U] += 1.0F; + + delay = 0.5F * static_cast(kernel.size() - 1U) / static_cast(rate); + + setup_zita(); +} diff --git a/src/fir_filter_lowpass.cpp b/src/fir_filter_lowpass.cpp new file mode 100644 index 0000000..525f526 --- /dev/null +++ b/src/fir_filter_lowpass.cpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "fir_filter_lowpass.hpp" + +FirFilterLowpass::FirFilterLowpass(std::string tag) : FirFilterBase(std::move(tag)) {} + +FirFilterLowpass::~FirFilterLowpass() = default; + +void FirFilterLowpass::setup() { + kernel = create_lowpass_kernel(max_frequency, transition_band); + + delay = 0.5F * static_cast(kernel.size() - 1U) / static_cast(rate); + + setup_zita(); +} diff --git a/src/gate.cpp b/src/gate.cpp new file mode 100644 index 0000000..ae1b3e6 --- /dev/null +++ b/src/gate.cpp @@ -0,0 +1,250 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "gate.hpp" + +Gate::Gate(const std::string& tag, const std::string& schema, const std::string& schema_path, PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::gate, schema, schema_path, pipe_manager, true), + lv2_wrapper(std::make_unique("http://lsp-plug.in/plugins/lv2/sc_gate_stereo")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://lsp-plug.in/plugins/lv2/sc_gate_stereo is not installed"); + } + + gconnections.push_back(g_signal_connect(settings, "changed::sidechain-input", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::sidechain-input-device", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + + lv2_wrapper->bind_key_enum<"sci", "sidechain-input">(settings); + + lv2_wrapper->bind_key_enum<"scm", "sidechain-mode">(settings); + + lv2_wrapper->bind_key_enum<"scs", "sidechain-source">(settings); + + lv2_wrapper->bind_key_enum<"shpm", "hpf-mode">(settings); + + lv2_wrapper->bind_key_enum<"slpm", "lpf-mode">(settings); + + lv2_wrapper->bind_key_bool<"scl", "sidechain-listen">(settings); + + lv2_wrapper->bind_key_double<"at", "attack">(settings); + + lv2_wrapper->bind_key_double<"rt", "release">(settings); + + lv2_wrapper->bind_key_double<"scr", "sidechain-reactivity">(settings); + + lv2_wrapper->bind_key_double<"sla", "sidechain-lookahead">(settings); + + lv2_wrapper->bind_key_double<"shpf", "hpf-frequency">(settings); + + lv2_wrapper->bind_key_double<"slpf", "lpf-frequency">(settings); + + lv2_wrapper->bind_key_double_db<"gt", "curve-threshold">(settings); + + lv2_wrapper->bind_key_double_db<"gz", "curve-zone">(settings); + + lv2_wrapper->bind_key_bool<"gh", "hysteresis">(settings); + + lv2_wrapper->bind_key_double_db<"ht", "hysteresis-threshold">(settings); + + lv2_wrapper->bind_key_double_db<"hz", "hysteresis-zone">(settings); + + lv2_wrapper->bind_key_double_db<"gr", "reduction">(settings); + + lv2_wrapper->bind_key_double_db<"mk", "makeup">(settings); + + lv2_wrapper->bind_key_double_db<"scp", "sidechain-preamp">(settings); + + setup_input_output_gain(); +} + +Gate::~Gate() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Gate::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Gate::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out, probe_left, probe_right); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("out_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + g_idle_add((GSourceFunc) + + [](gpointer user_data) { + auto* self = static_cast(user_data); + + if (!self->post_messages) { + return G_SOURCE_REMOVE; + } + + if (self->latency.empty()) { + return G_SOURCE_REMOVE; + } + + self->latency.emit(self->latency_port_value); + + return G_SOURCE_REMOVE; + }, + this); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + attack_zone_start_port_value = lv2_wrapper->get_control_port_value("gzs"); + attack_threshold_port_value = lv2_wrapper->get_control_port_value("gt"); + release_zone_start_port_value = lv2_wrapper->get_control_port_value("hts"); + release_threshold_port_value = lv2_wrapper->get_control_port_value("hzs"); + reduction_port_value = lv2_wrapper->get_control_port_value("rlm"); + sidechain_port_value = lv2_wrapper->get_control_port_value("slm"); + curve_port_value = lv2_wrapper->get_control_port_value("clm"); + envelope_port_value = lv2_wrapper->get_control_port_value("elm"); + + // Normalize the current gain reduction amount as a percentage, + // where 0% is no gating, and 100% is a fully closed gate. + const float max_reduction_port_value = lv2_wrapper->get_control_port_value("gr"); + const float no_reduction = 1.0F; // aka, db_to_linear(0 /*dB*/); + gating_port_value = util::normalize(reduction_port_value, no_reduction, max_reduction_port_value); + + attack_zone_start.emit(attack_zone_start_port_value); + attack_threshold.emit(attack_threshold_port_value); + release_zone_start.emit(release_zone_start_port_value); + release_threshold.emit(release_threshold_port_value); + reduction.emit(reduction_port_value); + sidechain.emit(sidechain_port_value); + curve.emit(curve_port_value); + envelope.emit(envelope_port_value); + gating.emit(gating_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +void Gate::update_sidechain_links(const std::string& key) { + if (util::gsettings_get_string(settings, "sidechain-input") == "External") { + const auto device_name = util::gsettings_get_string(settings, "sidechain-input-device"); + + NodeInfo input_device = pm->ee_source_node; + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == device_name) { + input_device = node; + + break; + } + } + + pm->destroy_links(list_proxies); + + list_proxies.clear(); + + for (const auto& link : pm->link_nodes(input_device.id, get_node_id(), true)) { + list_proxies.push_back(link); + } + } else { + pm->destroy_links(list_proxies); + + list_proxies.clear(); + } +} + +void Gate::update_probe_links() { + update_sidechain_links(""); +} + +auto Gate::get_latency_seconds() -> float { + return this->latency_port_value; +} diff --git a/src/gate_preset.cpp b/src/gate_preset.cpp new file mode 100644 index 0000000..8121bac --- /dev/null +++ b/src/gate_preset.cpp @@ -0,0 +1,118 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "gate_preset.hpp" + +GatePreset::GatePreset() { + input_settings = g_settings_new_with_path(tags::schema::gate::id, tags::schema::gate::input_path); + + output_settings = g_settings_new_with_path(tags::schema::gate::id, tags::schema::gate::output_path); +} + +void GatePreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["gate"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["gate"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["gate"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["gate"]["attack"] = g_settings_get_double(settings, "attack"); + + json[section]["gate"]["release"] = g_settings_get_double(settings, "release"); + + json[section]["gate"]["curve-threshold"] = g_settings_get_double(settings, "curve-threshold"); + + json[section]["gate"]["curve-zone"] = g_settings_get_double(settings, "curve-zone"); + + json[section]["gate"]["hysteresis"] = g_settings_get_boolean(settings, "hysteresis") != 0; + + json[section]["gate"]["hysteresis-threshold"] = g_settings_get_double(settings, "hysteresis-threshold"); + + json[section]["gate"]["hysteresis-zone"] = g_settings_get_double(settings, "hysteresis-zone"); + + json[section]["gate"]["reduction"] = g_settings_get_double(settings, "reduction"); + + json[section]["gate"]["makeup"] = g_settings_get_double(settings, "makeup"); + + json[section]["gate"]["sidechain"]["input"] = util::gsettings_get_string(settings, "sidechain-input"); + + json[section]["gate"]["sidechain"]["mode"] = util::gsettings_get_string(settings, "sidechain-mode"); + + json[section]["gate"]["sidechain"]["source"] = util::gsettings_get_string(settings, "sidechain-source"); + + json[section]["gate"]["sidechain"]["preamp"] = g_settings_get_double(settings, "sidechain-preamp"); + + json[section]["gate"]["sidechain"]["reactivity"] = g_settings_get_double(settings, "sidechain-reactivity"); + + json[section]["gate"]["sidechain"]["lookahead"] = g_settings_get_double(settings, "sidechain-lookahead"); + + json[section]["gate"]["hpf-mode"] = util::gsettings_get_string(settings, "hpf-mode"); + + json[section]["gate"]["hpf-frequency"] = g_settings_get_double(settings, "hpf-frequency"); + + json[section]["gate"]["lpf-mode"] = util::gsettings_get_string(settings, "lpf-mode"); + + json[section]["gate"]["lpf-frequency"] = g_settings_get_double(settings, "lpf-frequency"); +} + +void GatePreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("gate"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("gate"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("gate"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("gate"), settings, "attack", "attack"); + + update_key(json.at(section).at("gate"), settings, "release", "release"); + + update_key(json.at(section).at("gate"), settings, "curve-threshold", "curve-threshold"); + + update_key(json.at(section).at("gate"), settings, "curve-zone", "curve-zone"); + + update_key(json.at(section).at("gate"), settings, "hysteresis", "hysteresis"); + + update_key(json.at(section).at("gate"), settings, "hysteresis-threshold", "hysteresis-threshold"); + + update_key(json.at(section).at("gate"), settings, "hysteresis-zone", "hysteresis-zone"); + + update_key(json.at(section).at("gate"), settings, "reduction", "reduction"); + + update_key(json.at(section).at("gate"), settings, "makeup", "makeup"); + + update_key(json.at(section).at("gate").at("sidechain"), settings, "sidechain-input", "input"); + + update_key(json.at(section).at("gate").at("sidechain"), settings, "sidechain-mode", "mode"); + + update_key(json.at(section).at("gate").at("sidechain"), settings, "sidechain-source", "source"); + + update_key(json.at(section).at("gate").at("sidechain"), settings, "sidechain-preamp", "preamp"); + + update_key(json.at(section).at("gate").at("sidechain"), settings, "sidechain-reactivity", "reactivity"); + + update_key(json.at(section).at("gate").at("sidechain"), settings, "sidechain-lookahead", "lookahead"); + + update_key(json.at(section).at("gate"), settings, "hpf-mode", "hpf-mode"); + + update_key(json.at(section).at("gate"), settings, "hpf-frequency", "hpf-frequency"); + + update_key(json.at(section).at("gate"), settings, "lpf-mode", "lpf-mode"); + + update_key(json.at(section).at("gate"), settings, "lpf-frequency", "lpf-frequency"); +} diff --git a/src/gate_ui.cpp b/src/gate_ui.cpp new file mode 100644 index 0000000..8d74b63 --- /dev/null +++ b/src/gate_ui.cpp @@ -0,0 +1,497 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "gate_ui.hpp" + +namespace ui::gate_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr gate; + + std::vector connections; + + std::vector gconnections; +}; + +struct _GateBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkLabel *attack_zone_start_label, *attack_threshold_label, *release_zone_start_label, *release_threshold_label; + + GtkLabel *gain_label, *sidechain_label, *curve_label, *envelope_label; + + GtkLevelBar* gating; + + GtkLabel* gating_label; + + GtkToggleButton* hysteresis; + + GtkSpinButton *attack, *release, *curve_threshold, *curve_zone, *hysteresis_threshold, *hysteresis_zone, *reduction, + *makeup, *preamp, *reactivity, *lookahead, *hpf_freq, *lpf_freq; + + GtkComboBoxText *sidechain_input, *sidechain_mode, *sidechain_source, *lpf_mode, *hpf_mode; + + GtkToggleButton* listen; + + GtkDropDown* dropdown_input_devices; + + GListStore* input_devices_model; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(GateBox, gate_box, GTK_TYPE_BOX) + +void on_reset(GateBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +gboolean set_dropdown_sensitive(GateBox* self, const char* active_id) { + if (g_strcmp0(active_id, "External") == 0) { + return 1; + } + + return 0; +} + +void setup_dropdown_input_device(GateBox* self) { + auto* selection = gtk_single_selection_new(G_LIST_MODEL(self->input_devices_model)); + + g_signal_connect(self->dropdown_input_devices, "notify::selected-item", + G_CALLBACK(+[](GtkDropDown* dropdown, GParamSpec* pspec, GateBox* self) { + if (auto selected_item = gtk_drop_down_get_selected_item(dropdown); selected_item != nullptr) { + auto* holder = static_cast(selected_item); + + g_settings_set_string(self->settings, "sidechain-input-device", holder->info->name.c_str()); + } + }), + self); + + gtk_drop_down_set_model(self->dropdown_input_devices, G_LIST_MODEL(self->input_devices_model)); + + g_object_unref(selection); +} + +void setup(GateBox* self, std::shared_ptr gate, const std::string& schema_path, PipeManager* pm) { + self->data->gate = gate; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::gate::id, schema_path.c_str()); + + gate->set_post_messages(true); + + setup_dropdown_input_device(self); + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == tags::pipewire::ee_sink_name || node.name == tags::pipewire::ee_source_name) { + continue; + } + + if (node.media_class == tags::pipewire::media_class::source || + node.media_class == tags::pipewire::media_class::virtual_source) { + auto holder = ui::holders::create(node); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + } + } + + self->data->connections.push_back(gate->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(gate->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(gate->attack_zone_start.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->attack_zone_start_label)) { + return; + } + + gtk_label_set_text(self->attack_zone_start_label, + fmt::format(ui::get_user_locale(), "{0:.1Lf}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(gate->attack_threshold.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->attack_threshold_label)) { + return; + } + + gtk_label_set_text(self->attack_threshold_label, + fmt::format(ui::get_user_locale(), "{0:.1Lf}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(gate->release_zone_start.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->release_zone_start_label)) { + return; + } + + gtk_label_set_text(self->release_zone_start_label, + fmt::format(ui::get_user_locale(), "{0:.1Lf}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(gate->release_threshold.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->release_threshold_label)) { + return; + } + + gtk_label_set_text(self->release_threshold_label, + fmt::format(ui::get_user_locale(), "{0:.1Lf}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(gate->reduction.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->gain_label) || !GTK_IS_LABEL(self->gating_label)) { + return; + } + + gtk_label_set_text(self->gating_label, + fmt::format(ui::get_user_locale(), "{0:.0Lf}", util::linear_to_db(value)).c_str()); + gtk_label_set_text(self->gain_label, + fmt::format(ui::get_user_locale(), "{0:.0Lf}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(gate->gating.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->gating)) { + return; + } + + gtk_level_bar_set_value(self->gating, value); + }); + })); + + self->data->connections.push_back(gate->envelope.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->envelope_label)) { + return; + } + + gtk_label_set_text(self->envelope_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(gate->sidechain.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->sidechain_label)) { + return; + } + + gtk_label_set_text(self->sidechain_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(gate->curve.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->curve_label)) { + return; + } + + gtk_label_set_text(self->curve_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(pm->source_added.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + + auto holder = ui::holders::create(info); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + })); + + self->data->connections.push_back(pm->source_removed.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_list_store_remove(self->input_devices_model, n); + + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "attack", gtk_spin_button_get_adjustment(self->attack), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "release", gtk_spin_button_get_adjustment(self->release), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "curve-threshold", gtk_spin_button_get_adjustment(self->curve_threshold), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "curve-zone", gtk_spin_button_get_adjustment(self->curve_zone), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hysteresis", self->hysteresis, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hysteresis-threshold", gtk_spin_button_get_adjustment(self->hysteresis_threshold), + "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hysteresis-zone", gtk_spin_button_get_adjustment(self->hysteresis_zone), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "reduction", gtk_spin_button_get_adjustment(self->reduction), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "makeup", gtk_spin_button_get_adjustment(self->makeup), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-preamp", gtk_spin_button_get_adjustment(self->preamp), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-reactivity", gtk_spin_button_get_adjustment(self->reactivity), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-lookahead", gtk_spin_button_get_adjustment(self->lookahead), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hpf-frequency", gtk_spin_button_get_adjustment(self->hpf_freq), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "lpf-frequency", gtk_spin_button_get_adjustment(self->lpf_freq), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-listen", self->listen, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-input", self->sidechain_input, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-mode", self->sidechain_mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sidechain-source", self->sidechain_source, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hpf-mode", self->hpf_mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "lpf-mode", self->lpf_mode, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_GATE_BOX(object); + + self->data->gate->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(gate_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_GATE_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(gate_box_parent_class)->finalize(object); +} + +void gate_box_class_init(GateBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::gate_ui); + + gtk_widget_class_bind_template_child(widget_class, GateBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, GateBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, GateBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, GateBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, GateBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, GateBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, GateBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, output_level_right_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, gating); + gtk_widget_class_bind_template_child(widget_class, GateBox, gating_label); + + gtk_widget_class_bind_template_child(widget_class, GateBox, attack_zone_start_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, attack_threshold_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, release_zone_start_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, release_threshold_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, gain_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, sidechain_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, curve_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, envelope_label); + gtk_widget_class_bind_template_child(widget_class, GateBox, attack); + gtk_widget_class_bind_template_child(widget_class, GateBox, release); + gtk_widget_class_bind_template_child(widget_class, GateBox, curve_threshold); + gtk_widget_class_bind_template_child(widget_class, GateBox, curve_zone); + gtk_widget_class_bind_template_child(widget_class, GateBox, hysteresis); + gtk_widget_class_bind_template_child(widget_class, GateBox, hysteresis_threshold); + gtk_widget_class_bind_template_child(widget_class, GateBox, hysteresis_zone); + gtk_widget_class_bind_template_child(widget_class, GateBox, reduction); + gtk_widget_class_bind_template_child(widget_class, GateBox, makeup); + gtk_widget_class_bind_template_child(widget_class, GateBox, preamp); + gtk_widget_class_bind_template_child(widget_class, GateBox, reactivity); + gtk_widget_class_bind_template_child(widget_class, GateBox, lookahead); + gtk_widget_class_bind_template_child(widget_class, GateBox, hpf_freq); + gtk_widget_class_bind_template_child(widget_class, GateBox, lpf_freq); + gtk_widget_class_bind_template_child(widget_class, GateBox, sidechain_input); + gtk_widget_class_bind_template_child(widget_class, GateBox, sidechain_mode); + gtk_widget_class_bind_template_child(widget_class, GateBox, sidechain_source); + gtk_widget_class_bind_template_child(widget_class, GateBox, lpf_mode); + gtk_widget_class_bind_template_child(widget_class, GateBox, hpf_mode); + gtk_widget_class_bind_template_child(widget_class, GateBox, listen); + gtk_widget_class_bind_template_child(widget_class, GateBox, dropdown_input_devices); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + gtk_widget_class_bind_template_callback(widget_class, set_dropdown_sensitive); +} + +void gate_box_init(GateBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->input_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + + prepare_spinbuttons<"dB">(self->curve_threshold, self->curve_zone, self->hysteresis_threshold, self->hysteresis_zone, + self->reduction, self->makeup, self->preamp); + + prepare_spinbuttons<"Hz">(self->hpf_freq, self->lpf_freq); + + prepare_spinbuttons<"ms">(self->attack, self->release, self->lookahead, self->reactivity); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> GateBox* { + return static_cast(g_object_new(EE_TYPE_GATE_BOX, nullptr)); +} + +} // namespace ui::gate_box diff --git a/src/limiter.cpp b/src/limiter.cpp new file mode 100644 index 0000000..c8b34c0 --- /dev/null +++ b/src/limiter.cpp @@ -0,0 +1,228 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "limiter.hpp" + +Limiter::Limiter(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::limiter, schema, schema_path, pipe_manager, true), + lv2_wrapper(std::make_unique("http://lsp-plug.in/plugins/lv2/sc_limiter_stereo")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://lsp-plug.in/plugins/lv2/sc_limiter_stereo is not installed"); + } + + gconnections.push_back(g_signal_connect(settings, "changed::external-sidechain", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::sidechain-input-device", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + + lv2_wrapper->bind_key_enum<"mode", "mode">(settings); + + lv2_wrapper->bind_key_enum<"ovs", "oversampling">(settings); + + lv2_wrapper->bind_key_enum<"dith", "dithering">(settings); + + lv2_wrapper->bind_key_double<"lk", "lookahead">(settings); + + lv2_wrapper->bind_key_double<"at", "attack">(settings); + + lv2_wrapper->bind_key_double<"rt", "release">(settings); + + lv2_wrapper->bind_key_double_db<"th", "threshold">(settings); + + lv2_wrapper->bind_key_bool<"boost", "gain-boost">(settings); + + lv2_wrapper->bind_key_double_db<"scp", "sidechain-preamp">(settings); + + lv2_wrapper->bind_key_double<"slink", "stereo-link">(settings); + + lv2_wrapper->bind_key_bool<"alr", "alr">(settings); + + lv2_wrapper->bind_key_double<"alr_at", "alr-attack">(settings); + + lv2_wrapper->bind_key_double<"alr_rt", "alr-release">(settings); + + lv2_wrapper->bind_key_double_db<"knee", "alr-knee">(settings); + + lv2_wrapper->bind_key_bool<"extsc", "external-sidechain">(settings); + + setup_input_output_gain(); +} + +Limiter::~Limiter() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Limiter::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Limiter::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out, probe_left, probe_right); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("out_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + g_idle_add((GSourceFunc) + + [](gpointer user_data) { + auto* self = static_cast(user_data); + + if (!self->post_messages) { + return G_SOURCE_REMOVE; + } + + if (self->latency.empty()) { + return G_SOURCE_REMOVE; + } + + self->latency.emit(self->latency_port_value); + + return G_SOURCE_REMOVE; + }, + this); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + gain_l_port_value = lv2_wrapper->get_control_port_value("grlm_l"); + gain_r_port_value = lv2_wrapper->get_control_port_value("grlm_r"); + sidechain_l_port_value = lv2_wrapper->get_control_port_value("sclm_l"); + sidechain_r_port_value = lv2_wrapper->get_control_port_value("sclm_r"); + + gain_left.emit(gain_l_port_value); + gain_right.emit(gain_r_port_value); + sidechain_left.emit(sidechain_l_port_value); + sidechain_right.emit(sidechain_r_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +void Limiter::update_sidechain_links(const std::string& key) { + if (g_settings_get_boolean(settings, "external-sidechain") != 0) { + const auto device_name = util::gsettings_get_string(settings, "sidechain-input-device"); + + NodeInfo input_device = pm->ee_source_node; + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == device_name) { + input_device = node; + + break; + } + } + + pm->destroy_links(list_proxies); + + list_proxies.clear(); + + for (const auto& link : pm->link_nodes(input_device.id, get_node_id(), true)) { + list_proxies.push_back(link); + } + } else { + pm->destroy_links(list_proxies); + + list_proxies.clear(); + } +} + +void Limiter::update_probe_links() { + update_sidechain_links(""); +} + +auto Limiter::get_latency_seconds() -> float { + return this->latency_port_value; +} diff --git a/src/limiter_preset.cpp b/src/limiter_preset.cpp new file mode 100644 index 0000000..4fee9f3 --- /dev/null +++ b/src/limiter_preset.cpp @@ -0,0 +1,102 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "limiter_preset.hpp" + +LimiterPreset::LimiterPreset() { + input_settings = g_settings_new_with_path(tags::schema::limiter::id, tags::schema::limiter::input_path); + + output_settings = g_settings_new_with_path(tags::schema::limiter::id, tags::schema::limiter::output_path); +} + +void LimiterPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["limiter"]["mode"] = util::gsettings_get_string(settings, "mode"); + + json[section]["limiter"]["oversampling"] = util::gsettings_get_string(settings, "oversampling"); + + json[section]["limiter"]["dithering"] = util::gsettings_get_string(settings, "dithering"); + + json[section]["limiter"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["limiter"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["limiter"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["limiter"]["lookahead"] = g_settings_get_double(settings, "lookahead"); + + json[section]["limiter"]["attack"] = g_settings_get_double(settings, "attack"); + + json[section]["limiter"]["release"] = g_settings_get_double(settings, "release"); + + json[section]["limiter"]["threshold"] = g_settings_get_double(settings, "threshold"); + + json[section]["limiter"]["sidechain-preamp"] = g_settings_get_double(settings, "sidechain-preamp"); + + json[section]["limiter"]["stereo-link"] = g_settings_get_double(settings, "stereo-link"); + + json[section]["limiter"]["alr-attack"] = g_settings_get_double(settings, "alr-attack"); + + json[section]["limiter"]["alr-release"] = g_settings_get_double(settings, "alr-release"); + + json[section]["limiter"]["alr-knee"] = g_settings_get_double(settings, "alr-knee"); + + json[section]["limiter"]["alr"] = g_settings_get_boolean(settings, "alr") != 0; + + json[section]["limiter"]["gain-boost"] = g_settings_get_boolean(settings, "gain-boost") != 0; + + json[section]["limiter"]["external-sidechain"] = g_settings_get_boolean(settings, "external-sidechain") != 0; +} + +void LimiterPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("limiter"), settings, "mode", "mode"); + + update_key(json.at(section).at("limiter"), settings, "oversampling", "oversampling"); + + update_key(json.at(section).at("limiter"), settings, "dithering", "dithering"); + + update_key(json.at(section).at("limiter"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("limiter"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("limiter"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("limiter"), settings, "lookahead", "lookahead"); + + update_key(json.at(section).at("limiter"), settings, "attack", "attack"); + + update_key(json.at(section).at("limiter"), settings, "release", "release"); + + update_key(json.at(section).at("limiter"), settings, "threshold", "threshold"); + + update_key(json.at(section).at("limiter"), settings, "sidechain-preamp", "sidechain-preamp"); + + update_key(json.at(section).at("limiter"), settings, "stereo-link", "stereo-link"); + + update_key(json.at(section).at("limiter"), settings, "alr-attack", "alr-attack"); + + update_key(json.at(section).at("limiter"), settings, "alr-release", "alr-release"); + + update_key(json.at(section).at("limiter"), settings, "alr-knee", "alr-knee"); + + update_key(json.at(section).at("limiter"), settings, "alr", "alr"); + + update_key(json.at(section).at("limiter"), settings, "gain-boost", "gain-boost"); + + update_key(json.at(section).at("limiter"), settings, "external-sidechain", "external-sidechain"); +} diff --git a/src/limiter_ui.cpp b/src/limiter_ui.cpp new file mode 100644 index 0000000..3cff329 --- /dev/null +++ b/src/limiter_ui.cpp @@ -0,0 +1,379 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "limiter_ui.hpp" + +namespace ui::limiter_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr limiter; + + std::vector connections; + + std::vector gconnections; +}; + +struct _LimiterBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkComboBoxText *mode, *oversampling, *dither; + + GtkDropDown* dropdown_input_devices; + + GtkLabel *gain_left, *gain_right, *sidechain_left, *sidechain_right; + + GtkSpinButton *sc_preamp, *lookahead, *attack, *release, *threshold, *stereo_link, *alr_attack, *alr_release, + *alr_knee; + + GtkCheckButton* gain_boost; + + GtkToggleButton *alr, *external_sidechain; + + GListStore* input_devices_model; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(LimiterBox, limiter_box, GTK_TYPE_BOX) + +void on_reset(LimiterBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup_dropdown_input_device(LimiterBox* self) { + auto* selection = gtk_single_selection_new(G_LIST_MODEL(self->input_devices_model)); + + g_signal_connect(self->dropdown_input_devices, "notify::selected-item", + G_CALLBACK(+[](GtkDropDown* dropdown, GParamSpec* pspec, LimiterBox* self) { + if (auto selected_item = gtk_drop_down_get_selected_item(dropdown); selected_item != nullptr) { + auto* holder = static_cast(selected_item); + + g_settings_set_string(self->settings, "sidechain-input-device", holder->info->name.c_str()); + } + }), + self); + + gtk_drop_down_set_model(self->dropdown_input_devices, G_LIST_MODEL(self->input_devices_model)); + + g_object_unref(selection); +} + +void setup(LimiterBox* self, std::shared_ptr limiter, const std::string& schema_path, PipeManager* pm) { + self->data->limiter = limiter; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::limiter::id, schema_path.c_str()); + + limiter->set_post_messages(true); + + setup_dropdown_input_device(self); + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == tags::pipewire::ee_sink_name || node.name == tags::pipewire::ee_source_name) { + continue; + } + + if (node.media_class == tags::pipewire::media_class::source || + node.media_class == tags::pipewire::media_class::virtual_source) { + auto holder = ui::holders::create(node); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + } + } + + self->data->connections.push_back(limiter->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(limiter->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(limiter->gain_left.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->gain_left)) { + return; + } + + gtk_label_set_text(self->gain_left, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(limiter->gain_right.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->gain_right)) { + return; + } + + gtk_label_set_text(self->gain_right, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(limiter->sidechain_left.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->sidechain_left)) { + return; + } + + gtk_label_set_text(self->sidechain_left, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(limiter->sidechain_right.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LABEL(self->sidechain_right)) { + return; + } + + gtk_label_set_text(self->sidechain_right, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(pm->source_added.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + + auto holder = ui::holders::create(info); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + })); + + self->data->connections.push_back(pm->source_removed.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_list_store_remove(self->input_devices_model, n); + + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "sidechain-preamp", gtk_spin_button_get_adjustment(self->sc_preamp), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "lookahead", gtk_spin_button_get_adjustment(self->lookahead), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "attack", gtk_spin_button_get_adjustment(self->attack), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "release", gtk_spin_button_get_adjustment(self->release), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "threshold", gtk_spin_button_get_adjustment(self->threshold), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "stereo-link", gtk_spin_button_get_adjustment(self->stereo_link), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "alr-attack", gtk_spin_button_get_adjustment(self->alr_attack), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "alr-release", gtk_spin_button_get_adjustment(self->alr_release), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "alr-knee", gtk_spin_button_get_adjustment(self->alr_knee), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "gain-boost", self->gain_boost, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "external-sidechain", self->external_sidechain, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "alr", self->alr, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mode", self->mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "oversampling", self->oversampling, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "dithering", self->dither, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_LIMITER_BOX(object); + + self->data->limiter->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(limiter_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_LIMITER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(limiter_box_parent_class)->finalize(object); +} + +void limiter_box_class_init(LimiterBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::limiter_ui); + + gtk_widget_class_bind_template_child(widget_class, LimiterBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, LimiterBox, mode); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, oversampling); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, dither); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, sc_preamp); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, lookahead); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, attack); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, release); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, threshold); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, stereo_link); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, alr_attack); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, alr_release); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, alr_knee); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, alr); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, external_sidechain); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, gain_boost); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, gain_left); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, gain_right); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, sidechain_left); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, sidechain_right); + gtk_widget_class_bind_template_child(widget_class, LimiterBox, dropdown_input_devices); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void limiter_box_init(LimiterBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->input_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->sc_preamp, self->threshold, self->alr_knee); + + prepare_spinbuttons<"ms">(self->lookahead, self->attack, self->release, self->alr_attack, self->alr_release); + + prepare_spinbuttons<"%">(self->stereo_link); +} + +auto create() -> LimiterBox* { + return static_cast(g_object_new(EE_TYPE_LIMITER_BOX, nullptr)); +} + +} // namespace ui::limiter_box diff --git a/src/loudness.cpp b/src/loudness.cpp new file mode 100644 index 0000000..b01d4ae --- /dev/null +++ b/src/loudness.cpp @@ -0,0 +1,133 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "loudness.hpp" + +Loudness::Loudness(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::loudness, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://lsp-plug.in/plugins/lv2/loud_comp_stereo")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://lsp-plug.in/plugins/lv2/loud_comp_stereo is not installed"); + } + + lv2_wrapper->bind_key_enum<"std", "std">(settings); + lv2_wrapper->bind_key_enum<"fft", "fft">(settings); + + lv2_wrapper->bind_key_double<"volume", "volume">(settings); + + setup_input_output_gain(); +} + +Loudness::~Loudness() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Loudness::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Loudness::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("out_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + util::idle_add([=, this]() { + if (!post_messages) { + return; + } + + latency.emit(latency_port_value); + }); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Loudness::get_latency_seconds() -> float { + return latency_port_value; +} diff --git a/src/loudness_preset.cpp b/src/loudness_preset.cpp new file mode 100644 index 0000000..8fa0927 --- /dev/null +++ b/src/loudness_preset.cpp @@ -0,0 +1,54 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "loudness_preset.hpp" + +LoudnessPreset::LoudnessPreset() { + input_settings = g_settings_new_with_path(tags::schema::loudness::id, tags::schema::loudness::input_path); + + output_settings = g_settings_new_with_path(tags::schema::loudness::id, tags::schema::loudness::output_path); +} + +void LoudnessPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["loudness"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["loudness"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["loudness"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["loudness"]["fft"] = util::gsettings_get_string(settings, "fft"); + + json[section]["loudness"]["std"] = util::gsettings_get_string(settings, "std"); + + json[section]["loudness"]["volume"] = g_settings_get_double(settings, "volume"); +} + +void LoudnessPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("loudness"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("loudness"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("loudness"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("loudness"), settings, "fft", "fft"); + + update_key(json.at(section).at("loudness"), settings, "std", "std"); + + update_key(json.at(section).at("loudness"), settings, "volume", "volume"); +} diff --git a/src/loudness_ui.cpp b/src/loudness_ui.cpp new file mode 100644 index 0000000..970c618 --- /dev/null +++ b/src/loudness_ui.cpp @@ -0,0 +1,183 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "loudness_ui.hpp" + +namespace ui::loudness_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr loudness; + + std::vector connections; + + std::vector gconnections; +}; + +struct _LoudnessBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkComboBoxText *fft_size, *standard; + + GtkSpinButton* volume; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(LoudnessBox, loudness_box, GTK_TYPE_BOX) + +void on_reset(LoudnessBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(LoudnessBox* self, std::shared_ptr loudness, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->loudness = loudness; + + self->settings = g_settings_new_with_path(tags::schema::loudness::id, schema_path.c_str()); + + loudness->set_post_messages(true); + + self->data->connections.push_back(loudness->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(loudness->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "volume", gtk_spin_button_get_adjustment(self->volume), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "fft", self->fft_size, "active-id", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "std", self->standard, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_LOUDNESS_BOX(object); + + self->data->loudness->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(loudness_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_LOUDNESS_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(loudness_box_parent_class)->finalize(object); +} + +void loudness_box_class_init(LoudnessBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::loudness_ui); + + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, volume); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, standard); + gtk_widget_class_bind_template_child(widget_class, LoudnessBox, fft_size); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void loudness_box_init(LoudnessBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->volume); +} + +auto create() -> LoudnessBox* { + return static_cast(g_object_new(EE_TYPE_LOUDNESS_BOX, nullptr)); +} + +} // namespace ui::loudness_box diff --git a/src/lv2_wrapper.cpp b/src/lv2_wrapper.cpp new file mode 100644 index 0000000..38c3ccb --- /dev/null +++ b/src/lv2_wrapper.cpp @@ -0,0 +1,386 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "lv2_wrapper.hpp" + +namespace lv2 { + +constexpr auto min_quantum = 32; +constexpr auto max_quantum = 8192; + +auto lv2_printf(LV2_Log_Handle handle, LV2_URID type, const char* format, ...) -> int { + va_list args; + + va_start(args, format); + + int r = std::vprintf(format, args); + + va_end(args); + + return r; +} + +Lv2Wrapper::Lv2Wrapper(const std::string& plugin_uri) : plugin_uri(plugin_uri) { + world = lilv_world_new(); + + if (world == nullptr) { + util::warning("failed to initialized the world"); + + return; + } + + auto* const uri = lilv_new_uri(world, plugin_uri.c_str()); + + if (uri == nullptr) { + util::warning("Invalid plugin URI: " + plugin_uri); + + return; + } + + lilv_world_load_all(world); + + const LilvPlugins* plugins = lilv_world_get_all_plugins(world); + + plugin = lilv_plugins_get_by_uri(plugins, uri); + + lilv_node_free(uri); + + if (plugin == nullptr) { + util::warning("Could not find the plugin: " + plugin_uri); + + return; + } + + found_plugin = true; + + check_required_features(); + + create_ports(); +} + +Lv2Wrapper::~Lv2Wrapper() { + if (instance != nullptr) { + lilv_instance_deactivate(instance); + lilv_instance_free(instance); + + instance = nullptr; + } + + if (world != nullptr) { + lilv_world_free(world); + } +} + +void Lv2Wrapper::check_required_features() { + LilvNodes* required_features = lilv_plugin_get_required_features(plugin); + + if (required_features != nullptr) { + for (auto* i = lilv_nodes_begin(required_features); !lilv_nodes_is_end(required_features, i); + i = lilv_nodes_next(required_features, i)) { + const LilvNode* required_feature = lilv_nodes_get(required_features, i); + + const char* required_feature_uri = lilv_node_as_uri(required_feature); + + util::debug(plugin_uri + " requires feature: " + required_feature_uri); + } + + lilv_nodes_free(required_features); + } +} + +void Lv2Wrapper::create_ports() { + n_ports = lilv_plugin_get_num_ports(plugin); + + ports.resize(n_ports); + + // Get default values for all ports + + std::vector values(n_ports); + + lilv_plugin_get_port_ranges_float(plugin, nullptr, nullptr, values.data()); + + LilvNode* lv2_InputPort = lilv_new_uri(world, LV2_CORE__InputPort); + LilvNode* lv2_OutputPort = lilv_new_uri(world, LV2_CORE__OutputPort); + LilvNode* lv2_AudioPort = lilv_new_uri(world, LV2_CORE__AudioPort); + LilvNode* lv2_ControlPort = lilv_new_uri(world, LV2_CORE__ControlPort); + LilvNode* lv2_connectionOptional = lilv_new_uri(world, LV2_CORE__connectionOptional); + + for (uint n = 0U; n < n_ports; n++) { + auto* port = &ports[n]; + + const auto* lilv_port = lilv_plugin_get_port_by_index(plugin, n); + + auto* port_name = lilv_port_get_name(plugin, lilv_port); + + port->index = n; + port->name = lilv_node_as_string(port_name); + port->symbol = lilv_node_as_string(lilv_port_get_symbol(plugin, lilv_port)); + port->value = std::isnan(values[n]) ? 0.0F : values[n]; + port->optional = lilv_port_has_property(plugin, lilv_port, lv2_connectionOptional); + + // util::warning("port name: " + port.name); + // util::warning("port symbol: " + port->symbol); + + if (lilv_port_is_a(plugin, lilv_port, lv2_InputPort)) { + port->is_input = true; + } else if (!lilv_port_is_a(plugin, lilv_port, lv2_OutputPort) && !port->optional) { + util::warning("Port " + port->name + " is neither input nor output!"); + } + + if (lilv_port_is_a(plugin, lilv_port, lv2_ControlPort)) { + port->type = TYPE_CONTROL; + } else if (lilv_port_is_a(plugin, lilv_port, lv2_AudioPort)) { + port->type = TYPE_AUDIO; + + n_audio_in = (port->is_input) ? n_audio_in + 1 : n_audio_in; + n_audio_out = (!port->is_input) ? n_audio_out + 1 : n_audio_out; + } else if (!port->optional) { + util::warning("Port " + port->name + " has un unsupported type!"); + } + + lilv_node_free(port_name); + } + + // util::warning("n audio_in ports: " + util::to_string(n_audio_in)); + // util::warning("n audio_out ports: " + util::to_string(n_audio_out)); + + lilv_node_free(lv2_connectionOptional); + lilv_node_free(lv2_ControlPort); + lilv_node_free(lv2_AudioPort); + lilv_node_free(lv2_OutputPort); + lilv_node_free(lv2_InputPort); +} + +auto Lv2Wrapper::create_instance(const uint& rate) -> bool { + this->rate = rate; + + if (instance != nullptr) { + deactivate(); + + lilv_instance_free(instance); + + instance = nullptr; + } + + LV2_Log_Log lv2_log = {this, &lv2_printf, [](LV2_Log_Handle handle, LV2_URID type, const char* fmt, va_list ap) { + return std::vprintf(fmt, ap); + }}; + + LV2_URID_Map lv2_map = {this, [](LV2_URID_Map_Handle handle, const char* uri) { + auto* lw = static_cast(handle); + + return lw->map_urid(uri); + }}; + + LV2_URID_Unmap lv2_unmap = {this, [](LV2_URID_Unmap_Handle handle, LV2_URID urid) { + auto* lw = static_cast(handle); + + return lw->map_urid_to_uri[urid].c_str(); + }}; + + const LV2_Feature lv2_log_feature = {LV2_LOG__log, &lv2_log}; + + const LV2_Feature lv2_map_feature = {LV2_URID__map, &lv2_map}; + + const LV2_Feature lv2_unmap_feature = {LV2_URID__unmap, &lv2_unmap}; + + auto options = std::to_array( + {{LV2_OPTIONS_INSTANCE, 0, map_urid(LV2_PARAMETERS__sampleRate), sizeof(float), map_urid(LV2_ATOM__Float), &rate}, + {LV2_OPTIONS_INSTANCE, 0, map_urid(LV2_BUF_SIZE__minBlockLength), sizeof(int32_t), map_urid(LV2_ATOM__Int), + &min_quantum}, + {LV2_OPTIONS_INSTANCE, 0, map_urid(LV2_BUF_SIZE__maxBlockLength), sizeof(int32_t), map_urid(LV2_ATOM__Int), + &max_quantum}, + {LV2_OPTIONS_INSTANCE, 0, map_urid(LV2_BUF_SIZE__nominalBlockLength), sizeof(int32_t), map_urid(LV2_ATOM__Int), + &n_samples}, + {LV2_OPTIONS_INSTANCE, 0, 0, 0, 0, nullptr}}); + + LV2_Feature feature_options = {.URI = LV2_OPTIONS__options, .data = options.data()}; + + const auto features = std::to_array( + {&lv2_log_feature, &lv2_map_feature, &lv2_unmap_feature, &feature_options, &static_features[0], nullptr}); + + instance = lilv_plugin_instantiate(plugin, rate, features.data()); + + if (instance == nullptr) { + util::warning("failed to instantiate " + plugin_uri); + + return false; + } + + connect_control_ports(); + + activate(); + + return true; +} + +void Lv2Wrapper::connect_control_ports() { + for (auto& p : ports) { + if (p.type == PortType::TYPE_CONTROL) { + lilv_instance_connect_port(instance, p.index, &p.value); + } + } +} + +void Lv2Wrapper::connect_data_ports(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + int count_input = 0; + int count_output = 0; + + for (const auto& p : ports) { + if (p.type == PortType::TYPE_AUDIO) { + if (p.is_input) { + if (count_input == 0) { + lilv_instance_connect_port(instance, p.index, left_in.data()); + } else if (count_input == 1) { + lilv_instance_connect_port(instance, p.index, right_in.data()); + } + + count_input++; + } else { + if (count_output == 0) { + lilv_instance_connect_port(instance, p.index, left_out.data()); + } else if (count_output == 1) { + lilv_instance_connect_port(instance, p.index, right_out.data()); + } + + count_output++; + } + } + } +} + +void Lv2Wrapper::connect_data_ports(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) { + int count_input = 0; + int count_output = 0; + + for (const auto& p : ports) { + if (p.type == PortType::TYPE_AUDIO) { + if (p.is_input) { + if (count_input == 0) { + lilv_instance_connect_port(instance, p.index, left_in.data()); + } else if (count_input == 1) { + lilv_instance_connect_port(instance, p.index, right_in.data()); + } else if (count_input == 2) { + lilv_instance_connect_port(instance, p.index, probe_left.data()); + } else if (count_input == 3) { + lilv_instance_connect_port(instance, p.index, probe_right.data()); + } + + count_input++; + } else { + if (count_output == 0) { + lilv_instance_connect_port(instance, p.index, left_out.data()); + } else if (count_output == 1) { + lilv_instance_connect_port(instance, p.index, right_out.data()); + } + + count_output++; + } + } + } +} + +void Lv2Wrapper::set_n_samples(const uint& value) { + this->n_samples = value; +} + +auto Lv2Wrapper::get_n_samples() const -> uint { + return this->n_samples; +} + +auto Lv2Wrapper::get_rate() const -> uint { + return this->rate; +} + +void Lv2Wrapper::activate() { + lilv_instance_activate(instance); +} + +void Lv2Wrapper::run() const { + if (instance != nullptr) { + lilv_instance_run(instance, n_samples); + } +} + +void Lv2Wrapper::deactivate() { + lilv_instance_deactivate(instance); +} + +void Lv2Wrapper::set_control_port_value(const std::string& symbol, const float& value) { + auto found = false; + + for (auto& p : ports) { + if (p.type == PortType::TYPE_CONTROL && p.symbol == symbol) { + if (!p.is_input) { + util::warning(plugin_uri + " port " + symbol + " is not an input!"); + + return; + } + + p.value = value; + + found = true; + + break; + } + } + + if (!found) { + util::warning(plugin_uri + " port symbol not found: " + symbol); + } +} +auto Lv2Wrapper::get_control_port_value(const std::string& symbol) -> float { + for (const auto& p : ports) { + if (p.type == PortType::TYPE_CONTROL && p.symbol == symbol) { + return p.value; + } + } + + util::warning(plugin_uri + " port symbol not found: " + symbol); + + return 0.0F; +} + +auto Lv2Wrapper::has_instance() -> bool { + return instance != nullptr; +} + +auto Lv2Wrapper::map_urid(const std::string& uri) -> LV2_URID { + if (map_uri_to_urid.contains(uri)) { + return map_uri_to_urid[uri]; + } + + const auto hash = std::hash{}(uri); + + map_uri_to_urid[uri] = hash; + + map_urid_to_uri[hash] = uri; + + return static_cast(hash); +} + +} // namespace lv2 diff --git a/src/maximizer.cpp b/src/maximizer.cpp new file mode 100644 index 0000000..edc0f91 --- /dev/null +++ b/src/maximizer.cpp @@ -0,0 +1,141 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "maximizer.hpp" + +Maximizer::Maximizer(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::maximizer, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("urn:zamaudio:ZaMaximX2")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "urn:zamaudio:ZaMaximX2 is not installed"); + } + + lv2_wrapper->bind_key_double<"thresh", "threshold">(settings); + + lv2_wrapper->bind_key_double<"ceil", "ceiling">(settings); + + lv2_wrapper->bind_key_double<"rel", "release">(settings); + + setup_input_output_gain(); +} + +Maximizer::~Maximizer() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Maximizer::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Maximizer::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("lv2_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + util::idle_add([=, this]() { + if (!post_messages) { + return; + } + + latency.emit(latency_port_value); + }); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + // reduction needed as double for levelbar widget ui, so we convert it here + + reduction_port_value = static_cast(lv2_wrapper->get_control_port_value("gr")); + + reduction.emit(reduction_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Maximizer::get_latency_seconds() -> float { + return latency_port_value; +} \ No newline at end of file diff --git a/src/maximizer_preset.cpp b/src/maximizer_preset.cpp new file mode 100644 index 0000000..0ce3a42 --- /dev/null +++ b/src/maximizer_preset.cpp @@ -0,0 +1,54 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "maximizer_preset.hpp" + +MaximizerPreset::MaximizerPreset() { + input_settings = g_settings_new_with_path(tags::schema::maximizer::id, tags::schema::maximizer::input_path); + + output_settings = g_settings_new_with_path(tags::schema::maximizer::id, tags::schema::maximizer::output_path); +} + +void MaximizerPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["maximizer"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["maximizer"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["maximizer"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["maximizer"]["release"] = g_settings_get_double(settings, "release"); + + json[section]["maximizer"]["ceiling"] = g_settings_get_double(settings, "ceiling"); + + json[section]["maximizer"]["threshold"] = g_settings_get_double(settings, "threshold"); +} + +void MaximizerPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("maximizer"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("maximizer"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("maximizer"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("maximizer"), settings, "release", "release"); + + update_key(json.at(section).at("maximizer"), settings, "ceiling", "ceiling"); + + update_key(json.at(section).at("maximizer"), settings, "threshold", "threshold"); +} diff --git a/src/maximizer_ui.cpp b/src/maximizer_ui.cpp new file mode 100644 index 0000000..6acc252 --- /dev/null +++ b/src/maximizer_ui.cpp @@ -0,0 +1,205 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "maximizer_ui.hpp" + +namespace ui::maximizer_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr maximizer; + + std::vector connections; + + std::vector gconnections; +}; + +struct _MaximizerBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkSpinButton *release, *threshold, *ceiling; + + GtkLevelBar* reduction_levelbar; + + GtkLabel* reduction_label; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(MaximizerBox, maximizer_box, GTK_TYPE_BOX) + +void on_reset(MaximizerBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(MaximizerBox* self, std::shared_ptr maximizer, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->maximizer = maximizer; + + self->settings = g_settings_new_with_path(tags::schema::maximizer::id, schema_path.c_str()); + + maximizer->set_post_messages(true); + + self->data->connections.push_back(maximizer->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(maximizer->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(maximizer->reduction.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->reduction_levelbar) || !GTK_IS_LABEL(self->reduction_label)) { + return; + } + + gtk_level_bar_set_value(self->reduction_levelbar, value); + gtk_label_set_text(self->reduction_label, fmt::format("{0:.0f}", value).c_str()); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "ceiling", gtk_spin_button_get_adjustment(self->ceiling), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "release", gtk_spin_button_get_adjustment(self->release), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "threshold", gtk_spin_button_get_adjustment(self->threshold), "value", + G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_MAXIMIZER_BOX(object); + + self->data->maximizer->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(maximizer_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_MAXIMIZER_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(maximizer_box_parent_class)->finalize(object); +} + +void maximizer_box_class_init(MaximizerBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::maximizer_ui); + + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, release); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, threshold); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, ceiling); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, reduction_levelbar); + gtk_widget_class_bind_template_child(widget_class, MaximizerBox, reduction_label); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void maximizer_box_init(MaximizerBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->threshold, self->ceiling); + + prepare_spinbuttons<"ms">(self->release); +} + +auto create() -> MaximizerBox* { + return static_cast(g_object_new(EE_TYPE_MAXIMIZER_BOX, nullptr)); +} + +} // namespace ui::maximizer_box diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..6fb5c11 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,159 @@ +easyeffects_sources = [ + 'easyeffects.cpp', + 'application.cpp', + 'application_ui.cpp', + 'apps_box.cpp', + 'app_info.cpp', + 'autogain.cpp', + 'autogain_preset.cpp', + 'autogain_ui.cpp', + 'bass_enhancer.cpp', + 'bass_enhancer_preset.cpp', + 'bass_enhancer_ui.cpp', + 'bass_loudness.cpp', + 'bass_loudness_preset.cpp', + 'bass_loudness_ui.cpp', + 'blocklist_menu.cpp', + 'chart.cpp', + 'client_info_holder.cpp', + 'compressor.cpp', + 'compressor_preset.cpp', + 'compressor_ui.cpp', + 'convolver.cpp', + 'convolver_menu_impulses.cpp', + 'convolver_menu_combine.cpp', + 'convolver_preset.cpp', + 'convolver_ui.cpp', + 'convolver_ui_common.cpp', + 'crossfeed.cpp', + 'crossfeed_preset.cpp', + 'crossfeed_ui.cpp', + 'crystalizer.cpp', + 'crystalizer_preset.cpp', + 'crystalizer_ui.cpp', + 'deesser.cpp', + 'deesser_preset.cpp', + 'deesser_ui.cpp', + 'delay.cpp', + 'delay_preset.cpp', + 'delay_ui.cpp', + 'echo_canceller.cpp', + 'echo_canceller_preset.cpp', + 'echo_canceller_ui.cpp', + 'effects_base.cpp', + 'effects_box.cpp', + 'equalizer_band_box.cpp', + 'equalizer.cpp', + 'equalizer_preset.cpp', + 'equalizer_ui.cpp', + 'exciter.cpp', + 'exciter_preset.cpp', + 'exciter_ui.cpp', + 'filter.cpp', + 'filter_preset.cpp', + 'filter_ui.cpp', + 'fir_filter_bandpass.cpp', + 'fir_filter_base.cpp', + 'fir_filter_lowpass.cpp', + 'fir_filter_highpass.cpp', + 'gate.cpp', + 'gate_preset.cpp', + 'gate_ui.cpp', + 'limiter.cpp', + 'limiter_preset.cpp', + 'limiter_ui.cpp', + 'loudness.cpp', + 'loudness_preset.cpp', + 'loudness_ui.cpp', + 'lv2_wrapper.cpp', + 'maximizer.cpp', + 'maximizer_preset.cpp', + 'maximizer_ui.cpp', + 'module_info_holder.cpp', + 'multiband_compressor.cpp', + 'multiband_compressor_band_box.cpp', + 'multiband_compressor_preset.cpp', + 'multiband_compressor_ui.cpp', + 'multiband_gate.cpp', + 'multiband_gate_preset.cpp', + 'multiband_gate_ui.cpp', + 'node_info_holder.cpp', + 'output_level.cpp', + 'pipe_manager.cpp', + 'pipe_manager_box.cpp', + 'pitch.cpp', + 'pitch_preset.cpp', + 'pitch_ui.cpp', + 'plugin_base.cpp', + 'plugins_box.cpp', + 'plugins_menu.cpp', + 'preferences_general.cpp', + 'preferences_spectrum.cpp', + 'preferences_window.cpp', + 'presets_autoloading_holder.cpp', + 'presets_menu.cpp', + 'presets_manager.cpp', + 'reverb.cpp', + 'reverb_preset.cpp', + 'reverb_ui.cpp', + 'resampler.cpp', + 'rnnoise.cpp', + 'rnnoise_preset.cpp', + 'rnnoise_ui.cpp', + 'spectrum.cpp', + 'stereo_tools.cpp', + 'stereo_tools_preset.cpp', + 'stereo_tools_ui.cpp', + 'stream_output_effects.cpp', + 'stream_input_effects.cpp', + 'tags_plugin_name.cpp', + 'test_signals.cpp', + 'ui_helpers.cpp', + 'util.cpp', + gresources +] + +cxx = meson.get_compiler('cpp') + +zita_convolver = cxx.find_library('zita-convolver', required: true) + +tbb = cxx.find_library('tbb', required: true) + +rnnoise = dependency('rnnoise', required: false) + +if rnnoise.found() + add_global_arguments('-DRNNOISE_AVAILABLE=1', language : 'cpp') +else + message('The RNNoise library was not found. The calls to its functions will be disabled') +endif + +easyeffects_deps = [ + dependency('libpipewire-0.3', version: '>=0.3.41'), + dependency('glib-2.0', version: '>=2.56'), + dependency('gtk4', version: '>=4.2.1'), + dependency('libadwaita-1', version: '>=1.0.0'), + dependency('sigc++-3.0', version: '>=3.0.6'), + dependency('lilv-0', version: '>=0.22'), + dependency('lv2', version: '>=1.18.2'), + dependency('libbs2b'), + dependency('sndfile'), + dependency('fftw3f'), + dependency('libebur128',version: '>=1.2.0'), + dependency('samplerate'), + dependency('rubberband'), + dependency('speexdsp'), + dependency('nlohmann_json'), + dependency('fmt', version: '>=8.0.0'), + dependency('threads'), + tbb, + zita_convolver, + rnnoise +] + +executable( + meson.project_name(), + easyeffects_sources, + include_directories : [include_dir,config_h_dir], + dependencies : easyeffects_deps, + install: true +) diff --git a/src/module_info_holder.cpp b/src/module_info_holder.cpp new file mode 100644 index 0000000..bebf3bd --- /dev/null +++ b/src/module_info_holder.cpp @@ -0,0 +1,122 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "module_info_holder.hpp" + +namespace ui::holders { + +enum { PROP_0, PROP_ID, PROP_NAME, PROP_DESCRIPTION, PROP_FILENAME }; + +G_DEFINE_TYPE(ModuleInfoHolder, module_info_holder, G_TYPE_OBJECT); + +void module_info_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) { + auto* self = EE_MODULE_INFO_HOLDER(object); + + switch (prop_id) { + case PROP_ID: + self->info->id = g_value_get_uint(value); + break; + case PROP_NAME: + self->info->name = g_value_get_string(value); + break; + case PROP_DESCRIPTION: + self->info->description = g_value_get_string(value); + break; + case PROP_FILENAME: + self->info->filename = g_value_get_string(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +void module_info_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) { + auto* self = EE_MODULE_INFO_HOLDER(object); + + switch (prop_id) { + case PROP_ID: + g_value_set_uint(value, self->info->id); + break; + case PROP_NAME: + g_value_set_string(value, self->info->name.c_str()); + break; + case PROP_DESCRIPTION: + g_value_set_string(value, self->info->description.c_str()); + break; + case PROP_FILENAME: + g_value_set_string(value, self->info->filename.c_str()); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +void module_info_holder_finalize(GObject* object) { + auto* self = EE_MODULE_INFO_HOLDER(object); + + self->info_updated.clear(); + + util::debug(util::to_string(self->info->id) + ", " + self->info->name + " finalized"); + + delete self->info; + + G_OBJECT_CLASS(module_info_holder_parent_class)->finalize(object); +} + +void module_info_holder_class_init(ModuleInfoHolderClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + + object_class->finalize = module_info_holder_finalize; + object_class->set_property = module_info_set_property; + object_class->get_property = module_info_get_property; + + g_object_class_install_property( + object_class, PROP_ID, + g_param_spec_uint("id", "Id", "Id", G_MININT, G_MAXUINT, SPA_ID_INVALID, G_PARAM_READWRITE)); + + g_object_class_install_property(object_class, PROP_NAME, + g_param_spec_string("name", "Name", "Name", nullptr, G_PARAM_READWRITE)); + + g_object_class_install_property( + object_class, PROP_DESCRIPTION, + g_param_spec_string("description", "Description", "Description", nullptr, G_PARAM_READWRITE)); + + g_object_class_install_property( + object_class, PROP_FILENAME, + g_param_spec_string("file-name", "File Name", "File Name", nullptr, G_PARAM_READWRITE)); +} + +void module_info_holder_init(ModuleInfoHolder* self) { + self->info = new ModuleInfo(); +} + +auto create(const ModuleInfo& info) -> ModuleInfoHolder* { + auto* holder = static_cast(g_object_new(EE_TYPE_MODULE_INFO_HOLDER, nullptr)); + + holder->info->id = info.id; + holder->info->name = info.name; + holder->info->description = info.description; + holder->info->filename = info.filename; + + return holder; +} + +} // namespace ui::holders diff --git a/src/multiband_compressor.cpp b/src/multiband_compressor.cpp new file mode 100644 index 0000000..89ca798 --- /dev/null +++ b/src/multiband_compressor.cpp @@ -0,0 +1,216 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "multiband_compressor.hpp" + +MultibandCompressor::MultibandCompressor(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::multiband_compressor, schema, schema_path, pipe_manager, true), + lv2_wrapper(std::make_unique("http://lsp-plug.in/plugins/lv2/sc_mb_compressor_stereo")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://lsp-plug.in/plugins/lv2/sc_mb_compressor_stereo is not installed"); + } + + gconnections.push_back(g_signal_connect(settings, "changed::sidechain-input-device", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->update_sidechain_links(key); + }), + this)); + + lv2_wrapper->bind_key_enum<"mode", "compressor-mode">(settings); + + lv2_wrapper->bind_key_enum<"envb", "envelope-boost">(settings); + + bind_bands(std::make_index_sequence()); + + setup_input_output_gain(); +} + +MultibandCompressor::~MultibandCompressor() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void MultibandCompressor::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void MultibandCompressor::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out, probe_left, probe_right); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + /* + This plugin gives the latency in number of samples + */ + + const auto lv = static_cast(lv2_wrapper->get_control_port_value("out_latency")); + + if (latency_n_frames != lv) { + latency_n_frames = lv; + + latency_port_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_port_value, "") + " s"); + + util::idle_add([=, this]() { + if (!post_messages) { + return; + } + + latency.emit(latency_port_value); + }); + + g_idle_add((GSourceFunc) + + [](gpointer user_data) { + auto* self = static_cast(user_data); + + if (!self->post_messages) { + return G_SOURCE_REMOVE; + } + + if (self->latency.empty()) { + return G_SOURCE_REMOVE; + } + + self->latency.emit(self->latency_port_value); + + return G_SOURCE_REMOVE; + }, + this); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_port_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + for (uint n = 0U; n < n_bands; n++) { + const auto nstr = util::to_string(n); + + frequency_range_end_port_array.at(n) = lv2_wrapper->get_control_port_value("fre_" + nstr); + envelope_port_array.at(n) = lv2_wrapper->get_control_port_value("elm_" + nstr); + curve_port_array.at(n) = lv2_wrapper->get_control_port_value("clm_" + nstr); + reduction_port_array.at(n) = lv2_wrapper->get_control_port_value("rlm_" + nstr); + } + + frequency_range.emit(frequency_range_end_port_array); + envelope.emit(envelope_port_array); + curve.emit(curve_port_array); + reduction.emit(reduction_port_array); + + notify(); + + notification_dt = 0.0F; + } + } +} + +void MultibandCompressor::update_sidechain_links(const std::string& key) { + auto external_sidechain_enabled = false; + + for (uint n = 0U; !external_sidechain_enabled && n < n_bands; n++) { + const auto nstr = util::to_string(n); + + external_sidechain_enabled = g_settings_get_boolean(settings, ("external-sidechain" + nstr).c_str()) != 0; + } + + if (external_sidechain_enabled) { + const auto device_name = util::gsettings_get_string(settings, "sidechain-input-device"); + + NodeInfo input_device = pm->ee_source_node; + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == device_name) { + input_device = node; + + break; + } + } + + pm->destroy_links(list_proxies); + + list_proxies.clear(); + + for (const auto& link : pm->link_nodes(input_device.id, get_node_id(), true)) { + list_proxies.push_back(link); + } + } else { + pm->destroy_links(list_proxies); + + list_proxies.clear(); + } +} + +void MultibandCompressor::update_probe_links() { + update_sidechain_links(""); +} + +auto MultibandCompressor::get_latency_seconds() -> float { + return latency_port_value; +} diff --git a/src/multiband_compressor_band_box.cpp b/src/multiband_compressor_band_box.cpp new file mode 100644 index 0000000..6957a60 --- /dev/null +++ b/src/multiband_compressor_band_box.cpp @@ -0,0 +1,302 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "multiband_compressor_band_box.hpp" + +namespace ui::multiband_compressor_band_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + int index; + + std::vector gconnections; +}; + +struct _MultibandCompressorBandBox { + GtkBox parent_instance; + + GtkToggleButton *bypass, *mute, *solo; + + GtkLabel *end_label, *gain_label, *envelope_label, *curve_label; + + GtkSpinButton *split_frequency, *lowcut_filter_frequency, *highcut_filter_frequency, *attack_time, *attack_threshold, + *release_time, *release_threshold, *ratio, *knee, *makeup, *sidechain_preamp, *sidechain_reactivity, + *sidechain_lookahead, *boost_amount, *boost_threshold; + + GtkCheckButton *lowcut_filter, *highcut_filter, *external_sidechain; + + GtkComboBoxText *compression_mode, *sidechain_mode, *sidechain_source; + + GtkBox* split_frequency_box; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(MultibandCompressorBandBox, multiband_compressor_band_box, GTK_TYPE_BOX) + +gboolean set_boost_threshold_sensitive(MultibandCompressorBandBox* self, const char* active_id) { + if (g_strcmp0(active_id, "Downward") == 0 || g_strcmp0(active_id, "Boosting") == 0) { + return 0; + } else if (g_strcmp0(active_id, "Upward") == 0) { + return 1; + } + + return 1; +} + +gboolean set_boost_amount_sensitive(MultibandCompressorBandBox* self, const char* active_id) { + if (g_strcmp0(active_id, "Downward") == 0 || g_strcmp0(active_id, "Upward") == 0) { + return 0; + } else if (g_strcmp0(active_id, "Boosting") == 0) { + return 1; + } + + return 1; +} + +void set_end_label(MultibandCompressorBandBox* self, const float& value) { + if (!GTK_IS_WIDGET(self)) { + return; + } + + if (!GTK_IS_LABEL(self->end_label)) { + return; + } + + gtk_label_set_text(self->end_label, fmt::format("{0:.0f}", value).c_str()); +} + +void set_envelope_label(MultibandCompressorBandBox* self, const float& value) { + if (!GTK_IS_WIDGET(self)) { + return; + } + + if (!GTK_IS_LABEL(self->envelope_label)) { + return; + } + + gtk_label_set_text(self->envelope_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); +} + +void set_curve_label(MultibandCompressorBandBox* self, const float& value) { + if (!GTK_IS_WIDGET(self)) { + return; + } + + if (!GTK_IS_LABEL(self->curve_label)) { + return; + } + + gtk_label_set_text(self->curve_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); +} + +void set_gain_label(MultibandCompressorBandBox* self, const float& value) { + if (!GTK_IS_WIDGET(self)) { + return; + } + + if (!GTK_IS_LABEL(self->gain_label)) { + return; + } + + gtk_label_set_text(self->gain_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); +} + +void setup(MultibandCompressorBandBox* self, GSettings* settings, int index) { + self->data->index = index; + self->settings = settings; + + using namespace tags::multiband_compressor; + + if (index > 0) { + g_settings_bind(settings, band_split_frequency[index], gtk_spin_button_get_adjustment(self->split_frequency), + "value", G_SETTINGS_BIND_DEFAULT); + } else { + // removing split frequency from band 0 + + for (auto* child = gtk_widget_get_last_child(GTK_WIDGET(self->split_frequency_box)); child != nullptr; + child = gtk_widget_get_last_child(GTK_WIDGET(self->split_frequency_box))) { + gtk_box_remove(self->split_frequency_box, child); + } + + auto* label = gtk_label_new("0 Hz"); + + gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_CENTER); + + gtk_box_append(self->split_frequency_box, GTK_WIDGET(label)); + } + + g_settings_bind(self->settings, band_compression_mode[index], self->compression_mode, "active-id", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, band_compressor_enable[index], self->bypass, "active", + G_SETTINGS_BIND_INVERT_BOOLEAN); + + g_settings_bind(self->settings, band_mute[index], self->mute, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, band_solo[index], self->solo, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, band_lowcut_filter[index], self->lowcut_filter, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, band_highcut_filter[index], self->highcut_filter, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, band_external_sidechain[index], self->external_sidechain, "active", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, band_sidechain_mode[index], self->sidechain_mode, "active-id", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, band_sidechain_source[index], self->sidechain_source, "active-id", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_lowcut_filter_frequency[index], + gtk_spin_button_get_adjustment(self->lowcut_filter_frequency), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_highcut_filter_frequency[index], + gtk_spin_button_get_adjustment(self->highcut_filter_frequency), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_attack_time[index], gtk_spin_button_get_adjustment(self->attack_time), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_attack_threshold[index], gtk_spin_button_get_adjustment(self->attack_threshold), + "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_release_time[index], gtk_spin_button_get_adjustment(self->release_time), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_release_threshold[index], gtk_spin_button_get_adjustment(self->release_threshold), + "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_ratio[index], gtk_spin_button_get_adjustment(self->ratio), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_knee[index], gtk_spin_button_get_adjustment(self->knee), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_makeup[index], gtk_spin_button_get_adjustment(self->makeup), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_sidechain_preamp[index], gtk_spin_button_get_adjustment(self->sidechain_preamp), + "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_sidechain_reactivity[index], + gtk_spin_button_get_adjustment(self->sidechain_reactivity), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_sidechain_lookahead[index], gtk_spin_button_get_adjustment(self->sidechain_lookahead), + "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_boost_amount[index], gtk_spin_button_get_adjustment(self->boost_amount), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(settings, band_boost_threshold[index], gtk_spin_button_get_adjustment(self->boost_threshold), "value", + G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_MULTIBAND_COMPRESSOR_BAND_BOX(object); + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->gconnections.clear(); + + util::debug("index: " + util::to_string(self->data->index) + " disposed"); + + G_OBJECT_CLASS(multiband_compressor_band_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_MULTIBAND_COMPRESSOR_BAND_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(multiband_compressor_band_box_parent_class)->finalize(object); +} + +void multiband_compressor_band_box_class_init(MultibandCompressorBandBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::multiband_compressor_band_ui); + + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, bypass); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, mute); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, solo); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, external_sidechain); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, end_label); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, gain_label); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, envelope_label); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, curve_label); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, split_frequency); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, split_frequency_box); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, lowcut_filter); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, highcut_filter); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, lowcut_filter_frequency); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, highcut_filter_frequency); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, attack_time); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, attack_threshold); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, release_time); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, release_threshold); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, ratio); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, knee); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, makeup); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, sidechain_preamp); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, sidechain_reactivity); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, sidechain_lookahead); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, boost_amount); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, boost_threshold); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, compression_mode); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, sidechain_mode); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBandBox, sidechain_source); + + gtk_widget_class_bind_template_callback(widget_class, set_boost_amount_sensitive); + gtk_widget_class_bind_template_callback(widget_class, set_boost_threshold_sensitive); +} + +void multiband_compressor_band_box_init(MultibandCompressorBandBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_spinbuttons<"Hz">(self->lowcut_filter_frequency, self->highcut_filter_frequency, self->split_frequency); + + prepare_spinbuttons<"ms">(self->attack_time, self->release_time, self->sidechain_reactivity, + self->sidechain_lookahead); + + prepare_spinbuttons<"dB">(self->attack_threshold, self->release_threshold, self->knee, self->makeup, + self->sidechain_preamp, self->boost_amount, self->boost_threshold); + + prepare_spinbuttons<"">(self->ratio); +} + +auto create() -> MultibandCompressorBandBox* { + return static_cast(g_object_new(EE_TYPE_MULTIBAND_COMPRESSOR_BAND_BOX, nullptr)); +} + +} // namespace ui::multiband_compressor_band_box diff --git a/src/multiband_compressor_preset.cpp b/src/multiband_compressor_preset.cpp new file mode 100644 index 0000000..b4a25ac --- /dev/null +++ b/src/multiband_compressor_preset.cpp @@ -0,0 +1,208 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "multiband_compressor_preset.hpp" + +MultibandCompressorPreset::MultibandCompressorPreset() { + input_settings = + g_settings_new_with_path(tags::schema::multiband_compressor::id, tags::schema::multiband_compressor::input_path); + + output_settings = + g_settings_new_with_path(tags::schema::multiband_compressor::id, tags::schema::multiband_compressor::output_path); +} + +void MultibandCompressorPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["multiband_compressor"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["multiband_compressor"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["multiband_compressor"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["multiband_compressor"]["compressor-mode"] = util::gsettings_get_string(settings, "compressor-mode"); + + json[section]["multiband_compressor"]["envelope-boost"] = util::gsettings_get_string(settings, "envelope-boost"); + + for (uint n = 0U; n < n_bands; n++) { + const auto nstr = util::to_string(n); + const auto bandn = "band" + nstr; + + if (n > 0U) { + json[section]["multiband_compressor"][bandn]["enable-band"] = + g_settings_get_boolean(settings, ("enable-band" + nstr).c_str()) != 0; + + json[section]["multiband_compressor"][bandn]["split-frequency"] = + g_settings_get_double(settings, ("split-frequency" + nstr).c_str()); + } + + json[section]["multiband_compressor"][bandn]["compressor-enable"] = + g_settings_get_boolean(settings, ("compressor-enable" + nstr).c_str()) != 0; + + json[section]["multiband_compressor"][bandn]["solo"] = + g_settings_get_boolean(settings, ("solo" + nstr).c_str()) != 0; + + json[section]["multiband_compressor"][bandn]["mute"] = + g_settings_get_boolean(settings, ("mute" + nstr).c_str()) != 0; + + json[section]["multiband_compressor"][bandn]["attack-threshold"] = + g_settings_get_double(settings, ("attack-threshold" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["attack-time"] = + g_settings_get_double(settings, ("attack-time" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["release-threshold"] = + g_settings_get_double(settings, ("release-threshold" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["release-time"] = + g_settings_get_double(settings, ("release-time" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["ratio"] = g_settings_get_double(settings, ("ratio" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["knee"] = g_settings_get_double(settings, ("knee" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["makeup"] = g_settings_get_double(settings, ("makeup" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["compression-mode"] = + util::gsettings_get_string(settings, ("compression-mode" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["external-sidechain"] = + g_settings_get_boolean(settings, ("external-sidechain" + nstr).c_str()) != 0; + + json[section]["multiband_compressor"][bandn]["sidechain-mode"] = + util::gsettings_get_string(settings, ("sidechain-mode" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["sidechain-source"] = + util::gsettings_get_string(settings, ("sidechain-source" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["sidechain-lookahead"] = + g_settings_get_double(settings, ("sidechain-lookahead" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["sidechain-reactivity"] = + g_settings_get_double(settings, ("sidechain-reactivity" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["sidechain-preamp"] = + g_settings_get_double(settings, ("sidechain-preamp" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["sidechain-custom-lowcut-filter"] = + g_settings_get_boolean(settings, ("sidechain-custom-lowcut-filter" + nstr).c_str()) != 0; + + json[section]["multiband_compressor"][bandn]["sidechain-custom-highcut-filter"] = + g_settings_get_boolean(settings, ("sidechain-custom-highcut-filter" + nstr).c_str()) != 0; + + json[section]["multiband_compressor"][bandn]["sidechain-lowcut-frequency"] = + g_settings_get_double(settings, ("sidechain-lowcut-frequency" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["sidechain-highcut-frequency"] = + g_settings_get_double(settings, ("sidechain-highcut-frequency" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["boost-threshold"] = + g_settings_get_double(settings, ("boost-threshold" + nstr).c_str()); + + json[section]["multiband_compressor"][bandn]["boost-amount"] = + g_settings_get_double(settings, ("boost-amount" + nstr).c_str()); + } +} + +void MultibandCompressorPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("multiband_compressor"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("multiband_compressor"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("multiband_compressor"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("multiband_compressor"), settings, "compressor-mode", "compressor-mode"); + + update_key(json.at(section).at("multiband_compressor"), settings, "envelope-boost", "envelope-boost"); + + for (uint n = 0U; n < n_bands; n++) { + const auto nstr = util::to_string(n); + const auto bandn = "band" + nstr; + + if (n > 0U) { + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "enable-band" + nstr, + "enable-band"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "split-frequency" + nstr, + "split-frequency"); + } + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "compressor-enable" + nstr, + "compressor-enable"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "solo" + nstr, "solo"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "mute" + nstr, "mute"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "attack-threshold" + nstr, + "attack-threshold"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "attack-time" + nstr, + "attack-time"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "release-threshold" + nstr, + "release-threshold"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "release-time" + nstr, + "release-time"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "ratio" + nstr, "ratio"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "knee" + nstr, "knee"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "makeup" + nstr, "makeup"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "compression-mode" + nstr, + "compression-mode"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "external-sidechain" + nstr, + "external-sidechain"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "sidechain-mode" + nstr, + "sidechain-mode"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "sidechain-source" + nstr, + "sidechain-source"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "sidechain-lookahead" + nstr, + "sidechain-lookahead"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "sidechain-reactivity" + nstr, + "sidechain-reactivity"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "sidechain-preamp" + nstr, + "sidechain-preamp"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, + "sidechain-custom-lowcut-filter" + nstr, "sidechain-custom-lowcut-filter"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, + "sidechain-custom-highcut-filter" + nstr, "sidechain-custom-highcut-filter"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, + "sidechain-lowcut-frequency" + nstr, "sidechain-lowcut-frequency"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, + "sidechain-highcut-frequency" + nstr, "sidechain-highcut-frequency"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "boost-threshold" + nstr, + "boost-threshold"); + + update_key(json.at(section).at("multiband_compressor").at(bandn), settings, "boost-amount" + nstr, + "boost-amount"); + } +} diff --git a/src/multiband_compressor_ui.cpp b/src/multiband_compressor_ui.cpp new file mode 100644 index 0000000..60e013c --- /dev/null +++ b/src/multiband_compressor_ui.cpp @@ -0,0 +1,383 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "multiband_compressor_ui.hpp" + +namespace ui::multiband_compressor_box { + +using namespace std::string_literals; + +constexpr uint n_bands = 8U; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr multiband_compressor; + + std::vector connections; + + std::vector gconnections; +}; + +struct _MultibandCompressorBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkStack* stack; + + GtkCheckButton *enable_band1, *enable_band2, *enable_band3, *enable_band4, *enable_band5, *enable_band6, + *enable_band7; + + GtkComboBoxText *compressor_mode, *envelope_boost; + + GtkDropDown* dropdown_input_devices; + + GListStore* input_devices_model; + + GSettings* settings; + + std::array bands; + + Data* data; +}; + +G_DEFINE_TYPE(MultibandCompressorBox, multiband_compressor_box, GTK_TYPE_BOX) + +void on_reset(MultibandCompressorBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void on_listbox_row_selected(MultibandCompressorBox* self, GtkListBoxRow* row, GtkListBox* listbox) { + if (auto* selected_row = gtk_list_box_get_selected_row(listbox); selected_row != nullptr) { + if (auto index = gtk_list_box_row_get_index(selected_row); index != -1) { + gtk_stack_set_visible_child_name(self->stack, ("band" + util::to_string(index)).c_str()); + } + } +} + +void set_dropdown_input_devices_sensitivity(MultibandCompressorBox* self) { + for (uint n = 0U; n < n_bands; n++) { + if (g_settings_get_boolean(self->settings, tags::multiband_compressor::band_external_sidechain[n]) != 0) { + gtk_widget_set_sensitive(GTK_WIDGET(self->dropdown_input_devices), 1); + + return; + } + } + + gtk_widget_set_sensitive(GTK_WIDGET(self->dropdown_input_devices), 0); +} + +void create_bands(MultibandCompressorBox* self) { + for (uint n = 0; n < n_bands; n++) { + auto band_box = ui::multiband_compressor_band_box::create(); + + ui::multiband_compressor_band_box::setup(band_box, self->settings, n); + + gtk_stack_add_named(self->stack, GTK_WIDGET(band_box), ("band" + util::to_string(n)).c_str()); + + self->bands[n] = band_box; + + self->data->gconnections.push_back(g_signal_connect( + self->settings, ("changed::"s + tags::multiband_compressor::band_external_sidechain[n]).c_str(), + G_CALLBACK(+[](GSettings* settings, char* key, MultibandCompressorBox* self) { + set_dropdown_input_devices_sensitivity(self); + }), + self)); + } +} + +void setup_dropdown_input_device(MultibandCompressorBox* self) { + auto* selection = gtk_single_selection_new(G_LIST_MODEL(self->input_devices_model)); + + g_signal_connect(self->dropdown_input_devices, "notify::selected-item", + G_CALLBACK(+[](GtkDropDown* dropdown, GParamSpec* pspec, MultibandCompressorBox* self) { + if (auto selected_item = gtk_drop_down_get_selected_item(dropdown); selected_item != nullptr) { + auto* holder = static_cast(selected_item); + + g_settings_set_string(self->settings, "sidechain-input-device", holder->info->name.c_str()); + } + }), + self); + + gtk_drop_down_set_model(self->dropdown_input_devices, G_LIST_MODEL(self->input_devices_model)); + + g_object_unref(selection); +} + +void setup(MultibandCompressorBox* self, + std::shared_ptr multiband_compressor, + const std::string& schema_path, + PipeManager* pm) { + self->data->multiband_compressor = multiband_compressor; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::multiband_compressor::id, schema_path.c_str()); + + multiband_compressor->set_post_messages(true); + + setup_dropdown_input_device(self); + + set_dropdown_input_devices_sensitivity(self); + + create_bands(self); + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == tags::pipewire::ee_sink_name || node.name == tags::pipewire::ee_source_name) { + continue; + } + + if (node.media_class == tags::pipewire::media_class::source || + node.media_class == tags::pipewire::media_class::virtual_source) { + auto holder = ui::holders::create(node); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + } + } + + self->data->connections.push_back( + multiband_compressor->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back( + multiband_compressor->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back( + multiband_compressor->frequency_range.connect([=](const std::array& values) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + for (size_t n = 0U; n < values.size(); n++) { + ui::multiband_compressor_band_box::set_end_label(self->bands[n], values[n]); + } + }); + })); + + self->data->connections.push_back( + multiband_compressor->envelope.connect([=](const std::array& values) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + for (size_t n = 0U; n < values.size(); n++) { + ui::multiband_compressor_band_box::set_envelope_label(self->bands[n], values[n]); + } + }); + })); + + self->data->connections.push_back(multiband_compressor->curve.connect([=](const std::array& values) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + for (size_t n = 0U; n < values.size(); n++) { + ui::multiband_compressor_band_box::set_curve_label(self->bands[n], values[n]); + } + }); + })); + + self->data->connections.push_back( + multiband_compressor->reduction.connect([=](const std::array& values) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + for (size_t n = 0U; n < values.size(); n++) { + ui::multiband_compressor_band_box::set_gain_label(self->bands[n], values[n]); + } + }); + })); + + self->data->connections.push_back(pm->source_added.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + + auto holder = ui::holders::create(info); + + g_list_store_append(self->input_devices_model, holder); + + g_object_unref(holder); + })); + + self->data->connections.push_back(pm->source_removed.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_list_store_remove(self->input_devices_model, n); + + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "compressor-mode", self->compressor_mode, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "envelope-boost", self->envelope_boost, "active-id", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "enable-band1", self->enable_band1, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "enable-band2", self->enable_band2, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "enable-band3", self->enable_band3, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "enable-band4", self->enable_band4, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "enable-band5", self->enable_band5, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "enable-band6", self->enable_band6, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "enable-band7", self->enable_band7, "active", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_MULTIBAND_COMPRESSOR_BOX(object); + + self->data->multiband_compressor->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(multiband_compressor_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_MULTIBAND_COMPRESSOR_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(multiband_compressor_box_parent_class)->finalize(object); +} + +void multiband_compressor_box_class_init(MultibandCompressorBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::multiband_compressor_ui); + + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, stack); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, enable_band1); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, enable_band2); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, enable_band3); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, enable_band4); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, enable_band5); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, enable_band6); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, enable_band7); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, compressor_mode); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, envelope_boost); + gtk_widget_class_bind_template_child(widget_class, MultibandCompressorBox, dropdown_input_devices); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + gtk_widget_class_bind_template_callback(widget_class, on_listbox_row_selected); +} + +void multiband_compressor_box_init(MultibandCompressorBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->input_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + + prepare_scales<"dB">(self->input_gain, self->output_gain); +} + +auto create() -> MultibandCompressorBox* { + return static_cast(g_object_new(EE_TYPE_MULTIBAND_COMPRESSOR_BOX, nullptr)); +} + +} // namespace ui::multiband_compressor_box diff --git a/src/multiband_gate.cpp b/src/multiband_gate.cpp new file mode 100644 index 0000000..160299a --- /dev/null +++ b/src/multiband_gate.cpp @@ -0,0 +1,210 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "multiband_gate.hpp" + +MultibandGate::MultibandGate(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::multiband_gate, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://calf.sourceforge.net/plugins/MultibandGate")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://calf.sourceforge.net/plugins/MultibandGate is not installed"); + } + + lv2_wrapper->bind_key_enum<"mode", "mode">(settings); + + lv2_wrapper->bind_key_double<"freq0", "freq0">(settings); + + lv2_wrapper->bind_key_double<"freq1", "freq1">(settings); + + lv2_wrapper->bind_key_double<"freq2", "freq2">(settings); + + // sub band + + lv2_wrapper->bind_key_double_db<"range0", "range0">(settings); + + lv2_wrapper->bind_key_double_db<"threshold0", "threshold0">(settings); + + lv2_wrapper->bind_key_double_db<"makeup0", "makeup0">(settings); + + lv2_wrapper->bind_key_double_db<"knee0", "knee0">(settings); + + lv2_wrapper->bind_key_double<"ratio0", "ratio0">(settings); + + lv2_wrapper->bind_key_double<"attack0", "attack0">(settings); + + lv2_wrapper->bind_key_double<"release0", "release0">(settings); + + lv2_wrapper->bind_key_enum<"detection0", "detection0">(settings); + + lv2_wrapper->bind_key_bool<"bypass0", "bypass0">(settings); + + lv2_wrapper->bind_key_bool<"solo0", "solo0">(settings); + + // low band + + lv2_wrapper->bind_key_double_db<"range1", "range1">(settings); + + lv2_wrapper->bind_key_double_db<"threshold1", "threshold1">(settings); + + lv2_wrapper->bind_key_double_db<"makeup1", "makeup1">(settings); + + lv2_wrapper->bind_key_double_db<"knee1", "knee1">(settings); + + lv2_wrapper->bind_key_double<"ratio1", "ratio1">(settings); + + lv2_wrapper->bind_key_double<"attack1", "attack1">(settings); + + lv2_wrapper->bind_key_double<"release1", "release1">(settings); + + lv2_wrapper->bind_key_enum<"detection1", "detection1">(settings); + + lv2_wrapper->bind_key_bool<"bypass1", "bypass1">(settings); + + lv2_wrapper->bind_key_bool<"solo1", "solo1">(settings); + + // mid band + + lv2_wrapper->bind_key_double_db<"range2", "range2">(settings); + + lv2_wrapper->bind_key_double_db<"threshold2", "threshold2">(settings); + + lv2_wrapper->bind_key_double_db<"makeup2", "makeup2">(settings); + + lv2_wrapper->bind_key_double_db<"knee2", "knee2">(settings); + + lv2_wrapper->bind_key_double<"ratio2", "ratio2">(settings); + + lv2_wrapper->bind_key_double<"attack2", "attack2">(settings); + + lv2_wrapper->bind_key_double<"release2", "release2">(settings); + + lv2_wrapper->bind_key_enum<"detection2", "detection2">(settings); + + lv2_wrapper->bind_key_bool<"bypass2", "bypass2">(settings); + + lv2_wrapper->bind_key_bool<"solo2", "solo2">(settings); + + // high band + + lv2_wrapper->bind_key_double_db<"range3", "range3">(settings); + + lv2_wrapper->bind_key_double_db<"threshold3", "threshold3">(settings); + + lv2_wrapper->bind_key_double_db<"makeup3", "makeup3">(settings); + + lv2_wrapper->bind_key_double_db<"knee3", "knee3">(settings); + + lv2_wrapper->bind_key_double<"ratio3", "ratio3">(settings); + + lv2_wrapper->bind_key_double<"attack3", "attack3">(settings); + + lv2_wrapper->bind_key_double<"release3", "release3">(settings); + + lv2_wrapper->bind_key_enum<"detection3", "detection3">(settings); + + lv2_wrapper->bind_key_bool<"bypass3", "bypass3">(settings); + + lv2_wrapper->bind_key_bool<"solo3", "solo3">(settings); + + setup_input_output_gain(); +} + +MultibandGate::~MultibandGate() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void MultibandGate::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void MultibandGate::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + // values needed as double for levelbars widget ui, so we convert them here + + output0_port_value = static_cast(lv2_wrapper->get_control_port_value("output0")); + output1_port_value = static_cast(lv2_wrapper->get_control_port_value("output1")); + output2_port_value = static_cast(lv2_wrapper->get_control_port_value("output2")); + output3_port_value = static_cast(lv2_wrapper->get_control_port_value("output3")); + + gating0_port_value = static_cast(lv2_wrapper->get_control_port_value("gating0")); + gating1_port_value = static_cast(lv2_wrapper->get_control_port_value("gating1")); + gating2_port_value = static_cast(lv2_wrapper->get_control_port_value("gating2")); + gating3_port_value = static_cast(lv2_wrapper->get_control_port_value("gating3")); + + output0.emit(output0_port_value); + output1.emit(output1_port_value); + output2.emit(output2_port_value); + output3.emit(output3_port_value); + + gating0.emit(gating0_port_value); + gating1.emit(gating1_port_value); + gating2.emit(gating2_port_value); + gating3.emit(gating3_port_value); + + notify(); + + notification_dt = 0.0F; + } + } +} + +auto MultibandGate::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/multiband_gate_preset.cpp b/src/multiband_gate_preset.cpp new file mode 100644 index 0000000..7f022bb --- /dev/null +++ b/src/multiband_gate_preset.cpp @@ -0,0 +1,235 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "multiband_gate_preset.hpp" + +MultibandGatePreset::MultibandGatePreset() { + input_settings = g_settings_new_with_path(tags::schema::multiband_gate::id, tags::schema::multiband_gate::input_path); + + output_settings = + g_settings_new_with_path(tags::schema::multiband_gate::id, tags::schema::multiband_gate::output_path); +} + +void MultibandGatePreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["multiband_gate"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["multiband_gate"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["multiband_gate"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["multiband_gate"]["freq0"] = g_settings_get_double(settings, "freq0"); + + json[section]["multiband_gate"]["freq1"] = g_settings_get_double(settings, "freq1"); + + json[section]["multiband_gate"]["freq2"] = g_settings_get_double(settings, "freq2"); + + json[section]["multiband_gate"]["mode"] = util::gsettings_get_string(settings, "mode"); + + // sub band + + json[section]["multiband_gate"]["subband"]["reduction"] = g_settings_get_double(settings, "range0"); + + json[section]["multiband_gate"]["subband"]["threshold"] = g_settings_get_double(settings, "threshold0"); + + json[section]["multiband_gate"]["subband"]["ratio"] = g_settings_get_double(settings, "ratio0"); + + json[section]["multiband_gate"]["subband"]["attack"] = g_settings_get_double(settings, "attack0"); + + json[section]["multiband_gate"]["subband"]["release"] = g_settings_get_double(settings, "release0"); + + json[section]["multiband_gate"]["subband"]["makeup"] = g_settings_get_double(settings, "makeup0"); + + json[section]["multiband_gate"]["subband"]["knee"] = g_settings_get_double(settings, "knee0"); + + json[section]["multiband_gate"]["subband"]["detection"] = util::gsettings_get_string(settings, "detection0"); + + json[section]["multiband_gate"]["subband"]["bypass"] = g_settings_get_boolean(settings, "bypass0") != 0; + + json[section]["multiband_gate"]["subband"]["solo"] = g_settings_get_boolean(settings, "solo0") != 0; + + // low band + + json[section]["multiband_gate"]["lowband"]["reduction"] = g_settings_get_double(settings, "range1"); + + json[section]["multiband_gate"]["lowband"]["threshold"] = g_settings_get_double(settings, "threshold1"); + + json[section]["multiband_gate"]["lowband"]["ratio"] = g_settings_get_double(settings, "ratio1"); + + json[section]["multiband_gate"]["lowband"]["attack"] = g_settings_get_double(settings, "attack1"); + + json[section]["multiband_gate"]["lowband"]["release"] = g_settings_get_double(settings, "release1"); + + json[section]["multiband_gate"]["lowband"]["makeup"] = g_settings_get_double(settings, "makeup1"); + + json[section]["multiband_gate"]["lowband"]["knee"] = g_settings_get_double(settings, "knee1"); + + json[section]["multiband_gate"]["lowband"]["detection"] = util::gsettings_get_string(settings, "detection1"); + + json[section]["multiband_gate"]["lowband"]["bypass"] = g_settings_get_boolean(settings, "bypass1") != 0; + + json[section]["multiband_gate"]["lowband"]["solo"] = g_settings_get_boolean(settings, "solo1") != 0; + + // mid band + + json[section]["multiband_gate"]["midband"]["reduction"] = g_settings_get_double(settings, "range2"); + + json[section]["multiband_gate"]["midband"]["threshold"] = g_settings_get_double(settings, "threshold2"); + + json[section]["multiband_gate"]["midband"]["ratio"] = g_settings_get_double(settings, "ratio2"); + + json[section]["multiband_gate"]["midband"]["attack"] = g_settings_get_double(settings, "attack2"); + + json[section]["multiband_gate"]["midband"]["release"] = g_settings_get_double(settings, "release2"); + + json[section]["multiband_gate"]["midband"]["makeup"] = g_settings_get_double(settings, "makeup2"); + + json[section]["multiband_gate"]["midband"]["knee"] = g_settings_get_double(settings, "knee2"); + + json[section]["multiband_gate"]["midband"]["detection"] = util::gsettings_get_string(settings, "detection2"); + + json[section]["multiband_gate"]["midband"]["bypass"] = g_settings_get_boolean(settings, "bypass2") != 0; + + json[section]["multiband_gate"]["midband"]["solo"] = g_settings_get_boolean(settings, "solo2") != 0; + + // high band + + json[section]["multiband_gate"]["highband"]["reduction"] = g_settings_get_double(settings, "range3"); + + json[section]["multiband_gate"]["highband"]["threshold"] = g_settings_get_double(settings, "threshold3"); + + json[section]["multiband_gate"]["highband"]["ratio"] = g_settings_get_double(settings, "ratio3"); + + json[section]["multiband_gate"]["highband"]["attack"] = g_settings_get_double(settings, "attack3"); + + json[section]["multiband_gate"]["highband"]["release"] = g_settings_get_double(settings, "release3"); + + json[section]["multiband_gate"]["highband"]["makeup"] = g_settings_get_double(settings, "makeup3"); + + json[section]["multiband_gate"]["highband"]["knee"] = g_settings_get_double(settings, "knee3"); + + json[section]["multiband_gate"]["highband"]["detection"] = util::gsettings_get_string(settings, "detection3"); + + json[section]["multiband_gate"]["highband"]["bypass"] = g_settings_get_boolean(settings, "bypass3") != 0; + + json[section]["multiband_gate"]["highband"]["solo"] = g_settings_get_boolean(settings, "solo3") != 0; +} + +void MultibandGatePreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("multiband_gate"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("multiband_gate"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("multiband_gate"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("multiband_gate"), settings, "freq0", "freq0"); + + update_key(json.at(section).at("multiband_gate"), settings, "freq1", "freq1"); + + update_key(json.at(section).at("multiband_gate"), settings, "freq2", "freq2"); + + update_key(json.at(section).at("multiband_gate"), settings, "mode", "mode"); + + // sub band + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "range0", "reduction"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "threshold0", "threshold"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "ratio0", "ratio"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "attack0", "attack"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "release0", "release"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "makeup0", "makeup"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "knee0", "knee"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "detection0", "detection"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "bypass0", "bypass"); + + update_key(json.at(section).at("multiband_gate").at("subband"), settings, "solo0", "solo"); + + // low band + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "range1", "reduction"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "threshold1", "threshold"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "ratio1", "ratio"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "attack1", "attack"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "release1", "release"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "makeup1", "makeup"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "knee1", "knee"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "detection1", "detection"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "bypass1", "bypass"); + + update_key(json.at(section).at("multiband_gate").at("lowband"), settings, "solo1", "solo"); + + // mid band + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "range2", "reduction"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "threshold2", "threshold"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "ratio2", "ratio"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "attack2", "attack"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "release2", "release"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "makeup2", "makeup"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "knee2", "knee"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "detection2", "detection"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "bypass2", "bypass"); + + update_key(json.at(section).at("multiband_gate").at("midband"), settings, "solo2", "solo"); + + // high band + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "range3", "reduction"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "threshold3", "threshold"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "ratio3", "ratio"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "attack3", "attack"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "release3", "release"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "makeup3", "makeup"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "knee3", "knee"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "detection3", "detection"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "bypass3", "bypass"); + + update_key(json.at(section).at("multiband_gate").at("highband"), settings, "solo3", "solo"); +} diff --git a/src/multiband_gate_ui.cpp b/src/multiband_gate_ui.cpp new file mode 100644 index 0000000..0c57d7d --- /dev/null +++ b/src/multiband_gate_ui.cpp @@ -0,0 +1,404 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "multiband_gate_ui.hpp" + +namespace ui::multiband_gate_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr multiband_gate; + + std::vector connections; + + std::vector gconnections; +}; + +struct _MultibandGateBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkLevelBar *output0, *output1, *output2, *output3, *gating0, *gating1, *gating2, *gating3; + + GtkLabel *output0_label, *output1_label, *output2_label, *output3_label, *gating0_label, *gating1_label, + *gating2_label, *gating3_label; + + GtkSpinButton *freq0, *freq1, *freq2, *range0, *range1, *range2, *range3, *attack0, *attack1, *attack2, *attack3, + *release0, *release1, *release2, *release3, *threshold0, *threshold1, *threshold2, *threshold3, *knee0, *knee1, + *knee2, *knee3, *ratio0, *ratio1, *ratio2, *ratio3, *makeup0, *makeup1, *makeup2, *makeup3; + + GtkComboBoxText *mode, *detection0, *detection1, *detection2, *detection3; + + GtkToggleButton *bypass0, *bypass1, *bypass2, *bypass3, *solo0, *solo1, *solo2, *solo3; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(MultibandGateBox, multiband_gate_box, GTK_TYPE_BOX) + +void on_reset(MultibandGateBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(MultibandGateBox* self, std::shared_ptr multiband_gate, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->multiband_gate = multiband_gate; + + self->settings = g_settings_new_with_path(tags::schema::multiband_gate::id, schema_path.c_str()); + + multiband_gate->set_post_messages(true); + + self->data->connections.push_back(multiband_gate->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(multiband_gate->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(multiband_gate->output0.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->output0) || !GTK_IS_LABEL(self->output0_label)) { + return; + } + + gtk_level_bar_set_value(self->output0, value); + gtk_label_set_text(self->output0_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(multiband_gate->output1.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->output1) || !GTK_IS_LABEL(self->output1_label)) { + return; + } + + gtk_level_bar_set_value(self->output1, value); + gtk_label_set_text(self->output1_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(multiband_gate->output2.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->output2) || !GTK_IS_LABEL(self->output2_label)) { + return; + } + + gtk_level_bar_set_value(self->output2, value); + gtk_label_set_text(self->output2_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(multiband_gate->output3.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->output3) || !GTK_IS_LABEL(self->output3_label)) { + return; + } + + gtk_level_bar_set_value(self->output3, value); + gtk_label_set_text(self->output3_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(multiband_gate->gating0.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->gating0) || !GTK_IS_LABEL(self->gating0_label)) { + return; + } + + gtk_level_bar_set_value(self->gating0, 1.0 - value); + gtk_label_set_text(self->gating0_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(multiband_gate->gating1.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->gating1) || !GTK_IS_LABEL(self->gating1_label)) { + return; + } + + gtk_level_bar_set_value(self->gating1, 1.0 - value); + gtk_label_set_text(self->gating1_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(multiband_gate->gating2.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->gating2) || !GTK_IS_LABEL(self->gating2_label)) { + return; + } + + gtk_level_bar_set_value(self->gating2, 1.0 - value); + gtk_label_set_text(self->gating2_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + self->data->connections.push_back(multiband_gate->gating3.connect([=](const double& value) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + if (!GTK_IS_LEVEL_BAR(self->gating3) || !GTK_IS_LABEL(self->gating3_label)) { + return; + } + + gtk_level_bar_set_value(self->gating3, 1.0 - value); + gtk_label_set_text(self->gating3_label, fmt::format("{0:.0f}", util::linear_to_db(value)).c_str()); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + gsettings_bind_widgets<"freq0", "freq1", "freq2">(self->settings, self->freq0, self->freq1, self->freq2); + + gsettings_bind_widgets<"threshold0", "threshold1", "threshold2", "threshold3">( + self->settings, self->threshold0, self->threshold1, self->threshold2, self->threshold3); + + gsettings_bind_widgets<"ratio0", "ratio1", "ratio2", "ratio3">(self->settings, self->ratio0, self->ratio1, + self->ratio2, self->ratio3); + + gsettings_bind_widgets<"range0", "range1", "range2", "range3">(self->settings, self->range0, self->range1, + self->range2, self->range3); + + gsettings_bind_widgets<"bypass0", "bypass1", "bypass2", "bypass3">(self->settings, self->bypass0, self->bypass1, + self->bypass2, self->bypass3); + + gsettings_bind_widgets<"solo0", "solo1", "solo2", "solo3">(self->settings, self->solo0, self->solo1, self->solo2, + self->solo3); + + gsettings_bind_widgets<"attack0", "attack1", "attack2", "attack3">(self->settings, self->attack0, self->attack1, + self->attack2, self->attack3); + + gsettings_bind_widgets<"release0", "release1", "release2", "release3">(self->settings, self->release0, self->release1, + self->release2, self->release3); + + gsettings_bind_widgets<"makeup0", "makeup1", "makeup2", "makeup3">(self->settings, self->makeup0, self->makeup1, + self->makeup2, self->makeup3); + + gsettings_bind_widgets<"knee0", "knee1", "knee2", "knee3">(self->settings, self->knee0, self->knee1, self->knee2, + self->knee3); + + gsettings_bind_widget(self->settings, "mode", self->mode); + + gsettings_bind_widgets<"detection0", "detection1", "detection2", "detection3">( + self->settings, self->detection0, self->detection1, self->detection2, self->detection3); +} + +void dispose(GObject* object) { + auto* self = EE_MULTIBAND_GATE_BOX(object); + + self->data->multiband_gate->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(multiband_gate_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_MULTIBAND_GATE_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(multiband_gate_box_parent_class)->finalize(object); +} + +void multiband_gate_box_class_init(MultibandGateBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::multiband_gate_ui); + + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output0_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output1_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output2_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, output3_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating0_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating1_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating2_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, gating3_label); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, freq0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, freq1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, freq2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, range0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, range1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, range2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, range3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, attack0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, attack1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, attack2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, attack3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, release0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, release1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, release2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, release3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, threshold0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, threshold1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, threshold2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, threshold3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, knee0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, knee1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, knee2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, knee3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, ratio0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, ratio1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, ratio2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, ratio3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, makeup0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, makeup1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, makeup2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, makeup3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, bypass0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, bypass1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, bypass2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, bypass3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, solo0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, solo1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, solo2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, solo3); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, mode); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, detection0); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, detection1); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, detection2); + gtk_widget_class_bind_template_child(widget_class, MultibandGateBox, detection3); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void multiband_gate_box_init(MultibandGateBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->range0, self->range1, self->range2, self->range3); + prepare_spinbuttons<"dB">(self->threshold0, self->threshold1, self->threshold2, self->threshold3); + prepare_spinbuttons<"dB">(self->knee0, self->knee1, self->knee2, self->knee3); + prepare_spinbuttons<"dB">(self->makeup0, self->makeup1, self->makeup2, self->makeup3); + prepare_spinbuttons<"Hz">(self->freq0, self->freq1, self->freq2); + prepare_spinbuttons<"ms">(self->attack0, self->attack1, self->attack2, self->attack3); + prepare_spinbuttons<"ms">(self->release0, self->release1, self->release2, self->release3); + prepare_spinbuttons<"">(self->ratio0, self->ratio1, self->ratio2, self->ratio3); +} + +auto create() -> MultibandGateBox* { + return static_cast(g_object_new(EE_TYPE_MULTIBAND_GATE_BOX, nullptr)); +} + +} // namespace ui::multiband_gate_box diff --git a/src/node_info_holder.cpp b/src/node_info_holder.cpp new file mode 100644 index 0000000..a0dee55 --- /dev/null +++ b/src/node_info_holder.cpp @@ -0,0 +1,143 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "node_info_holder.hpp" + +namespace ui::holders { + +using namespace std::string_literals; + +enum { PROP_0, PROP_SERIAL, PROP_ID, PROP_DEVICE_ID, PROP_NAME, PROP_MEDIA_CLASS, PROP_DESCRIPTION }; + +G_DEFINE_TYPE(NodeInfoHolder, node_info_holder, G_TYPE_OBJECT); + +void node_info_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) { + auto* self = EE_NODE_INFO_HOLDER(object); + + switch (prop_id) { + case PROP_SERIAL: + self->info->serial = g_value_get_uint64(value); + break; + case PROP_ID: + self->info->id = g_value_get_uint(value); + break; + case PROP_DEVICE_ID: + self->info->device_id = g_value_get_uint(value); + break; + case PROP_NAME: + self->info->name = g_value_get_string(value); + break; + case PROP_MEDIA_CLASS: + self->info->media_class = g_value_get_string(value); + break; + case PROP_DESCRIPTION: + self->info->description = g_value_get_string(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +void node_info_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) { + auto* self = EE_NODE_INFO_HOLDER(object); + + switch (prop_id) { + case PROP_SERIAL: + g_value_set_uint64(value, self->info->serial); + break; + case PROP_ID: + g_value_set_uint(value, self->info->id); + break; + case PROP_DEVICE_ID: + g_value_set_uint(value, self->info->device_id); + break; + case PROP_NAME: + g_value_set_string(value, self->info->name.c_str()); + break; + case PROP_MEDIA_CLASS: + g_value_set_string(value, self->info->media_class.c_str()); + break; + case PROP_DESCRIPTION: + g_value_set_string(value, self->info->description.c_str()); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +void node_info_holder_finalize(GObject* object) { + auto* self = EE_NODE_INFO_HOLDER(object); + + self->info_updated.clear(); + + util::debug(util::to_string(self->info->id) + ", " + self->info->name + " finalized"); + + delete self->info; + + G_OBJECT_CLASS(node_info_holder_parent_class)->finalize(object); +} + +void node_info_holder_class_init(NodeInfoHolderClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + + object_class->finalize = node_info_holder_finalize; + object_class->set_property = node_info_set_property; + object_class->get_property = node_info_get_property; + + // Using G_MININT64 as minimum parameter causes + // assertion 'default_value >= minimum && default_value <= maximum' failed + g_object_class_install_property(object_class, PROP_SERIAL, + g_param_spec_uint64("serial", "Serial", "Serial", SPA_ID_INVALID, G_MAXUINT64, + SPA_ID_INVALID, G_PARAM_READWRITE)); + + g_object_class_install_property( + object_class, PROP_ID, + g_param_spec_uint("id", "Id", "Id", G_MININT, G_MAXUINT, SPA_ID_INVALID, G_PARAM_READWRITE)); + + g_object_class_install_property( + object_class, PROP_DEVICE_ID, + g_param_spec_uint("device-id", "Device Id", "Device Id", G_MININT, G_MAXUINT, SPA_ID_INVALID, G_PARAM_READWRITE)); + + g_object_class_install_property(object_class, PROP_NAME, + g_param_spec_string("name", "Name", "Name", nullptr, G_PARAM_READWRITE)); + + g_object_class_install_property( + object_class, PROP_MEDIA_CLASS, + g_param_spec_string("media-class", "Media Class", "Media Class", nullptr, G_PARAM_READWRITE)); + + g_object_class_install_property( + object_class, PROP_DESCRIPTION, + g_param_spec_string("description", "Description", "Description", nullptr, G_PARAM_READWRITE)); +} + +void node_info_holder_init(NodeInfoHolder* self) { + self->info = new NodeInfo(); +} + +auto create(const NodeInfo& info) -> NodeInfoHolder* { + auto* holder = static_cast(g_object_new(EE_TYPE_NODE_INFO_HOLDER, nullptr)); + + *holder->info = info; + + return holder; +} + +} // namespace ui::holders diff --git a/src/output_level.cpp b/src/output_level.cpp new file mode 100644 index 0000000..1178d50 --- /dev/null +++ b/src/output_level.cpp @@ -0,0 +1,62 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "output_level.hpp" + +OutputLevel::OutputLevel(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, "output_level", schema, schema_path, pipe_manager) {} + +OutputLevel::~OutputLevel() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void OutputLevel::setup() { + util::debug(log_tag + name + ": new PipeWire blocksize: " + util::to_string(n_samples, "")); +} + +void OutputLevel::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto OutputLevel::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/pipe_manager.cpp b/src/pipe_manager.cpp new file mode 100644 index 0000000..c53468c --- /dev/null +++ b/src/pipe_manager.cpp @@ -0,0 +1,1804 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "pipe_manager.hpp" + +namespace { + +struct node_data { + pw_proxy* proxy = nullptr; + + spa_hook proxy_listener{}; + + spa_hook object_listener{}; + + PipeManager* pm = nullptr; + + NodeInfo* nd_info; +}; + +struct proxy_data { + pw_proxy* proxy = nullptr; + + spa_hook proxy_listener{}; + + spa_hook object_listener{}; + + PipeManager* pm = nullptr; + + uint id = SPA_ID_INVALID; + + uint64_t serial = SPA_ID_INVALID; +}; + +template +auto spa_dict_get_string(const spa_dict* props, const char* key, T& str) -> bool { + // If we will use string views in the future, this template could be useful. + if (const auto* s = spa_dict_lookup(props, key)) { + str = s; + + return true; + } + + return false; +} + +template +auto spa_dict_get_num(const spa_dict* props, const char* key, T& num) -> bool { + if (const auto* n = spa_dict_lookup(props, key)) { + return util::str_to_num(std::string(n), num); + } + + return false; +} + +auto spa_dict_get_bool(const spa_dict* props, const char* key, bool& b) -> bool { + // Returning bool is for conversion success state. + // The bool value is assigned to reference parameter. + if (const auto* v = spa_dict_lookup(props, key)) { + b = (g_strcmp0(v, "true") == 0); + + return true; + } + + return false; +} + +void on_removed_proxy(void* data) { + auto* const pd = static_cast(data); + + if (pd->object_listener.link.next != nullptr || pd->object_listener.link.prev != nullptr) { + spa_hook_remove(&pd->object_listener); + } + + pw_proxy_destroy(pd->proxy); +} + +auto link_info_from_props(const spa_dict* props) -> LinkInfo { + LinkInfo info; + + spa_dict_get_num(props, PW_KEY_LINK_ID, info.id); + + spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, info.serial); + + spa_dict_get_string(props, PW_KEY_OBJECT_PATH, info.path); + + spa_dict_get_num(props, PW_KEY_LINK_INPUT_NODE, info.input_node_id); + + spa_dict_get_num(props, PW_KEY_LINK_INPUT_PORT, info.input_port_id); + + spa_dict_get_num(props, PW_KEY_LINK_OUTPUT_NODE, info.output_node_id); + + spa_dict_get_num(props, PW_KEY_LINK_OUTPUT_PORT, info.output_port_id); + + spa_dict_get_bool(props, PW_KEY_LINK_PASSIVE, info.passive); + + return info; +} + +auto port_info_from_props(const spa_dict* props) -> PortInfo { + PortInfo info; + + spa_dict_get_num(props, PW_KEY_PORT_ID, info.port_id); + + spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, info.serial); + + spa_dict_get_string(props, PW_KEY_PORT_NAME, info.name); + + spa_dict_get_num(props, PW_KEY_NODE_ID, info.node_id); + + spa_dict_get_string(props, PW_KEY_PORT_DIRECTION, info.direction); + + spa_dict_get_string(props, PW_KEY_AUDIO_CHANNEL, info.audio_channel); + + spa_dict_get_string(props, PW_KEY_AUDIO_FORMAT, info.format_dsp); + + spa_dict_get_bool(props, PW_KEY_PORT_PHYSICAL, info.physical); + + spa_dict_get_bool(props, PW_KEY_PORT_TERMINAL, info.terminal); + + spa_dict_get_bool(props, PW_KEY_PORT_MONITOR, info.monitor); + + return info; +} + +void on_removed_node_proxy(void* data) { + auto* const nd = static_cast(data); + + spa_hook_remove(&nd->object_listener); + + pw_proxy_destroy(nd->proxy); +} + +void on_destroy_node_proxy(void* data) { + auto* const nd = static_cast(data); + + auto* const pm = nd->pm; + + auto node_it = pm->node_map.find(nd->nd_info->serial); + + if (node_it == pm->node_map.end()) { + return; + } + + nd->nd_info->proxy = nullptr; + + node_it->second.proxy = nullptr; + + spa_hook_remove(&nd->proxy_listener); + + pm->node_map.erase(node_it); + + if (!pm->exiting) { + if (nd->nd_info->media_class == tags::pipewire::media_class::source) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->source_removed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::sink) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->sink_removed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::output_stream) { + const auto serial = nd->nd_info->serial; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->stream_output_removed.emit(serial); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::input_stream) { + const auto serial = nd->nd_info->serial; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->stream_input_removed.emit(serial); + }); + } + } + + util::debug(nd->nd_info->media_class + " " + util::to_string(nd->nd_info->id) + " " + nd->nd_info->name + + " has been removed"); + + delete nd->nd_info; +} + +void on_node_info(void* object, const struct pw_node_info* info) { + if (PipeManager::exiting) { + return; + } + + auto* const nd = static_cast(object); + + auto* const pm = nd->pm; + + // Check if the node is inside our map + + auto node_it = pm->node_map.find(nd->nd_info->serial); + + if (node_it == pm->node_map.end()) { + return; + } + + // Check if the node has to be removed + + bool remove_node = false; + + // Exclude blocklisted App id. + // To be checked here because PW_KEY_APP_ID is not set in on_registry_global. + + if (const auto* app_id = spa_dict_lookup(info->props, PW_KEY_APP_ID)) { + if (std::ranges::find(pm->blocklist_app_id, app_id) != pm->blocklist_app_id.end()) { + remove_node = true; + } + } + + // Exclude capture streams. + // Even PW_KEY_STREAM_CAPTURE_SINK is not set in on_registry_global. + // Useful to exclude OBS recording streams. + + if (g_strcmp0(spa_dict_lookup(info->props, PW_KEY_STREAM_CAPTURE_SINK), "true") == 0 && + PipeManager::exclude_monitor_stream) { + remove_node = true; + } + + if (remove_node) { + nd->nd_info->proxy = nullptr; + + node_it->second.proxy = nullptr; + + spa_hook_remove(&nd->proxy_listener); + + pm->node_map.erase(node_it); + + if (nd->nd_info->media_class == tags::pipewire::media_class::source) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->source_removed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::sink) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->sink_removed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::output_stream) { + const auto serial = nd->nd_info->serial; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->stream_output_removed.emit(serial); + + pm->disconnect_stream(nd->nd_info->id); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::input_stream) { + const auto serial = nd->nd_info->serial; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->stream_input_removed.emit(serial); + + pm->disconnect_stream(nd->nd_info->id); + }); + } + + util::debug(nd->nd_info->media_class + " " + util::to_string(nd->nd_info->id) + " " + nd->nd_info->name + + " has been removed"); + + return; + } + + // Chech for node info updates + + auto app_info_ui_changed = false; + + if (info->state != nd->nd_info->state) { + nd->nd_info->state = info->state; + + app_info_ui_changed = true; + } + + nd->nd_info->n_input_ports = static_cast(info->n_input_ports); + nd->nd_info->n_output_ports = static_cast(info->n_output_ports); + + spa_dict_get_num(info->props, PW_KEY_PRIORITY_SESSION, nd->nd_info->priority); + + if (const auto* app_id = spa_dict_lookup(info->props, PW_KEY_APP_ID)) { + if (app_id != nd->nd_info->application_id) { + nd->nd_info->application_id = app_id; + } + } + + if (const auto* app_icon_name = spa_dict_lookup(info->props, PW_KEY_APP_ICON_NAME)) { + if (app_icon_name != nd->nd_info->app_icon_name) { + nd->nd_info->app_icon_name = app_icon_name; + + app_info_ui_changed = true; + } + } + + if (const auto* media_icon_name = spa_dict_lookup(info->props, PW_KEY_MEDIA_ICON_NAME)) { + if (media_icon_name != nd->nd_info->media_icon_name) { + nd->nd_info->media_icon_name = media_icon_name; + + app_info_ui_changed = true; + } + } + + spa_dict_get_string(info->props, PW_KEY_DEVICE_ICON_NAME, nd->nd_info->device_icon_name); + + if (const auto* media_name = spa_dict_lookup(info->props, PW_KEY_MEDIA_NAME)) { + if (media_name != nd->nd_info->media_name) { + nd->nd_info->media_name = media_name; + + app_info_ui_changed = true; + } + } + + if (const auto* node_latency = spa_dict_lookup(info->props, PW_KEY_NODE_LATENCY)) { + const auto str = std::string(node_latency); + + const auto delimiter_pos = str.find('/'); + + int rate = 1; + + if (util::str_to_num(str.substr(delimiter_pos + 1), rate)) { + if (rate != nd->nd_info->rate) { + nd->nd_info->rate = rate; + + app_info_ui_changed = true; + } + } + + float pw_lat = 0.0f; + + if (util::str_to_num(str.substr(0, delimiter_pos), pw_lat)) { + if (auto latency = (pw_lat / static_cast(nd->nd_info->rate)); latency != nd->nd_info->latency) { + nd->nd_info->latency = latency; + + app_info_ui_changed = true; + } + } + } + + spa_dict_get_num(info->props, PW_KEY_DEVICE_ID, nd->nd_info->device_id); + + if ((info->change_mask & PW_NODE_CHANGE_MASK_PARAMS) != 0U) { + for (uint i = 0U; i < info->n_params; i++) { + if ((info->params[i].flags & SPA_PARAM_INFO_READ) == 0U) { + continue; + } + + if (const auto id = info->params[i].id; + id == SPA_PARAM_Props || id == SPA_PARAM_EnumFormat || id == SPA_PARAM_Format) { + pw_node_enum_params((struct pw_node*)nd->proxy, 0, id, 0, -1, nullptr); + } + } + } + + // update NodeInfo inside map + + node_it->second = *nd->nd_info; + + // sometimes PipeWire destroys the pointer before signal_idle is called, + // therefore we make a copy + + if (nd->nd_info->connected != pm->stream_is_connected(info->id, nd->nd_info->media_class)) { + nd->nd_info->connected = !nd->nd_info->connected; + + app_info_ui_changed = true; + } + + if (app_info_ui_changed) { + const auto nd_info_copy = *nd->nd_info; + + if (nd->nd_info->media_class == tags::pipewire::media_class::output_stream) { + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->stream_output_changed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::input_stream) { + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->stream_input_changed.emit(nd_info_copy); + }); + } + } else if (nd->nd_info->media_class == tags::pipewire::media_class::source) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->source_changed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::sink) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([=]() { + if (PipeManager::exiting) { + return; + } + + pm->sink_changed.emit(nd_info_copy); + }); + } + // const struct spa_dict_item* item = nullptr; + // spa_dict_for_each(item, info->props) printf("\t\t%s: \"%s\"\n", item->key, item->value); +} + +void on_node_event_param(void* object, + int seq, + uint32_t id, + uint32_t index, + uint32_t next, + const struct spa_pod* param) { + if (PipeManager::exiting) { + return; + } + + auto* const nd = static_cast(object); + + auto* const pm = nd->pm; + + if (param == nullptr) { + return; + } + + spa_pod_prop* pod_prop = nullptr; + auto* obj = (spa_pod_object*)param; + + const auto serial = nd->nd_info->serial; + + auto notify = false; + + SPA_POD_OBJECT_FOREACH(obj, pod_prop) { + switch (pod_prop->key) { + case SPA_FORMAT_AUDIO_format: { + uint format = 0U; + + if (spa_pod_get_id(&pod_prop->value, &format) != 0) { + break; + } + + auto node_it = pm->node_map.find(serial); + + if (node_it == pm->node_map.end()) { + break; + } + + std::string format_str = "unknown"; + + for (size_t k = 0; k < std::size(spa_type_audio_format); k++) { + if (format == spa_type_audio_format[k].type) { + if (spa_type_audio_format[k].name != nullptr) { + std::string long_name = spa_type_audio_format[k].name; + + format_str = long_name.substr(long_name.rfind(":") + 1); + } + } + } + + if (format_str != nd->nd_info->format) { + node_it->second.format = format_str; + + nd->nd_info->format = format_str; + + notify = true; + } + + break; + } + case SPA_FORMAT_AUDIO_rate: { + int rate = 1; + + if (spa_pod_get_int(&pod_prop->value, &rate) != 0) { + break; + } + + if (rate == nd->nd_info->rate) { + break; + } + + if (auto node_it = pm->node_map.find(serial); node_it != pm->node_map.end()) { + node_it->second.rate = rate; + + nd->nd_info->rate = rate; + + notify = true; + } + + break; + } + case SPA_PROP_mute: { + auto v = false; + + if (spa_pod_get_bool(&pod_prop->value, &v) != 0) { + break; + } + + if (v == nd->nd_info->mute) { + break; + } + + if (auto node_it = pm->node_map.find(serial); node_it != pm->node_map.end()) { + node_it->second.mute = v; + + nd->nd_info->mute = v; + + notify = true; + } + break; + } + case SPA_PROP_channelVolumes: { + auto node_it = pm->node_map.find(serial); + + if (node_it == pm->node_map.end()) { + break; + } + + std::array volumes{}; + + const auto n_volumes = + spa_pod_copy_array(&pod_prop->value, SPA_TYPE_Float, volumes.data(), SPA_AUDIO_MAX_CHANNELS); + + float max = 0.0F; + + for (uint i = 0U; i < n_volumes; i++) { + max = std::max(volumes.at(i), max); + } + + if (n_volumes != nd->nd_info->n_volume_channels || max != nd->nd_info->volume) { + node_it->second.n_volume_channels = n_volumes; + node_it->second.volume = max; + + nd->nd_info->n_volume_channels = n_volumes; + nd->nd_info->volume = max; + + notify = true; + } + + break; + } + default: + break; + } + } + + if (notify) { + // sometimes PipeWire destroys the pointer before signal_idle is called, + // therefore we make a copy + + if (nd->nd_info->media_class == tags::pipewire::media_class::output_stream) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->stream_output_changed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::input_stream) { + const auto nd_info_copy = *nd->nd_info; + + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->stream_input_changed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::virtual_source) { + const auto nd_info_copy = *nd->nd_info; + + if (nd_info_copy.serial == pm->ee_source_node.serial) { + pm->ee_source_node = nd_info_copy; + } + + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->source_changed.emit(nd_info_copy); + }); + } else if (nd->nd_info->media_class == tags::pipewire::media_class::sink) { + const auto nd_info_copy = *nd->nd_info; + + if (nd_info_copy.serial == pm->ee_sink_node.serial) { + pm->ee_sink_node = nd_info_copy; + } + + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->sink_changed.emit(nd_info_copy); + }); + } + } +} + +void on_link_info(void* object, const struct pw_link_info* info) { + auto* const ld = static_cast(object); + auto* const pm = ld->pm; + + LinkInfo link_copy; + + for (auto& l : ld->pm->list_links) { + if (l.serial == ld->serial) { + l.state = info->state; + + link_copy = l; + + util::idle_add([pm, link_copy] { + if (PipeManager::exiting) { + return; + } + + pm->link_changed.emit(link_copy); + }); + + // util::warning(pw_link_state_as_string(l.state)); + + break; + } + } + + // const struct spa_dict_item* item = nullptr; + // spa_dict_for_each(item, info->props) printf("\t\t%s: \"%s\"\n", item->key, item->value); +} + +void on_destroy_link_proxy(void* data) { + auto* const ld = static_cast(data); + + spa_hook_remove(&ld->proxy_listener); + + ld->pm->list_links.erase(std::remove_if(ld->pm->list_links.begin(), ld->pm->list_links.end(), + [=](const auto& n) { return n.serial == ld->serial; }), + ld->pm->list_links.end()); +} + +void on_destroy_port_proxy(void* data) { + auto* const pd = static_cast(data); + + spa_hook_remove(&pd->proxy_listener); + + pd->pm->list_ports.erase(std::remove_if(pd->pm->list_ports.begin(), pd->pm->list_ports.end(), + [=](const auto& n) { return n.serial == pd->serial; }), + pd->pm->list_ports.end()); +} + +void on_module_info(void* object, const struct pw_module_info* info) { + auto* const md = static_cast(object); + + for (auto& module : md->pm->list_modules) { + if (module.id == info->id) { + if (info->filename != nullptr) { + module.filename = info->filename; + } + + spa_dict_get_string(info->props, PW_KEY_MODULE_DESCRIPTION, module.description); + + break; + } + } +} + +void on_destroy_module_proxy(void* data) { + auto* const md = static_cast(data); + + spa_hook_remove(&md->proxy_listener); + + md->pm->list_modules.erase(std::remove_if(md->pm->list_modules.begin(), md->pm->list_modules.end(), + [=](const auto& n) { return n.id == md->id; }), + md->pm->list_modules.end()); +} + +void on_client_info(void* object, const struct pw_client_info* info) { + auto* const cd = static_cast(object); + + for (auto& client : cd->pm->list_clients) { + if (client.id == info->id) { + spa_dict_get_string(info->props, PW_KEY_APP_NAME, client.name); + + spa_dict_get_string(info->props, PW_KEY_ACCESS, client.access); + + spa_dict_get_string(info->props, PW_KEY_CLIENT_API, client.api); + + break; + } + } +} + +void on_destroy_client_proxy(void* data) { + auto* const cd = static_cast(data); + + spa_hook_remove(&cd->proxy_listener); + + cd->pm->list_clients.erase(std::remove_if(cd->pm->list_clients.begin(), cd->pm->list_clients.end(), + [=](const auto& n) { return n.serial == cd->serial; }), + cd->pm->list_clients.end()); +} + +void on_device_info(void* object, const struct pw_device_info* info) { + auto* const dd = static_cast(object); + + for (auto& device : dd->pm->list_devices) { + if (device.id != info->id) { + continue; + } + + spa_dict_get_string(info->props, PW_KEY_DEVICE_NAME, device.name); + + spa_dict_get_string(info->props, PW_KEY_DEVICE_NICK, device.nick); + + spa_dict_get_string(info->props, PW_KEY_DEVICE_DESCRIPTION, device.description); + + spa_dict_get_string(info->props, PW_KEY_DEVICE_API, device.api); + + spa_dict_get_string(info->props, SPA_KEY_DEVICE_BUS_ID, device.bus_id); + + if (spa_dict_get_string(info->props, PW_KEY_DEVICE_BUS_PATH, device.bus_path)) { + std::replace(device.bus_path.begin(), device.bus_path.end(), ':', '_'); + } + + if ((info->change_mask & PW_DEVICE_CHANGE_MASK_PARAMS) != 0U) { + for (uint i = 0U; i < info->n_params; i++) { + if ((info->params[i].flags & SPA_PARAM_INFO_READ) == 0U) { + continue; + } + + if (const auto id = info->params[i].id; id == SPA_PARAM_Route) { + pw_device_enum_params((struct pw_device*)dd->proxy, 0, id, 0, -1, nullptr); + } + } + } + + break; + } +} + +void on_device_event_param(void* object, + int seq, + uint32_t id, + uint32_t index, + uint32_t next, + const struct spa_pod* param) { + if (id != SPA_PARAM_Route) { + return; + } + + auto* const dd = static_cast(object); + + const char* name = nullptr; + + enum spa_direction direction {}; + enum spa_param_availability available {}; + + if (spa_pod_parse_object(param, SPA_TYPE_OBJECT_ParamRoute, nullptr, SPA_PARAM_ROUTE_direction, + SPA_POD_Id(&direction), SPA_PARAM_ROUTE_name, SPA_POD_String(&name), + SPA_PARAM_ROUTE_available, SPA_POD_Id(&available)) < 0) { + return; + } + + if (name == nullptr) { + return; + } + + for (auto& device : dd->pm->list_devices) { + if (device.id != dd->id) { + continue; + } + + auto* const pm = dd->pm; + + if (direction == SPA_DIRECTION_INPUT) { + if (name != device.input_route_name || available != device.input_route_available) { + device.input_route_name = name; + device.input_route_available = available; + + util::idle_add([pm, device] { + if (PipeManager::exiting) { + return; + } + + pm->device_input_route_changed.emit(device); + }); + } + } else if (direction == SPA_DIRECTION_OUTPUT) { + if (name != device.output_route_name || available != device.output_route_available) { + device.output_route_name = name; + device.output_route_available = available; + + util::idle_add([pm, device] { + if (PipeManager::exiting) { + return; + } + + pm->device_output_route_changed.emit(device); + }); + } + } + + break; + } +} + +void on_destroy_device_proxy(void* data) { + auto* const dd = static_cast(data); + + spa_hook_remove(&dd->proxy_listener); + + dd->pm->list_devices.erase(std::remove_if(dd->pm->list_devices.begin(), dd->pm->list_devices.end(), + [=](const auto& n) { return n.id == dd->id; }), + dd->pm->list_devices.end()); +} + +auto on_metadata_property(void* data, uint32_t id, const char* key, const char* type, const char* value) -> int { + auto* const pm = static_cast(data); + + const std::string str_key = (key != nullptr) ? key : ""; + const std::string str_type = (type != nullptr) ? type : ""; + const std::string str_value = (value != nullptr) ? value : ""; + + util::debug("new metadata property: " + util::to_string(id) + ", " + str_key + ", " + str_type + ", " + str_value); + + if (str_value.empty()) { + return 0; + } + + if (str_key == "default.audio.sink") { + std::array v{}; + + PipeManager::json_object_find(str_value.c_str(), "name", v.data(), v.size() * sizeof(char)); + + if (g_strcmp0(v.data(), tags::pipewire::ee_sink_name) == 0) { + return 0; + } + + pm->default_output_device_name = v.data(); + + util::idle_add([pm] { + if (PipeManager::exiting) { + return; + } + + pm->new_default_sink_name.emit(pm->default_output_device_name); + }); + } + + if (str_key == "default.audio.source") { + std::array v{}; + + PipeManager::json_object_find(str_value.c_str(), "name", v.data(), v.size() * sizeof(char)); + + if (g_strcmp0(v.data(), tags::pipewire::ee_source_name) == 0) { + return 0; + } + + pm->default_input_device_name = v.data(); + + util::idle_add([pm] { + if (PipeManager::exiting) { + return; + } + + pm->new_default_source_name.emit(pm->default_input_device_name); + }); + } + + return 0; +} + +const struct pw_metadata_events metadata_events = {PW_VERSION_METADATA_EVENTS, on_metadata_property}; + +const struct pw_proxy_events link_proxy_events = {.destroy = on_destroy_link_proxy, + .bound = nullptr, + .removed = on_removed_proxy, + .done = nullptr, + .error = nullptr}; + +const struct pw_proxy_events port_proxy_events = {.destroy = on_destroy_port_proxy, + .bound = nullptr, + .removed = on_removed_proxy, + .done = nullptr, + .error = nullptr}; + +const struct pw_proxy_events module_proxy_events = {.destroy = on_destroy_module_proxy, + .bound = nullptr, + .removed = on_removed_proxy, + .done = nullptr, + .error = nullptr}; + +const struct pw_proxy_events client_proxy_events = {.destroy = on_destroy_client_proxy, + .bound = nullptr, + .removed = on_removed_proxy, + .done = nullptr, + .error = nullptr}; + +const struct pw_proxy_events device_proxy_events = {.destroy = on_destroy_device_proxy, + .bound = nullptr, + .removed = on_removed_proxy, + .done = nullptr, + .error = nullptr}; + +const struct pw_proxy_events node_proxy_events = {.destroy = on_destroy_node_proxy, + .bound = nullptr, + .removed = on_removed_node_proxy, + .done = nullptr, + .error = nullptr}; + +const struct pw_node_events node_events = {.info = on_node_info, .param = on_node_event_param}; + +const struct pw_link_events link_events = { + .info = on_link_info, +}; + +const struct pw_module_events module_events = { + .info = on_module_info, +}; + +const struct pw_client_events client_events = { + .info = on_client_info, +}; + +const struct pw_device_events device_events = {.info = on_device_info, .param = on_device_event_param}; + +void on_registry_global(void* data, + uint32_t id, + uint32_t permissions, + const char* type, + uint32_t version, + const struct spa_dict* props) { + if (id == SPA_ID_INVALID) { + // If PipeWire send us a wrong id, we don't have issues + return; + } + + auto* const pm = static_cast(data); + + if (g_strcmp0(type, PW_TYPE_INTERFACE_Node) == 0) { + if (const auto* key_media_role = spa_dict_lookup(props, PW_KEY_MEDIA_ROLE)) { + // Exclude blocklisted media roles + + if (std::ranges::find(pm->blocklist_media_role, std::string(key_media_role)) != pm->blocklist_media_role.end()) { + return; + } + + if (g_strcmp0(key_media_role, "DSP") == 0) { + if (const auto* key_media_category = spa_dict_lookup(props, PW_KEY_MEDIA_CATEGORY)) { + if (g_strcmp0(key_media_category, "Filter") == 0) { + if (const auto* key_node_description = spa_dict_lookup(props, PW_KEY_NODE_DESCRIPTION)) { + std::string description(key_node_description); + + if (description.length() > 3) { + if (description.substr(0, 2) == "ee_") { + std::string node_name = spa_dict_lookup(props, PW_KEY_NODE_NAME); + + util::debug("Filter " + node_name + " with id " + util::to_string(id) + " has been added"); + } + } + } + } + } + } + } + + if (const auto* key_media_class = spa_dict_lookup(props, PW_KEY_MEDIA_CLASS)) { + const std::string media_class = key_media_class; + + constexpr auto class_array = + std::to_array({tags::pipewire::media_class::output_stream, tags::pipewire::media_class::input_stream, + tags::pipewire::media_class::sink, tags::pipewire::media_class::source, + tags::pipewire::media_class::virtual_source}); + + if (!std::any_of(class_array.begin(), class_array.end(), [&](const auto& str) { return str == media_class; })) { + return; + } + + std::string node_name; + + if (!spa_dict_get_string(props, PW_KEY_NODE_NAME, node_name)) { + return; + } + + if (node_name.empty()) { + return; + } + + // Exclude blocklisted node names + + if (std::ranges::find(pm->blocklist_node_name, node_name) != pm->blocklist_node_name.end()) { + return; + } + + uint64_t serial; + + if (!spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, serial)) { + util::warning( + "An error occurred while retrieving the object serial. The node cannot be handled by EasyEffects."); + return; + } + + // New node can be added into the node map + + auto* proxy = + static_cast(pw_registry_bind(pm->registry, id, type, PW_VERSION_NODE, sizeof(node_data))); + + auto* nd = static_cast(pw_proxy_get_user_data(proxy)); + + nd->proxy = proxy; + nd->pm = pm; + + nd->nd_info = new NodeInfo(); + + nd->nd_info->proxy = proxy; + nd->nd_info->serial = serial; + nd->nd_info->id = id; + nd->nd_info->media_class = media_class; + nd->nd_info->name = node_name; + + spa_dict_get_string(props, PW_KEY_NODE_DESCRIPTION, nd->nd_info->description); + + spa_dict_get_num(props, PW_KEY_PRIORITY_SESSION, nd->nd_info->priority); + + spa_dict_get_num(props, PW_KEY_DEVICE_ID, nd->nd_info->device_id); + + const auto [node_it, success] = pm->node_map.insert({serial, *nd->nd_info}); + + if (!success) { + util::warning("Cannot insert node " + util::to_string(id) + " " + node_name + + " into the node map because there's already an existing serial " + util::to_string(serial)); + + return; + } + + pw_node_add_listener(proxy, &nd->object_listener, &node_events, nd); + pw_proxy_add_listener(proxy, &nd->proxy_listener, &node_proxy_events, nd); + + // sometimes PipeWire destroys the pointer before signal_idle is called, + // therefore we make a copy of NodeInfo + + const auto nd_info_copy = *nd->nd_info; + + if (media_class == tags::pipewire::media_class::source && node_name != tags::pipewire::ee_source_name) { + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->source_added.emit(nd_info_copy); + }); + } else if (media_class == tags::pipewire::media_class::sink && node_name != tags::pipewire::ee_sink_name) { + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->sink_added.emit(nd_info_copy); + }); + } else if (media_class == tags::pipewire::media_class::output_stream) { + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->stream_output_added.emit(nd_info_copy); + }); + } else if (media_class == tags::pipewire::media_class::input_stream) { + util::idle_add([pm, nd_info_copy] { + if (PipeManager::exiting) { + return; + } + + pm->stream_input_added.emit(nd_info_copy); + }); + } + + util::debug(media_class + " " + util::to_string(id) + " " + nd->nd_info->name + " with serial " + + util::to_string(serial) + " has been added"); + } + + return; + } + + if (g_strcmp0(type, PW_TYPE_INTERFACE_Link) == 0) { + uint64_t serial; + + if (!spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, serial)) { + util::warning( + "An error occurred while retrieving the object serial. This link cannot be handled by EasyEffects."); + return; + } + + auto* proxy = static_cast(pw_registry_bind(pm->registry, id, type, PW_VERSION_LINK, sizeof(proxy_data))); + + auto* const pd = static_cast(pw_proxy_get_user_data(proxy)); + + pd->proxy = proxy; + pd->pm = pm; + pd->id = id; + pd->serial = serial; + + pw_link_add_listener(proxy, &pd->object_listener, &link_events, pd); + pw_proxy_add_listener(proxy, &pd->proxy_listener, &link_proxy_events, pd); + + auto link_info = link_info_from_props(props); + + link_info.id = id; + link_info.serial = serial; + + pm->list_links.push_back(link_info); + + try { + const auto input_node = pm->node_map_at_id(link_info.input_node_id); + + const auto output_node = pm->node_map_at_id(link_info.output_node_id); + + util::debug(output_node.name + " port " + util::to_string(link_info.output_port_id) + " is connected to " + + input_node.name + " port " + util::to_string(link_info.input_port_id)); + } catch (...) { + } + + return; + } + + if (g_strcmp0(type, PW_TYPE_INTERFACE_Port) == 0) { + uint64_t serial; + + if (!spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, serial)) { + util::warning( + "An error occurred while retrieving the object serial. This port cannot be handled by EasyEffects."); + return; + } + + auto* proxy = static_cast(pw_registry_bind(pm->registry, id, type, PW_VERSION_PORT, sizeof(proxy_data))); + + auto* const pd = static_cast(pw_proxy_get_user_data(proxy)); + + pd->proxy = proxy; + pd->pm = pm; + pd->id = id; + pd->serial = serial; + + pw_proxy_add_listener(proxy, &pd->proxy_listener, &port_proxy_events, pd); + + auto port_info = port_info_from_props(props); + + port_info.id = id; + port_info.serial = serial; + + // std::cout << port_info.name << "\t" << port_info.audio_channel << "\t" << port_info.direction << "\t" + // << port_info.format_dsp << "\t" << port_info.port_id << "\t" << port_info.node_id << std::endl; + + pm->list_ports.push_back(port_info); + + return; + } + + if (g_strcmp0(type, PW_TYPE_INTERFACE_Module) == 0) { + uint64_t serial; + + if (!spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, serial)) { + util::warning( + "An error occurred while retrieving the object serial. This module cannot be handled by EasyEffects."); + return; + } + + auto* proxy = + static_cast(pw_registry_bind(pm->registry, id, type, PW_VERSION_MODULE, sizeof(proxy_data))); + + auto* const pd = static_cast(pw_proxy_get_user_data(proxy)); + + pd->proxy = proxy; + pd->pm = pm; + pd->id = id; + pd->serial = serial; + + pw_module_add_listener(proxy, &pd->object_listener, &module_events, pd); + pw_proxy_add_listener(proxy, &pd->proxy_listener, &module_proxy_events, pd); + + ModuleInfo m_info{.id = id, .serial = serial}; + + spa_dict_get_string(props, PW_KEY_MODULE_NAME, m_info.name); + + pm->list_modules.push_back(m_info); + + return; + } + + if (g_strcmp0(type, PW_TYPE_INTERFACE_Client) == 0) { + uint64_t serial; + + if (!spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, serial)) { + util::warning( + "An error occurred while retrieving the object serial. This client cannot be handled by EasyEffects."); + return; + } + + auto* proxy = + static_cast(pw_registry_bind(pm->registry, id, type, PW_VERSION_CLIENT, sizeof(proxy_data))); + + auto* const pd = static_cast(pw_proxy_get_user_data(proxy)); + + pd->proxy = proxy; + pd->pm = pm; + pd->id = id; + pd->serial = serial; + + pw_client_add_listener(proxy, &pd->object_listener, &client_events, pd); + pw_proxy_add_listener(proxy, &pd->proxy_listener, &client_proxy_events, pd); + + ClientInfo c_info{.id = id, .serial = serial}; + + pm->list_clients.push_back(c_info); + + return; + } + + if (g_strcmp0(type, PW_TYPE_INTERFACE_Metadata) == 0) { + if (const auto* name = spa_dict_lookup(props, PW_KEY_METADATA_NAME)) { + using namespace std::string_literals; + + util::debug("found metadata: "s + name); + + if (g_strcmp0(name, "default") == 0) { + if (pm->metadata != nullptr) { + util::debug("A new default metadata is available. We will use it"); + + spa_hook_remove(&pm->metadata_listener); + } + + pm->metadata = static_cast(pw_registry_bind(pm->registry, id, type, PW_VERSION_METADATA, 0)); + + if (pm->metadata != nullptr) { + pw_metadata_add_listener(pm->metadata, &pm->metadata_listener, &metadata_events, pm); + } else { + util::warning("pw_registry_bind returned a null metadata object"); + } + } + } + + return; + } + + if (g_strcmp0(type, PW_TYPE_INTERFACE_Device) == 0) { + if (const auto* key_media_class = spa_dict_lookup(props, PW_KEY_MEDIA_CLASS)) { + const std::string media_class = key_media_class; + + if (media_class == tags::pipewire::media_class::device) { + uint64_t serial; + + if (!spa_dict_get_num(props, PW_KEY_OBJECT_SERIAL, serial)) { + util::warning( + "An error occurred while converting the object serial. This device cannot be handled by EasyEffects."); + return; + } + + auto* proxy = + static_cast(pw_registry_bind(pm->registry, id, type, PW_VERSION_DEVICE, sizeof(proxy_data))); + + auto* const pd = static_cast(pw_proxy_get_user_data(proxy)); + + pd->proxy = proxy; + pd->pm = pm; + pd->id = id; + pd->serial = serial; + + pw_device_add_listener(proxy, &pd->object_listener, &device_events, pd); + pw_proxy_add_listener(proxy, &pd->proxy_listener, &device_proxy_events, pd); + + DeviceInfo d_info{.id = id, .serial = serial, .media_class = media_class}; + + pm->list_devices.push_back(d_info); + } + } + + return; + } +} + +void on_core_error(void* data, uint32_t id, int seq, int res, const char* message) { + auto* const pm = static_cast(data); + + using namespace std::string_literals; + + if (id == PW_ID_CORE) { + util::warning("Remote error res: "s + spa_strerror(res)); + util::warning("Remote error message: "s + message); + + pw_thread_loop_signal(pm->thread_loop, false); + } +} + +void on_core_info(void* data, const struct pw_core_info* info) { + using namespace std::string_literals; + + auto* const pm = static_cast(data); + + pm->core_name = info->name; + + spa_dict_get_string(info->props, "default.clock.rate", pm->default_clock_rate); + + spa_dict_get_string(info->props, "default.clock.min-quantum", pm->default_min_quantum); + + spa_dict_get_string(info->props, "default.clock.max-quantum", pm->default_max_quantum); + + spa_dict_get_string(info->props, "default.clock.quantum", pm->default_quantum); + + util::debug("core version: "s + info->version); + util::debug("core name: "s + info->name); +} + +void on_core_done(void* data, uint32_t id, int seq) { + auto* const pm = static_cast(data); + + if (id == PW_ID_CORE) { + pw_thread_loop_signal(pm->thread_loop, false); + } +} + +const struct pw_core_events core_events = {.version = PW_VERSION_CORE_EVENTS, + .info = on_core_info, + .done = on_core_done, + .error = on_core_error}; + +const struct pw_registry_events registry_events = { + .global = on_registry_global, +}; + +} // namespace + +PipeManager::PipeManager() { + pw_init(nullptr, nullptr); + + spa_zero(core_listener); + spa_zero(registry_listener); + + header_version = pw_get_headers_version(); + library_version = pw_get_library_version(); + + util::debug("compiled with PipeWire: " + header_version); + util::debug("linked to PipeWire: " + library_version); + + thread_loop = pw_thread_loop_new("ee-pipewire-thread", nullptr); + + if (thread_loop == nullptr) { + util::error("could not create PipeWire loop"); + } + + if (pw_thread_loop_start(thread_loop) != 0) { + util::error("could not start the loop"); + } + + lock(); + + pw_properties* props_context = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_context, PW_KEY_CONFIG_NAME, "client-rt.conf"); + pw_properties_set(props_context, PW_KEY_MEDIA_TYPE, "Audio"); + pw_properties_set(props_context, PW_KEY_MEDIA_CATEGORY, "Manager"); + pw_properties_set(props_context, PW_KEY_MEDIA_ROLE, "Music"); + + context = pw_context_new(pw_thread_loop_get_loop(thread_loop), props_context, 0); + + if (context == nullptr) { + util::error("could not create PipeWire context"); + } + + core = pw_context_connect(context, nullptr, 0); + + if (core == nullptr) { + util::error("context connection failed"); + } + + registry = pw_core_get_registry(core, PW_VERSION_REGISTRY, 0); + + if (registry == nullptr) { + util::error("could not get the registry"); + } + + pw_registry_add_listener(registry, ®istry_listener, ®istry_events, this); + + pw_core_add_listener(core, &core_listener, &core_events, this); + + // loading EasyEffects sink + + pw_properties* props_sink = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_sink, PW_KEY_APP_ID, tags::app::id); + pw_properties_set(props_sink, PW_KEY_NODE_NAME, tags::pipewire::ee_sink_name); + pw_properties_set(props_sink, PW_KEY_NODE_DESCRIPTION, "EasyEffects Sink"); + pw_properties_set(props_sink, PW_KEY_NODE_VIRTUAL, "true"); + pw_properties_set(props_sink, "factory.name", "support.null-audio-sink"); + pw_properties_set(props_sink, PW_KEY_MEDIA_CLASS, tags::pipewire::media_class::sink); + pw_properties_set(props_sink, "audio.position", "FL,FR"); + pw_properties_set(props_sink, "monitor.channel-volumes", "true"); + + proxy_stream_output_sink = static_cast( + pw_core_create_object(core, "adapter", PW_TYPE_INTERFACE_Node, PW_VERSION_NODE, &props_sink->dict, 0)); + + pw_properties_free(props_sink); + + // loading our source + + pw_properties* props_source = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_source, PW_KEY_APP_ID, tags::app::id); + pw_properties_set(props_source, PW_KEY_NODE_NAME, tags::pipewire::ee_source_name); + pw_properties_set(props_source, PW_KEY_NODE_DESCRIPTION, "EasyEffects Source"); + pw_properties_set(props_source, PW_KEY_NODE_VIRTUAL, "true"); + pw_properties_set(props_source, "factory.name", "support.null-audio-sink"); + pw_properties_set(props_source, PW_KEY_MEDIA_CLASS, tags::pipewire::media_class::virtual_source); + pw_properties_set(props_source, "audio.position", "FL,FR"); + pw_properties_set(props_source, "monitor.channel-volumes", "true"); + + proxy_stream_input_source = static_cast( + pw_core_create_object(core, "adapter", PW_TYPE_INTERFACE_Node, PW_VERSION_NODE, &props_source->dict, 0)); + + pw_properties_free(props_source); + + sync_wait_unlock(); + + using namespace std::string_literals; + + do { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + + for (const auto& [serial, node] : node_map) { + if (ee_sink_node.name.empty() && node.name == tags::pipewire::ee_sink_name) { + ee_sink_node = node; + + util::debug(tags::pipewire::ee_sink_name + " node successfully retrieved with id "s + util::to_string(node.id) + + " and serial " + util::to_string(node.serial)); + } else if (ee_source_node.name.empty() && node.name == tags::pipewire::ee_source_name) { + ee_source_node = node; + + util::debug(tags::pipewire::ee_source_name + " node successfully retrieved with id "s + + util::to_string(node.id) + " and serial " + util::to_string(node.serial)); + } + } + } while (ee_sink_node.id == SPA_ID_INVALID || ee_source_node.id == SPA_ID_INVALID); +} + +PipeManager::~PipeManager() { + exiting = true; + + lock(); + + spa_hook_remove(®istry_listener); + spa_hook_remove(&core_listener); + spa_hook_remove(&metadata_listener); + + if (metadata != nullptr) { + pw_proxy_destroy((struct pw_proxy*)metadata); + } + + pw_proxy_destroy(proxy_stream_output_sink); + pw_proxy_destroy(proxy_stream_input_source); + + util::debug("Destroying PipeWire registry..."); + pw_proxy_destroy((struct pw_proxy*)registry); + + util::debug("Disconnecting PipeWire core..."); + pw_core_disconnect(core); + + unlock(); + + util::debug("Stopping PipeWire's loop..."); + pw_thread_loop_stop(thread_loop); + + util::debug("Destroying PipeWire's context..."); + pw_context_destroy(context); + + util::debug("Destroying PipeWire's loop..."); + pw_thread_loop_destroy(thread_loop); +} + +auto PipeManager::node_map_at_id(const uint& id) -> NodeInfo& { + // Helper method to access easily a node by id, same functionality as map.at() + + for (auto& [serial, node] : node_map) { + if (node.id == id) { + return node; + } + } + + throw std::out_of_range(""); +} + +auto PipeManager::stream_is_connected(const uint& id, const std::string& media_class) -> bool { + if (media_class == tags::pipewire::media_class::output_stream) { + for (const auto& link : list_links) { + if (link.output_node_id == id && link.input_node_id == ee_sink_node.id) { + return true; + } + } + } else if (media_class == tags::pipewire::media_class::input_stream) { + for (const auto& link : list_links) { + if (link.output_node_id == ee_source_node.id && link.input_node_id == id) { + return true; + } + } + } + + return false; +} + +void PipeManager::connect_stream_output(const uint& id) const { + set_metadata_target_node(id, ee_sink_node.id, ee_sink_node.serial); +} + +void PipeManager::connect_stream_input(const uint& id) const { + set_metadata_target_node(id, ee_source_node.id, ee_source_node.serial); +} + +void PipeManager::set_metadata_target_node(const uint& origin_id, + const uint& target_id, + const uint64_t& target_serial) const { + lock(); + + // target.node for backward compatibility with old PW session managers + pw_metadata_set_property(metadata, origin_id, "target.node", "Spa:Id", util::to_string(target_id).c_str()); + pw_metadata_set_property(metadata, origin_id, "target.object", "Spa:Id", util::to_string(target_serial).c_str()); + + sync_wait_unlock(); +} + +void PipeManager::disconnect_stream(const uint& stream_id) const { + lock(); + + // target.node for backward compatibility with old PW session managers + pw_metadata_set_property(metadata, stream_id, "target.node", nullptr, nullptr); + pw_metadata_set_property(metadata, stream_id, "target.object", nullptr, nullptr); + + sync_wait_unlock(); +} + +void PipeManager::set_node_volume(pw_proxy* proxy, const uint& n_vol_ch, const float& value) { + std::array volumes{}; + + std::ranges::fill(volumes, 0.0F); + std::fill_n(volumes.begin(), n_vol_ch, value); + + std::array buffer{}; + + auto builder = SPA_POD_BUILDER_INIT(buffer.data(), sizeof(buffer)); + + pw_node_set_param( + (struct pw_node*)proxy, SPA_PARAM_Props, 0, + (spa_pod*)spa_pod_builder_add_object(&builder, SPA_TYPE_OBJECT_Props, SPA_PARAM_Props, SPA_PROP_channelVolumes, + SPA_POD_Array(sizeof(float), SPA_TYPE_Float, n_vol_ch, volumes.data()))); +} + +void PipeManager::set_node_mute(pw_proxy* proxy, const bool& state) { + std::array buffer{}; + + auto builder = SPA_POD_BUILDER_INIT(buffer.data(), sizeof(buffer)); + + pw_node_set_param((pw_node*)proxy, SPA_PARAM_Props, 0, + (spa_pod*)spa_pod_builder_add_object(&builder, SPA_TYPE_OBJECT_Props, SPA_PARAM_Props, + SPA_PROP_mute, SPA_POD_Bool(state))); +} + +auto PipeManager::count_node_ports(const uint& node_id) -> uint { + uint count = 0; + + for (const auto& port : list_ports) { + if (port.node_id == node_id) { + count++; + } + } + + return count; +} + +auto PipeManager::link_nodes(const uint& output_node_id, + const uint& input_node_id, + const bool& probe_link, + const bool& link_passive) -> std::vector { + std::vector list; + std::vector list_output_ports; + std::vector list_input_ports; + auto use_audio_channel = true; + + for (const auto& port : list_ports) { + if (port.node_id == output_node_id && port.direction == "out") { + list_output_ports.push_back(port); + + if (!probe_link) { + if (port.audio_channel != "FL" && port.audio_channel != "FR") { + use_audio_channel = false; + } + } + } + + if (port.node_id == input_node_id && port.direction == "in") { + if (!probe_link) { + list_input_ports.push_back(port); + + if (port.audio_channel != "FL" && port.audio_channel != "FR") { + use_audio_channel = false; + } + } else { + if (port.audio_channel == "PROBE_FL" || port.audio_channel == "PROBE_FR") { + list_input_ports.push_back(port); + } + } + } + } + + if (list_input_ports.size() == 0) { + util::debug("node " + util::to_string(input_node_id) + " has no input ports yet. Aborting the link"); + + return list; + } + + if (list_output_ports.size() == 0) { + util::debug("node " + util::to_string(output_node_id) + " has no output ports yet. Aborting the link"); + + return list; + } + + for (const auto& outp : list_output_ports) { + for (const auto& inp : list_input_ports) { + bool ports_match = false; + + if (!probe_link) { + if (use_audio_channel) { + ports_match = outp.audio_channel == inp.audio_channel; + } else { + ports_match = outp.port_id == inp.port_id; + } + } else { + if (outp.audio_channel == "FL" && inp.audio_channel == "PROBE_FL") { + ports_match = true; + } + + if (outp.audio_channel == "FR" && inp.audio_channel == "PROBE_FR") { + ports_match = true; + } + } + + if (ports_match) { + pw_properties* props = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props, PW_KEY_LINK_PASSIVE, (link_passive) ? "true" : "false"); + pw_properties_set(props, PW_KEY_OBJECT_LINGER, "false"); + pw_properties_set(props, PW_KEY_LINK_OUTPUT_NODE, util::to_string(output_node_id).c_str()); + pw_properties_set(props, PW_KEY_LINK_OUTPUT_PORT, util::to_string(outp.id).c_str()); + pw_properties_set(props, PW_KEY_LINK_INPUT_NODE, util::to_string(input_node_id).c_str()); + pw_properties_set(props, PW_KEY_LINK_INPUT_PORT, util::to_string(inp.id).c_str()); + + lock(); + + auto* proxy = static_cast( + pw_core_create_object(core, "link-factory", PW_TYPE_INTERFACE_Link, PW_VERSION_LINK, &props->dict, 0)); + + pw_properties_free(props); + + if (proxy == nullptr) { + util::warning("failed to link the node " + util::to_string(output_node_id) + " to " + + util::to_string(input_node_id)); + + unlock(); + + return list; + } + + sync_wait_unlock(); + + list.push_back(proxy); + } + } + } + + return list; +} + +void PipeManager::lock() const { + pw_thread_loop_lock(thread_loop); +} + +void PipeManager::unlock() const { + pw_thread_loop_unlock(thread_loop); +} + +void PipeManager::sync_wait_unlock() const { + pw_core_sync(core, PW_ID_CORE, 0); + + pw_thread_loop_wait(thread_loop); + + pw_thread_loop_unlock(thread_loop); +} + +void PipeManager::destroy_object(const int& id) const { + lock(); + + pw_registry_destroy(registry, id); + + sync_wait_unlock(); +} + +void PipeManager::destroy_links(const std::vector& list) const { + for (auto* proxy : list) { + if (proxy != nullptr) { + lock(); + + pw_proxy_destroy(proxy); + + sync_wait_unlock(); + } + } +} + +/* + Function inspired by code present in PipeWire's sources: + https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/spa/include/spa/utils/json.h#L350 +*/ + +auto PipeManager::json_object_find(const char* obj, const char* key, char* value, const size_t& len) -> int { + const char* v = nullptr; + + std::array sjson{}; + std::array res{}; + + spa_json_init(sjson.data(), obj, strlen(obj)); + + if (spa_json_enter_object(sjson.data(), sjson.data() + 1) <= 0) { + return -EINVAL; + } + + while (spa_json_get_string(sjson.data() + 1, res.data(), res.size() * sizeof(char) - 1) > 0) { + if (g_strcmp0(res.data(), key) == 0) { + if (spa_json_get_string(sjson.data() + 1, value, static_cast(len)) <= 0) { + continue; + } + + return 0; + } + + if (spa_json_next(sjson.data() + 1, &v) <= 0) { + break; + } + } + + return -ENOENT; +} diff --git a/src/pipe_manager_box.cpp b/src/pipe_manager_box.cpp new file mode 100644 index 0000000..b4cc50c --- /dev/null +++ b/src/pipe_manager_box.cpp @@ -0,0 +1,926 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "pipe_manager_box.hpp" + +namespace ui::pipe_manager_box { + +using namespace std::string_literals; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + app::Application* application; + + std::unique_ptr ts; + + std::vector connections; + + std::vector gconnections_sie, gconnections_soe; +}; + +struct _PipeManagerBox { + GtkBox parent_instance; + + GtkSwitch *use_default_input, *use_default_output, *enable_test_signal; + + GtkDropDown *dropdown_input_devices, *dropdown_output_devices, *dropdown_autoloading_output_devices, + *dropdown_autoloading_input_devices, *dropdown_autoloading_output_presets, *dropdown_autoloading_input_presets; + + GtkListView *listview_modules, *listview_clients, *listview_autoloading_output, *listview_autoloading_input; + + GtkButton *autoloading_add_input_profile, *autoloading_add_output_profile; + + GtkLabel *header_version, *library_version, *quantum, *max_quantum, *min_quantum, *server_rate; + + GtkSpinButton* spinbutton_test_signal_frequency; + + GListStore *input_devices_model, *output_devices_model, *modules_model, *clients_model, *autoloading_input_model, + *autoloading_output_model, *autoloading_input_devices_model, *autoloading_output_devices_model; + + GtkStringList *input_presets_string_list, *output_presets_string_list; + + GSettings *sie_settings, *soe_settings; + + Data* data; +}; + +G_DEFINE_TYPE(PipeManagerBox, pipe_manager_box, GTK_TYPE_BOX) + +void on_enable_test_signal(PipeManagerBox* self, gboolean state, GtkSwitch* btn) { + self->data->ts->set_state(state != 0); +} + +void on_checkbutton_channel_left(PipeManagerBox* self, GtkCheckButton* btn) { + if (gtk_check_button_get_active(btn)) { + self->data->ts->create_left_channel = true; + self->data->ts->create_right_channel = false; + } +} + +void on_checkbutton_channel_right(PipeManagerBox* self, GtkCheckButton* btn) { + if (gtk_check_button_get_active(btn)) { + self->data->ts->create_left_channel = false; + self->data->ts->create_right_channel = true; + } +} + +void on_checkbutton_channel_both(PipeManagerBox* self, GtkCheckButton* btn) { + if (gtk_check_button_get_active(btn)) { + self->data->ts->create_left_channel = true; + self->data->ts->create_right_channel = true; + } +} + +void on_checkbutton_signal_sine(PipeManagerBox* self, GtkCheckButton* btn) { + if (gtk_check_button_get_active(btn)) { + self->data->ts->signal_type = TestSignalType::sine_wave; + self->data->ts->sine_phase = 0.0F; + } +} + +void on_checkbutton_signal_gaussian(PipeManagerBox* self, GtkCheckButton* btn) { + if (gtk_check_button_get_active(btn)) { + self->data->ts->signal_type = TestSignalType::gaussian; + } +} + +void on_autoloading_add_input_profile(PipeManagerBox* self, GtkButton* btn) { + auto* holder = static_cast( + gtk_drop_down_get_selected_item(self->dropdown_autoloading_input_devices)); + + if (holder == nullptr) { + return; + } + + std::string device_profile; + + for (const auto& device : self->data->application->pm->list_devices) { + if (util::str_contains(holder->info->name, device.bus_path) || + util::str_contains(holder->info->name, device.bus_id)) { + device_profile = device.input_route_name; + + break; + } + } + + // first we remove any autoloading profile associated to the target device so that our ui is updated + + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->autoloading_input_model)); n++) { + auto item = static_cast( + g_list_model_get_item(G_LIST_MODEL(self->autoloading_input_model), n)); + + if (holder->info->name == item->data->device && device_profile == item->data->device_profile) { + self->data->application->presets_manager->remove_autoload(PresetType::input, item->data->preset_name, + item->data->device, item->data->device_profile); + + g_object_unref(item); + + break; + } + + g_object_unref(item); + } + + auto selected_preset = gtk_drop_down_get_selected_item(self->dropdown_autoloading_input_presets); + + if (selected_preset == nullptr) { + return; + } + + auto* preset_name = gtk_string_object_get_string(GTK_STRING_OBJECT(selected_preset)); + + self->data->application->presets_manager->add_autoload(PresetType::input, preset_name, holder->info->name, + holder->info->description, device_profile); +} + +void on_autoloading_add_output_profile(PipeManagerBox* self, GtkButton* btn) { + auto* holder = static_cast( + gtk_drop_down_get_selected_item(self->dropdown_autoloading_output_devices)); + + if (holder == nullptr) { + return; + } + + std::string device_profile; + + for (const auto& device : self->data->application->pm->list_devices) { + if (util::str_contains(holder->info->name, device.bus_path) || + util::str_contains(holder->info->name, device.bus_id)) { + device_profile = device.output_route_name; + + break; + } + } + + // first we remove any autoloading profile associated to the target device so that our ui is updated + + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->autoloading_output_model)); n++) { + auto item = static_cast( + g_list_model_get_item(G_LIST_MODEL(self->autoloading_output_model), n)); + + if (holder->info->name == item->data->device && device_profile == item->data->device_profile) { + self->data->application->presets_manager->remove_autoload(PresetType::output, item->data->preset_name, + item->data->device, item->data->device_profile); + + g_object_unref(item); + + break; + } + + g_object_unref(item); + } + + auto selected_preset = gtk_drop_down_get_selected_item(self->dropdown_autoloading_output_presets); + + if (selected_preset == nullptr) { + return; + } + + auto* preset_name = gtk_string_object_get_string(GTK_STRING_OBJECT(selected_preset)); + + self->data->application->presets_manager->add_autoload(PresetType::output, preset_name, holder->info->name, + holder->info->description, device_profile); +} + +void update_modules_info(PipeManagerBox* self) { + std::vector values; + + for (const auto& info : self->data->application->pm->list_modules) { + values.push_back(ui::holders::create(info)); + } + + g_list_store_splice(self->modules_model, 0, g_list_model_get_n_items(G_LIST_MODEL(self->modules_model)), + (gpointer*)(values.data()), values.size()); + + for (auto* holder : values) { + g_object_unref(holder); + } +} + +void update_clients_info(PipeManagerBox* self) { + std::vector values; + + for (const auto& info : self->data->application->pm->list_clients) { + values.push_back(ui::holders::create(info)); + } + + g_list_store_splice(self->clients_model, 0, g_list_model_get_n_items(G_LIST_MODEL(self->clients_model)), + (gpointer*)(values.data()), values.size()); + + for (auto* holder : values) { + g_object_unref(holder); + } +} + +void on_stack_visible_child_changed(PipeManagerBox* self, GParamSpec* pspec, GtkWidget* stack) { + if (const auto name = gtk_stack_get_visible_child_name(GTK_STACK(stack)); g_strcmp0(name, "page_modules") == 0) { + update_modules_info(self); + } else if (g_strcmp0(name, "page_clients") == 0) { + update_clients_info(self); + } +} + +void setup_listview_modules(PipeManagerBox* self) { + auto* selection = gtk_no_selection_new(G_LIST_MODEL(self->modules_model)); + + gtk_list_view_set_model(self->listview_modules, GTK_SELECTION_MODEL(selection)); + + g_object_unref(selection); +} + +void setup_listview_clients(PipeManagerBox* self) { + auto* selection = gtk_no_selection_new(G_LIST_MODEL(self->clients_model)); + + gtk_list_view_set_model(self->listview_clients, GTK_SELECTION_MODEL(selection)); + + g_object_unref(selection); +} + +template +void setup_listview_autoloading(PipeManagerBox* self) { + GListStore* model; + GtkListView* listview; + + if constexpr (preset_type == PresetType::output) { + model = self->autoloading_output_model; + + listview = self->listview_autoloading_output; + } else if constexpr (preset_type == PresetType::input) { + model = self->autoloading_input_model; + + listview = self->listview_autoloading_input; + } + + auto* factory = gtk_signal_list_item_factory_new(); + + // setting the factory callbacks + + g_signal_connect( + factory, "setup", G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PipeManagerBox* self) { + auto builder = gtk_builder_new_from_resource(tags::resources::autoload_row_ui); + + auto* top_box = gtk_builder_get_object(builder, "top_box"); + + g_object_set_data(G_OBJECT(item), "device", gtk_builder_get_object(builder, "device")); + g_object_set_data(G_OBJECT(item), "device_description", gtk_builder_get_object(builder, "device_description")); + g_object_set_data(G_OBJECT(item), "device_profile", gtk_builder_get_object(builder, "device_profile")); + g_object_set_data(G_OBJECT(item), "preset_name", gtk_builder_get_object(builder, "preset_name")); + + auto* remove = gtk_builder_get_object(builder, "remove"); + + g_object_set_data(G_OBJECT(item), "remove", remove); + + gtk_list_item_set_activatable(item, 0); + gtk_list_item_set_child(item, GTK_WIDGET(top_box)); + + g_object_unref(builder); + + g_signal_connect( + remove, "clicked", G_CALLBACK(+[](GtkButton* btn, PipeManagerBox* self) { + if (auto* holder = + static_cast(g_object_get_data(G_OBJECT(btn), "holder")); + holder != nullptr) { + self->data->application->presets_manager->remove_autoload( + preset_type, holder->data->preset_name, holder->data->device, holder->data->device_profile); + } + }), + self); + }), + self); + + g_signal_connect( + factory, "bind", G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PipeManagerBox* self) { + auto* device = static_cast(g_object_get_data(G_OBJECT(item), "device")); + auto* device_description = static_cast(g_object_get_data(G_OBJECT(item), "device_description")); + auto* device_profile = static_cast(g_object_get_data(G_OBJECT(item), "device_profile")); + auto* preset_name = static_cast(g_object_get_data(G_OBJECT(item), "preset_name")); + auto* remove = static_cast(g_object_get_data(G_OBJECT(item), "remove")); + + auto* holder = static_cast(gtk_list_item_get_item(item)); + + g_object_set_data(G_OBJECT(remove), "holder", holder); + + gtk_label_set_text(device, holder->data->device.c_str()); + gtk_label_set_text(device_description, holder->data->device_description.c_str()); + gtk_label_set_text(device_profile, holder->data->device_profile.c_str()); + gtk_label_set_text(preset_name, holder->data->preset_name.c_str()); + + gtk_accessible_update_property(GTK_ACCESSIBLE(remove), GTK_ACCESSIBLE_PROPERTY_LABEL, + (_("Remove Autoloading Preset") + " "s + holder->data->preset_name).c_str(), -1); + }), + self); + + gtk_list_view_set_factory(listview, factory); + + g_object_unref(factory); + + // setting the model + + const auto profiles = self->data->application->presets_manager->get_autoload_profiles(preset_type); + + for (const auto& json : profiles) { + const auto device = json.value("device", ""); + const auto device_description = json.value("device-description", ""); + const auto device_profile = json.value("device-profile", ""); + const auto preset_name = json.value("preset-name", ""); + + auto* holder = ui::holders::create(device, device_description, device_profile, preset_name); + + g_list_store_append(model, holder); + + g_object_unref(holder); + } + + auto* selection = gtk_no_selection_new(G_LIST_MODEL(model)); + + gtk_list_view_set_model(listview, GTK_SELECTION_MODEL(selection)); + + g_object_unref(selection); +} + +template +void setup_dropdown_presets(PipeManagerBox* self) { + GtkDropDown* dropdown; + GtkStringList* string_list; + + if constexpr (preset_type == PresetType::output) { + dropdown = self->dropdown_autoloading_output_presets; + + string_list = self->output_presets_string_list; + } else if constexpr (preset_type == PresetType::input) { + dropdown = self->dropdown_autoloading_input_presets; + + string_list = self->input_presets_string_list; + } + + for (const auto& name : self->data->application->presets_manager->get_names(preset_type)) { + gtk_string_list_append(string_list, name.c_str()); + } + + // sorter + + auto* sorter = gtk_string_sorter_new(gtk_property_expression_new(GTK_TYPE_STRING_OBJECT, nullptr, "string")); + + auto* sorter_model = gtk_sort_list_model_new(G_LIST_MODEL(string_list), GTK_SORTER(sorter)); + + // setting the dropdown model + + auto* selection = gtk_single_selection_new(G_LIST_MODEL(sorter_model)); + + gtk_drop_down_set_model(dropdown, G_LIST_MODEL(selection)); + + g_object_unref(selection); +} + +void setup_dropdown_devices(PipeManagerBox* self, GtkDropDown* dropdown, GListStore* model) { + auto* selection = gtk_single_selection_new(G_LIST_MODEL(model)); + + gtk_drop_down_set_model(dropdown, G_LIST_MODEL(model)); + + g_object_unref(selection); +} + +void setup(PipeManagerBox* self, app::Application* application) { + self->data->application = application; + + auto pm = application->pm; + + self->data->ts = std::make_unique(pm); + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == tags::pipewire::ee_sink_name || node.name == tags::pipewire::ee_source_name) { + continue; + } + + if (node.media_class == tags::pipewire::media_class::sink) { + auto holder = ui::holders::create(node); + + g_list_store_append(self->output_devices_model, holder); + g_list_store_append(self->autoloading_output_devices_model, holder); + + g_object_unref(holder); + } else if (node.media_class == tags::pipewire::media_class::source || + node.media_class == tags::pipewire::media_class::virtual_source) { + auto holder = ui::holders::create(node); + + g_list_store_append(self->input_devices_model, holder); + g_list_store_append(self->autoloading_input_devices_model, holder); + + g_object_unref(holder); + } + } + + int rate = 0; + util::str_to_num(std::string(pm->default_clock_rate), rate); + + gtk_label_set_text(self->header_version, pm->header_version.c_str()); + gtk_label_set_text(self->library_version, pm->library_version.c_str()); + gtk_label_set_text(self->server_rate, fmt::format(ui::get_user_locale(), "{0:Ld} Hz", rate).c_str()); + gtk_label_set_text(self->min_quantum, pm->default_min_quantum.c_str()); + gtk_label_set_text(self->max_quantum, pm->default_max_quantum.c_str()); + gtk_label_set_text(self->quantum, pm->default_quantum.c_str()); + + setup_listview_modules(self); + setup_listview_clients(self); + + setup_listview_autoloading(self); + setup_listview_autoloading(self); + + setup_dropdown_devices(self, self->dropdown_input_devices, self->input_devices_model); + setup_dropdown_devices(self, self->dropdown_output_devices, self->output_devices_model); + + setup_dropdown_devices(self, self->dropdown_autoloading_input_devices, self->autoloading_input_devices_model); + setup_dropdown_devices(self, self->dropdown_autoloading_output_devices, self->autoloading_output_devices_model); + + setup_dropdown_presets(self); + setup_dropdown_presets(self); + + /* + This connection is being done here after initializing the dropdowns to avoid unnecessary emittions while EE is + initializing + */ + + g_signal_connect(self->dropdown_input_devices, "notify::selected-item", + G_CALLBACK(+[](GtkDropDown* dropdown, GParamSpec* pspec, PipeManagerBox* self) { + if (auto selected_item = gtk_drop_down_get_selected_item(dropdown); selected_item != nullptr) { + auto* holder = static_cast(selected_item); + + g_settings_set_string(self->sie_settings, "input-device", holder->info->name.c_str()); + } + }), + self); + + g_signal_connect(self->dropdown_output_devices, "notify::selected-item", + G_CALLBACK(+[](GtkDropDown* dropdown, GParamSpec* pspec, PipeManagerBox* self) { + if (auto selected_item = gtk_drop_down_get_selected_item(dropdown); selected_item != nullptr) { + auto* holder = static_cast(selected_item); + + g_settings_set_string(self->soe_settings, "output-device", holder->info->name.c_str()); + } + }), + self); + + // initializing the custom device selection dropdowns to the previoulsly used device + + { + auto* holder_selected = + static_cast(gtk_drop_down_get_selected_item(self->dropdown_input_devices)); + + if (holder_selected != nullptr) { + const auto input_device_name = util::gsettings_get_string(self->sie_settings, "input-device"); + + if (holder_selected->info->name != input_device_name) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto item = static_cast( + g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (item->info->name == input_device_name) { + gtk_drop_down_set_selected(self->dropdown_input_devices, n); + + g_object_unref(item); + + break; + } + + g_object_unref(item); + } + } + } + } + + { + auto* holder_selected = + static_cast(gtk_drop_down_get_selected_item(self->dropdown_output_devices)); + + if (holder_selected != nullptr) { + const auto output_device_name = util::gsettings_get_string(self->soe_settings, "output-device"); + + if (holder_selected->info->name != output_device_name) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_devices_model)); n++) { + auto item = static_cast( + g_list_model_get_item(G_LIST_MODEL(self->output_devices_model), n)); + + if (item->info->name == output_device_name) { + gtk_drop_down_set_selected(self->dropdown_output_devices, n); + + g_object_unref(item); + + break; + } + + g_object_unref(item); + } + } + } + } + + // signals related to device insertion/removal + + self->data->connections.push_back(pm->sink_added.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->output_devices_model), n)); + + if (holder->info->id == info.id) { + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + + auto holder = ui::holders::create(info); + + g_list_store_append(self->output_devices_model, holder); + g_list_store_append(self->autoloading_output_devices_model, holder); + + g_object_unref(holder); + })); + + self->data->connections.push_back(pm->sink_removed.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->output_devices_model), n)); + + if (holder->info->id == info.id) { + g_list_store_remove(self->output_devices_model, n); + g_list_store_remove(self->autoloading_output_devices_model, n); + + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + })); + + self->data->connections.push_back(pm->source_added.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + + auto holder = ui::holders::create(info); + + g_list_store_append(self->input_devices_model, holder); + g_list_store_append(self->autoloading_input_devices_model, holder); + + g_object_unref(holder); + })); + + self->data->connections.push_back(pm->source_removed.connect([=](const NodeInfo info) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto* holder = + static_cast(g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (holder->info->id == info.id) { + g_list_store_remove(self->input_devices_model, n); + g_list_store_remove(self->autoloading_input_devices_model, n); + + g_object_unref(holder); + + return; + } + + g_object_unref(holder); + } + })); + + // signals related to presets creation/destruction + + self->data->connections.push_back( + application->presets_manager->user_output_preset_created.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"s); + + return; + } + + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_presets_string_list)); n++) { + if (gtk_string_list_get_string(self->output_presets_string_list, n) == preset_name) { + return; + } + } + + gtk_string_list_append(self->output_presets_string_list, preset_name.c_str()); + })); + + self->data->connections.push_back( + application->presets_manager->user_output_preset_removed.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"s); + + return; + } + + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_presets_string_list)); n++) { + if (gtk_string_list_get_string(self->output_presets_string_list, n) == preset_name) { + gtk_string_list_remove(self->output_presets_string_list, n); + + return; + } + } + })); + + self->data->connections.push_back( + application->presets_manager->user_input_preset_created.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"s); + + return; + } + + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_presets_string_list)); n++) { + if (gtk_string_list_get_string(self->input_presets_string_list, n) == preset_name) { + return; + } + } + + gtk_string_list_append(self->input_presets_string_list, preset_name.c_str()); + })); + + self->data->connections.push_back( + application->presets_manager->user_input_preset_removed.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"s); + + return; + } + + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_presets_string_list)); n++) { + if (gtk_string_list_get_string(self->input_presets_string_list, n) == preset_name) { + gtk_string_list_remove(self->input_presets_string_list, n); + + return; + } + } + })); + + // signals related to autoload profiles + + self->data->connections.push_back(application->presets_manager->autoload_input_profiles_changed.connect( + [=](const std::vector& profiles) { + std::vector list; + + for (const auto& json : profiles) { + const auto device = json.value("device", ""); + const auto device_description = json.value("device-description", ""); + const auto device_profile = json.value("device-profile", ""); + const auto preset_name = json.value("preset-name", ""); + + list.push_back(ui::holders::create(device, device_description, device_profile, preset_name)); + } + + g_list_store_splice(self->autoloading_input_model, 0, + g_list_model_get_n_items(G_LIST_MODEL(self->autoloading_input_model)), + (gpointer*)(list.data()), list.size()); + + for (auto* holder : list) { + g_object_unref(holder); + } + })); + + self->data->connections.push_back(application->presets_manager->autoload_output_profiles_changed.connect( + [=](const std::vector& profiles) { + std::vector list; + + for (const auto& json : profiles) { + const auto device = json.value("device", ""); + const auto device_description = json.value("device-description", ""); + const auto device_profile = json.value("device-profile", ""); + const auto preset_name = json.value("preset-name", ""); + + list.push_back(ui::holders::create(device, device_description, device_profile, preset_name)); + } + + g_list_store_splice(self->autoloading_output_model, 0, + g_list_model_get_n_items(G_LIST_MODEL(self->autoloading_output_model)), + (gpointer*)(list.data()), list.size()); + + for (auto* holder : list) { + g_object_unref(holder); + } + })); +} + +void dispose(GObject* object) { + auto* self = EE_PIPE_MANAGER_BOX(object); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections_sie) { + g_signal_handler_disconnect(self->sie_settings, handler_id); + } + + for (auto& handler_id : self->data->gconnections_soe) { + g_signal_handler_disconnect(self->soe_settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections_sie.clear(); + self->data->gconnections_soe.clear(); + + g_object_unref(self->sie_settings); + g_object_unref(self->soe_settings); + + util::debug("disposed"s); + + G_OBJECT_CLASS(pipe_manager_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_PIPE_MANAGER_BOX(object); + + delete self->data; + + util::debug("finalized"s); + + G_OBJECT_CLASS(pipe_manager_box_parent_class)->finalize(object); +} + +void pipe_manager_box_class_init(PipeManagerBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::pipe_manager_box_ui); + + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, use_default_input); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, use_default_output); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, enable_test_signal); + + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, dropdown_input_devices); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, dropdown_output_devices); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, dropdown_autoloading_input_devices); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, dropdown_autoloading_output_devices); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, dropdown_autoloading_input_presets); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, dropdown_autoloading_output_presets); + + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, listview_modules); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, listview_clients); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, listview_autoloading_input); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, listview_autoloading_output); + + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, autoloading_add_input_profile); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, autoloading_add_output_profile); + + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, header_version); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, library_version); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, quantum); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, max_quantum); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, min_quantum); + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, server_rate); + + gtk_widget_class_bind_template_child(widget_class, PipeManagerBox, spinbutton_test_signal_frequency); + + gtk_widget_class_bind_template_callback(widget_class, on_enable_test_signal); + gtk_widget_class_bind_template_callback(widget_class, on_checkbutton_channel_left); + gtk_widget_class_bind_template_callback(widget_class, on_checkbutton_channel_right); + gtk_widget_class_bind_template_callback(widget_class, on_checkbutton_channel_both); + gtk_widget_class_bind_template_callback(widget_class, on_checkbutton_signal_sine); + gtk_widget_class_bind_template_callback(widget_class, on_checkbutton_signal_gaussian); + gtk_widget_class_bind_template_callback(widget_class, on_stack_visible_child_changed); + gtk_widget_class_bind_template_callback(widget_class, on_autoloading_add_input_profile); + gtk_widget_class_bind_template_callback(widget_class, on_autoloading_add_output_profile); +} + +void pipe_manager_box_init(PipeManagerBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->input_presets_string_list = gtk_string_list_new(nullptr); + self->output_presets_string_list = gtk_string_list_new(nullptr); + + self->input_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + self->output_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + self->modules_model = g_list_store_new(ui::holders::module_info_holder_get_type()); + self->clients_model = g_list_store_new(ui::holders::client_info_holder_get_type()); + self->autoloading_input_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + self->autoloading_output_devices_model = g_list_store_new(ui::holders::node_info_holder_get_type()); + self->autoloading_input_model = g_list_store_new(ui::holders::presets_autoloading_holder_get_type()); + self->autoloading_output_model = g_list_store_new(ui::holders::presets_autoloading_holder_get_type()); + + self->sie_settings = g_settings_new(tags::schema::id_input); + self->soe_settings = g_settings_new(tags::schema::id_output); + + prepare_spinbuttons<"Hz">(self->spinbutton_test_signal_frequency); + + g_settings_bind(self->sie_settings, "use-default-input-device", self->use_default_input, "active", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->soe_settings, "use-default-output-device", self->use_default_output, "active", + G_SETTINGS_BIND_DEFAULT); + + g_signal_connect(self->spinbutton_test_signal_frequency, "value-changed", + G_CALLBACK(+[](GtkSpinButton* btn, PipeManagerBox* self) { + self->data->ts->set_frequency(static_cast(gtk_spin_button_get_value(btn))); + }), + self); + + g_signal_connect( + self->use_default_input, "notify::active", + G_CALLBACK(+[](GtkSwitch* btn, GParamSpec* pspec, PipeManagerBox* self) { + if (gtk_switch_get_active(btn) != 0) { + g_settings_set_string(self->sie_settings, "input-device", + self->data->application->pm->default_input_device_name.c_str()); + + auto* holder = + static_cast(gtk_drop_down_get_selected_item(self->dropdown_input_devices)); + + if (holder == nullptr) { + return; + } + + if (holder->info->name != self->data->application->pm->default_input_device_name) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_devices_model)); n++) { + auto item = static_cast( + g_list_model_get_item(G_LIST_MODEL(self->input_devices_model), n)); + + if (item->info->name == self->data->application->pm->default_input_device_name) { + gtk_drop_down_set_selected(self->dropdown_input_devices, n); + + g_object_unref(item); + + break; + } + + g_object_unref(item); + } + } + } + }), + self); + + g_signal_connect( + self->use_default_output, "notify::active", + G_CALLBACK(+[](GtkSwitch* btn, GParamSpec* pspec, PipeManagerBox* self) { + if (gtk_switch_get_active(btn) != 0) { + g_settings_set_string(self->soe_settings, "output-device", + self->data->application->pm->default_output_device_name.c_str()); + + auto* holder = + static_cast(gtk_drop_down_get_selected_item(self->dropdown_output_devices)); + + if (holder == nullptr) { + return; + } + + if (holder->info->name != self->data->application->pm->default_output_device_name) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_devices_model)); n++) { + auto item = static_cast( + g_list_model_get_item(G_LIST_MODEL(self->output_devices_model), n)); + + if (item->info->name == self->data->application->pm->default_output_device_name) { + gtk_drop_down_set_selected(self->dropdown_output_devices, n); + + g_object_unref(item); + + break; + } + + g_object_unref(item); + } + } + } + }), + self); +} + +auto create() -> PipeManagerBox* { + return static_cast(g_object_new(EE_TYPE_PIPE_MANAGER_BOX, nullptr)); +} + +} // namespace ui::pipe_manager_box diff --git a/src/pitch.cpp b/src/pitch.cpp new file mode 100644 index 0000000..58cc793 --- /dev/null +++ b/src/pitch.cpp @@ -0,0 +1,532 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "pitch.hpp" + +Pitch::Pitch(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::pitch, schema, schema_path, pipe_manager) { + mode = parse_mode_key(util::gsettings_get_string(settings, "mode")); + formant = parse_formant_key(util::gsettings_get_string(settings, "formant")); + transients = parse_transients_key(util::gsettings_get_string(settings, "transients")); + detector = parse_detector_key(util::gsettings_get_string(settings, "detector")); + phase = parse_phase_key(util::gsettings_get_string(settings, "phase")); + + octaves = g_settings_get_int(settings, "octaves"); + semitones = g_settings_get_int(settings, "semitones"); + cents = g_settings_get_int(settings, "cents"); + + gconnections.push_back(g_signal_connect(settings, "changed::mode", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->mode = parse_mode_key(util::gsettings_get_string(settings, key)); + + if (!self->rubberband_ready) { + return; + } + + self->set_mode(); + }), + this)); + + gconnections.push_back(g_signal_connect( + settings, "changed::formant", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->formant = parse_formant_key(util::gsettings_get_string(settings, key)); + + if (!self->rubberband_ready) { + return; + } + + self->set_formant(); + }), + this)); + + gconnections.push_back(g_signal_connect( + settings, "changed::transients", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->transients = parse_transients_key(util::gsettings_get_string(settings, key)); + + if (!self->rubberband_ready) { + return; + } + + self->set_transients(); + }), + this)); + + gconnections.push_back(g_signal_connect( + settings, "changed::detector", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->detector = parse_detector_key(util::gsettings_get_string(settings, key)); + + if (!self->rubberband_ready) { + return; + } + + self->set_detector(); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::phase", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->phase = parse_phase_key(util::gsettings_get_string(settings, key)); + + if (!self->rubberband_ready) { + return; + } + + self->set_phase(); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::octaves", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->octaves = g_settings_get_int(settings, key); + + self->set_pitch_scale(); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::semitones", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->semitones = g_settings_get_int(settings, key); + + self->set_pitch_scale(); + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::cents", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->cents = g_settings_get_int(settings, key); + + self->set_pitch_scale(); + }), + this)); + + setup_input_output_gain(); +} + +Pitch::~Pitch() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Pitch::setup() { + rubberband_ready = false; + + latency_n_frames = 0U; + + deque_out_L.resize(0); + deque_out_R.resize(0); + + /* + RubberBand initialization is slow. It is better to do it outside of the plugin realtime thread + */ + + util::idle_add([&, this] { + if (rubberband_ready) { + return; + } + + init_stretcher(); + + std::scoped_lock lock(data_mutex); + + rubberband_ready = true; + }); +} + +void Pitch::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::scoped_lock lock(data_mutex); + + if (bypass || !rubberband_ready) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + stretcher_in[0] = left_in.data(); + stretcher_in[1] = right_in.data(); + + stretcher->process(stretcher_in.data(), n_samples, false); + + if (const auto n_available = stretcher->available(); n_available > 0) { + // util::debug(log_tag + name + " available: " + util::to_string(n_available)); + + data_L.resize(n_available); + data_R.resize(n_available); + + stretcher_out[0] = data_L.data(); + stretcher_out[1] = data_R.data(); + + stretcher->retrieve(stretcher_out.data(), n_available); + + for (int n = 0; n < n_available; n++) { + deque_out_L.push_back(data_L[n]); + deque_out_R.push_back(data_R[n]); + } + } + + if (deque_out_L.size() >= left_out.size()) { + for (float& v : left_out) { + v = deque_out_L.front(); + + deque_out_L.pop_front(); + } + + for (float& v : right_out) { + v = deque_out_R.front(); + + deque_out_R.pop_front(); + } + } else { + const uint offset = left_out.size() - deque_out_L.size(); + + if (offset != latency_n_frames) { + latency_n_frames = offset; + + notify_latency = true; + } + + for (uint n = 0U; !deque_out_L.empty() && n < left_out.size(); n++) { + if (n < offset) { + left_out[n] = 0.0F; + right_out[n] = 0.0F; + } else { + left_out[n] = deque_out_L.front(); + right_out[n] = deque_out_R.front(); + + deque_out_R.pop_front(); + deque_out_L.pop_front(); + } + } + } + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (notify_latency) { + latency_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_value, "") + " s"); + + util::idle_add([=, this]() { + if (!post_messages) { + return; + } + + latency.emit(latency_value); + }); + + g_idle_add((GSourceFunc) + + [](gpointer user_data) { + auto* self = static_cast(user_data); + + if (!self->post_messages) { + return G_SOURCE_REMOVE; + } + + if (self->latency.empty()) { + return G_SOURCE_REMOVE; + } + + self->latency.emit(self->latency_value); + + return G_SOURCE_REMOVE; + }, + this); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + + notify_latency = false; + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +/* + Code based on the RubberBand LADSPA plugin + + https://github.com/breakfastquay/rubberband/blob/cc937ebe655fc3c902ad0bc5cb63ce4e782720ee/ladspa/RubberBandPitchShifter.cpp#L377 +*/ + +auto Pitch::parse_mode_key(const std::string& key) -> Mode { + if (key == "HighSpeed") { + return Mode::speed; + } + + if (key == "HighQuality") { + return Mode::quality; + } + + if (key == "HighConsistency") { + return Mode::consistency; + } + + return Mode::speed; +} + +auto Pitch::parse_formant_key(const std::string& key) -> Formant { + if (key == "Shifted") { + return Formant::shifted; + } + + if (key == "Preserved") { + return Formant::preserved; + } + + return Formant::shifted; +} + +auto Pitch::parse_transients_key(const std::string& key) -> Transients { + if (key == "Crisp") { + return Transients::crisp; + } + + if (key == "Mixed") { + return Transients::mixed; + } + + if (key == "Smooth") { + return Transients::smooth; + } + + return Transients::crisp; +} + +auto Pitch::parse_detector_key(const std::string& key) -> Detector { + if (key == "Compound") { + return Detector::compound; + } + + if (key == "Percussive") { + return Detector::percussive; + } + + if (key == "Soft") { + return Detector::soft; + } + + return Detector::compound; +} + +auto Pitch::parse_phase_key(const std::string& key) -> Phase { + if (key == "Laminar") { + return Phase::laminar; + } + + if (key == "Independent") { + return Phase::independent; + } + + return Phase::laminar; +} + +void Pitch::set_mode() { + if (stretcher == nullptr) { + return; + } + + std::scoped_lock lock(data_mutex); + + switch (mode) { + case Mode::speed: + stretcher->setPitchOption(RubberBand::RubberBandStretcher::OptionPitchHighSpeed); + + break; + case Mode::quality: + stretcher->setPitchOption(RubberBand::RubberBandStretcher::OptionPitchHighQuality); + + break; + case Mode::consistency: + stretcher->setPitchOption(RubberBand::RubberBandStretcher::OptionPitchHighConsistency); + + break; + } +} + +void Pitch::set_formant() { + if (stretcher == nullptr) { + return; + } + + std::scoped_lock lock(data_mutex); + + switch (formant) { + case Formant::shifted: + stretcher->setFormantOption(RubberBand::RubberBandStretcher::OptionFormantShifted); + + break; + case Formant::preserved: + stretcher->setFormantOption(RubberBand::RubberBandStretcher::OptionFormantPreserved); + + break; + } +} + +void Pitch::set_transients() { + if (stretcher == nullptr) { + return; + } + + std::scoped_lock lock(data_mutex); + + switch (transients) { + case Transients::crisp: + stretcher->setTransientsOption(RubberBand::RubberBandStretcher::OptionTransientsCrisp); + + break; + case Transients::mixed: + stretcher->setTransientsOption(RubberBand::RubberBandStretcher::OptionTransientsMixed); + + break; + case Transients::smooth: + stretcher->setTransientsOption(RubberBand::RubberBandStretcher::OptionTransientsSmooth); + + break; + } +} + +void Pitch::set_detector() { + if (stretcher == nullptr) { + return; + } + + std::scoped_lock lock(data_mutex); + + switch (detector) { + case Detector::compound: + stretcher->setDetectorOption(RubberBand::RubberBandStretcher::OptionDetectorCompound); + + break; + case Detector::percussive: + stretcher->setDetectorOption(RubberBand::RubberBandStretcher::OptionDetectorPercussive); + + break; + case Detector::soft: + stretcher->setTransientsOption(RubberBand::RubberBandStretcher::OptionDetectorSoft); + + break; + } +} + +void Pitch::set_phase() { + if (stretcher == nullptr) { + return; + } + + std::scoped_lock lock(data_mutex); + + switch (phase) { + case Phase::laminar: + stretcher->setPhaseOption(RubberBand::RubberBandStretcher::OptionPhaseLaminar); + + break; + case Phase::independent: + stretcher->setPhaseOption(RubberBand::RubberBandStretcher::OptionPhaseIndependent); + + break; + } +} + +void Pitch::set_pitch_scale() { + if (stretcher == nullptr) { + return; + } + + std::scoped_lock lock(data_mutex); + + const double n_octaves = octaves + (static_cast(semitones) / 12.0) + (static_cast(cents) / 1200.0); + + const double ratio = std::pow(2.0, n_octaves); + + stretcher->setPitchScale(ratio); +} + +void Pitch::init_stretcher() { + delete stretcher; + + RubberBand::RubberBandStretcher::Options options = + RubberBand::RubberBandStretcher::OptionProcessRealTime | RubberBand::RubberBandStretcher::OptionChannelsTogether; + + stretcher = new RubberBand::RubberBandStretcher(rate, 2, options); + + stretcher->setMaxProcessSize(n_samples); + stretcher->setTimeRatio(time_ratio); + + set_pitch_scale(); + set_mode(); + set_formant(); + set_transients(); + set_detector(); + set_phase(); +} + +auto Pitch::get_latency_seconds() -> float { + return latency_value; +} \ No newline at end of file diff --git a/src/pitch_preset.cpp b/src/pitch_preset.cpp new file mode 100644 index 0000000..2e60f08 --- /dev/null +++ b/src/pitch_preset.cpp @@ -0,0 +1,72 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "pitch_preset.hpp" + +PitchPreset::PitchPreset() { + input_settings = g_settings_new_with_path(tags::schema::pitch::id, tags::schema::pitch::input_path); + + output_settings = g_settings_new_with_path(tags::schema::pitch::id, tags::schema::pitch::output_path); +} + +void PitchPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["pitch"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["pitch"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["pitch"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["pitch"]["mode"] = util::gsettings_get_string(settings, "mode"); + + json[section]["pitch"]["formant"] = util::gsettings_get_string(settings, "formant"); + + json[section]["pitch"]["transients"] = util::gsettings_get_string(settings, "transients"); + + json[section]["pitch"]["detector"] = util::gsettings_get_string(settings, "detector"); + + json[section]["pitch"]["phase"] = util::gsettings_get_string(settings, "phase"); + + json[section]["pitch"]["cents"] = g_settings_get_int(settings, "cents"); + + json[section]["pitch"]["semitones"] = g_settings_get_int(settings, "semitones"); + + json[section]["pitch"]["octaves"] = g_settings_get_int(settings, "octaves"); +} + +void PitchPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("pitch"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("pitch"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("pitch"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("pitch"), settings, "mode", "mode"); + + update_key(json.at(section).at("pitch"), settings, "formant", "formant"); + + update_key(json.at(section).at("pitch"), settings, "transients", "transients"); + + update_key(json.at(section).at("pitch"), settings, "detector", "detector"); + + update_key(json.at(section).at("pitch"), settings, "phase", "phase"); + + update_key(json.at(section).at("pitch"), settings, "semitones", "semitones"); + + update_key(json.at(section).at("pitch"), settings, "octaves", "octaves"); +} diff --git a/src/pitch_ui.cpp b/src/pitch_ui.cpp new file mode 100644 index 0000000..140356a --- /dev/null +++ b/src/pitch_ui.cpp @@ -0,0 +1,195 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "pitch_ui.hpp" + +namespace ui::pitch_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr pitch; + + std::vector connections; + + std::vector gconnections; +}; + +struct _PitchBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkComboBoxText *mode, *formant, *transients, *detector, *phase; + + GtkSpinButton *cents, *semitones, *octaves; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(PitchBox, pitch_box, GTK_TYPE_BOX) + +void on_reset(PitchBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(PitchBox* self, std::shared_ptr pitch, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->pitch = pitch; + + self->settings = g_settings_new_with_path(tags::schema::pitch::id, schema_path.c_str()); + + pitch->set_post_messages(true); + + self->data->connections.push_back(pitch->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(pitch->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + gsettings_bind_widgets<"mode", "formant", "transients", "detector", "phase">( + self->settings, self->mode, self->formant, self->transients, self->detector, self->phase); + + g_settings_bind(self->settings, "cents", gtk_spin_button_get_adjustment(self->cents), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "semitones", gtk_spin_button_get_adjustment(self->semitones), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "octaves", gtk_spin_button_get_adjustment(self->octaves), "value", + G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_PITCH_BOX(object); + + self->data->pitch->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(pitch_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_PITCH_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(pitch_box_parent_class)->finalize(object); +} + +void pitch_box_class_init(PitchBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::pitch_ui); + + gtk_widget_class_bind_template_child(widget_class, PitchBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, PitchBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, PitchBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, PitchBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, PitchBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, PitchBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, PitchBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, PitchBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, PitchBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, PitchBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, PitchBox, mode); + gtk_widget_class_bind_template_child(widget_class, PitchBox, formant); + gtk_widget_class_bind_template_child(widget_class, PitchBox, transients); + gtk_widget_class_bind_template_child(widget_class, PitchBox, detector); + gtk_widget_class_bind_template_child(widget_class, PitchBox, phase); + + gtk_widget_class_bind_template_child(widget_class, PitchBox, cents); + gtk_widget_class_bind_template_child(widget_class, PitchBox, semitones); + gtk_widget_class_bind_template_child(widget_class, PitchBox, octaves); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void pitch_box_init(PitchBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"">(self->cents, self->semitones, self->octaves); +} + +auto create() -> PitchBox* { + return static_cast(g_object_new(EE_TYPE_PITCH_BOX, nullptr)); +} + +} // namespace ui::pitch_box diff --git a/src/plugin_base.cpp b/src/plugin_base.cpp new file mode 100644 index 0000000..fd5de34 --- /dev/null +++ b/src/plugin_base.cpp @@ -0,0 +1,414 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "plugin_base.hpp" + +namespace { + +void on_process(void* userdata, spa_io_position* position) { + auto* d = static_cast(userdata); + + const auto n_samples = position->clock.duration; + const auto rate = position->clock.rate.denom; + + if (n_samples == 0 || rate == 0) { + return; + } + + if (rate != d->pb->rate || n_samples != d->pb->n_samples) { + d->pb->rate = rate; + d->pb->n_samples = n_samples; + d->pb->buffer_duration = static_cast(n_samples) / static_cast(rate); + + d->pb->dummy_left.resize(n_samples); + d->pb->dummy_right.resize(n_samples); + + std::ranges::fill(d->pb->dummy_left, 0.0F); + std::ranges::fill(d->pb->dummy_right, 0.0F); + + d->pb->setup(); + } + + // util::warning("processing: " + util::to_string(n_samples)); + + auto* in_left = static_cast(pw_filter_get_dsp_buffer(d->in_left, n_samples)); + auto* in_right = static_cast(pw_filter_get_dsp_buffer(d->in_right, n_samples)); + + auto* out_left = static_cast(pw_filter_get_dsp_buffer(d->out_left, n_samples)); + auto* out_right = static_cast(pw_filter_get_dsp_buffer(d->out_right, n_samples)); + + std::span left_in, right_in, left_out, right_out; + + if (in_left != nullptr) { + left_in = std::span{in_left, in_left + n_samples}; + } else { + left_in = d->pb->dummy_left; + } + + if (in_right != nullptr) { + right_in = std::span{in_right, in_right + n_samples}; + } else { + right_in = d->pb->dummy_right; + } + + if (out_left != nullptr) { + left_out = std::span{out_left, out_left + n_samples}; + } else { + left_out = d->pb->dummy_left; + } + + if (out_right != nullptr) { + right_out = std::span{out_right, out_right + n_samples}; + } else { + right_out = d->pb->dummy_right; + } + + if (!d->pb->enable_probe) { + d->pb->process(left_in, right_in, left_out, right_out); + } else { + auto* probe_left = static_cast(pw_filter_get_dsp_buffer(d->probe_left, n_samples)); + auto* probe_right = static_cast(pw_filter_get_dsp_buffer(d->probe_right, n_samples)); + + if (probe_left == nullptr || probe_right == nullptr) { + std::span l{d->pb->dummy_left.data(), d->pb->dummy_left.data() + n_samples}; + std::span r{d->pb->dummy_right.data(), d->pb->dummy_right.data() + n_samples}; + + d->pb->process(left_in, right_in, left_out, right_out, l, r); + } else { + std::span l{probe_left, probe_left + n_samples}; + std::span r{probe_right, probe_right + n_samples}; + + d->pb->process(left_in, right_in, left_out, right_out, l, r); + } + } +} + +const struct pw_filter_events filter_events = {.process = on_process}; + +} // namespace + +PluginBase::PluginBase(std::string tag, + std::string plugin_name, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager, + const bool& enable_probe) + : log_tag(std::move(tag)), + name(std::move(plugin_name)), + enable_probe(enable_probe), + settings(g_settings_new_with_path(schema.c_str(), schema_path.c_str())), + pm(pipe_manager) { + if (name != "output_level" && name != "spectrum") { + bypass = g_settings_get_boolean(settings, "bypass") != 0; + + gconnections.push_back(g_signal_connect(settings, "changed::bypass", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->bypass = g_settings_get_boolean(settings, "bypass") != 0; + }), + this)); + } + + pf_data.pb = this; + + const auto filter_name = "ee_" + log_tag.substr(0, log_tag.size() - 2U) + "_" + name; + + pm->lock(); + + auto* props_filter = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_filter, PW_KEY_APP_ID, tags::app::id); + pw_properties_set(props_filter, PW_KEY_NODE_NAME, filter_name.c_str()); + pw_properties_set(props_filter, PW_KEY_NODE_NICK, name.c_str()); + pw_properties_set(props_filter, PW_KEY_NODE_DESCRIPTION, filter_name.c_str()); + pw_properties_set(props_filter, PW_KEY_MEDIA_TYPE, "Audio"); + pw_properties_set(props_filter, PW_KEY_MEDIA_CATEGORY, "Filter"); + pw_properties_set(props_filter, PW_KEY_MEDIA_ROLE, "DSP"); + + filter = pw_filter_new(pm->core, filter_name.c_str(), props_filter); + + // left channel input + + auto* props_in_left = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_in_left, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_in_left, PW_KEY_PORT_NAME, "input_FL"); + pw_properties_set(props_in_left, "audio.channel", "FL"); + + pf_data.in_left = static_cast(pw_filter_add_port(filter, PW_DIRECTION_INPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, + sizeof(port), props_in_left, nullptr, 0)); + + // right channel input + + auto* props_in_right = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_in_right, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_in_right, PW_KEY_PORT_NAME, "input_FR"); + pw_properties_set(props_in_right, "audio.channel", "FR"); + + pf_data.in_right = static_cast(pw_filter_add_port(filter, PW_DIRECTION_INPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, + sizeof(port), props_in_right, nullptr, 0)); + + // left channel output + + auto* props_out_left = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_out_left, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_out_left, PW_KEY_PORT_NAME, "output_FL"); + pw_properties_set(props_out_left, "audio.channel", "FL"); + + pf_data.out_left = static_cast(pw_filter_add_port(filter, PW_DIRECTION_OUTPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, + sizeof(port), props_out_left, nullptr, 0)); + + // right channel output + + auto* props_out_right = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_out_right, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_out_right, PW_KEY_PORT_NAME, "output_FR"); + pw_properties_set(props_out_right, "audio.channel", "FR"); + + pf_data.out_right = static_cast(pw_filter_add_port( + filter, PW_DIRECTION_OUTPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, sizeof(port), props_out_right, nullptr, 0)); + + if (enable_probe) { + n_ports += 2; + + // probe left input + + auto* props_left = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_left, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_left, PW_KEY_PORT_NAME, "probe_FL"); + pw_properties_set(props_left, "audio.channel", "PROBE_FL"); + + pf_data.probe_left = static_cast(pw_filter_add_port( + filter, PW_DIRECTION_INPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, sizeof(port), props_left, nullptr, 0)); + + // probe right input + + auto* props_right = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_right, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_right, PW_KEY_PORT_NAME, "probe_FR"); + pw_properties_set(props_right, "audio.channel", "PROBE_FR"); + + pf_data.probe_right = static_cast(pw_filter_add_port( + filter, PW_DIRECTION_INPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, sizeof(port), props_right, nullptr, 0)); + } + + pm->sync_wait_unlock(); +} + +PluginBase::~PluginBase() { + post_messages = false; + + if (listener.link.next != nullptr || listener.link.prev != nullptr) { + spa_hook_remove(&listener); + } + + pw_filter_destroy(filter); + + for (auto& handler_id : gconnections) { + g_signal_handler_disconnect(settings, handler_id); + } + + gconnections.clear(); + + g_object_unref(settings); +} + +void PluginBase::set_post_messages(const bool& state) { + post_messages = state; +} + +void PluginBase::reset_settings() { + util::reset_all_keys_except(settings); +} + +auto PluginBase::connect_to_pw() -> bool { + connected_to_pw = false; + + /* + I still do not understand why we have to lock the main loop before using pw_filter_get_state after a call to + pw_filter_connect... + */ + + pm->lock(); + + if (pw_filter_connect(filter, PW_FILTER_FLAG_RT_PROCESS, nullptr, 0) == 0) { + pm->sync_wait_unlock(); + + while (pw_filter_get_state(filter, nullptr) != PW_FILTER_STATE_PAUSED) { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + node_id = pw_filter_get_node_id(filter); + + while (node_id == SPA_ID_INVALID) { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + + node_id = pw_filter_get_node_id(filter); + } + + /* + The filter we link in our pipeline have at least 4 ports. Some have six. Before we try to link filters we have to + wait until the information about their ports is available in PipeManager's list_ports vector. + */ + + while (pm->count_node_ports(node_id) != n_ports) { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + initialize_listener(); + + connected_to_pw = true; + + util::debug(log_tag + name + " successfully connected to PipeWire graph"); + + return true; + } + + pm->unlock(); + + util::warning(log_tag + name + " cannot connect the filter to PipeWire!"); + + return false; +} + +void PluginBase::initialize_listener() { + pw_filter_add_listener(filter, &listener, &filter_events, &pf_data); +} + +auto PluginBase::get_node_id() const -> uint { + return node_id; +} + +void PluginBase::set_active(const bool& state) const { + pw_filter_set_active(filter, state); +} + +void PluginBase::disconnect_from_pw() { + pm->lock(); + + set_active(false); + + if (listener.link.next != nullptr || listener.link.prev != nullptr) { + spa_hook_remove(&listener); + } + + pw_filter_disconnect(filter); + + connected_to_pw = false; + + pm->sync_wait_unlock(); + + node_id = SPA_ID_INVALID; +} + +void PluginBase::setup() {} + +void PluginBase::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) {} + +void PluginBase::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out, + std::span& probe_left, + std::span& probe_right) {} + +auto PluginBase::get_latency_seconds() -> float { + return 0.0F; +} + +void PluginBase::get_peaks(const std::span& left_in, + const std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!post_messages) { + return; + } + + // input level + + float peak_l = std::ranges::max(left_in); + float peak_r = std::ranges::max(right_in); + + input_peak_left = (peak_l > input_peak_left) ? peak_l : input_peak_left; + input_peak_right = (peak_r > input_peak_right) ? peak_r : input_peak_right; + + // output level + + peak_l = std::ranges::max(left_out); + peak_r = std::ranges::max(right_out); + + output_peak_left = (peak_l > output_peak_left) ? peak_l : output_peak_left; + output_peak_right = (peak_r > output_peak_right) ? peak_r : output_peak_right; +} + +void PluginBase::setup_input_output_gain() { + input_gain = static_cast(util::db_to_linear(g_settings_get_double(settings, "input-gain"))); + output_gain = static_cast(util::db_to_linear(g_settings_get_double(settings, "output-gain"))); + + g_signal_connect(settings, "changed::input-gain", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->input_gain = util::db_to_linear(g_settings_get_double(settings, key)); + }), + this); + + g_signal_connect(settings, "changed::output-gain", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->output_gain = util::db_to_linear(g_settings_get_double(settings, key)); + }), + this); +} + +void PluginBase::apply_gain(std::span& left, std::span& right, const float& gain) { + if (left.empty() || right.empty()) { + return; + } + + std::ranges::for_each(left, [&](auto& v) { v *= gain; }); + std::ranges::for_each(right, [&](auto& v) { v *= gain; }); +} + +void PluginBase::notify() { + const auto input_peak_db_l = util::linear_to_db(input_peak_left); + const auto input_peak_db_r = util::linear_to_db(input_peak_right); + + const auto output_peak_db_l = util::linear_to_db(output_peak_left); + const auto output_peak_db_r = util::linear_to_db(output_peak_right); + + input_level.emit(input_peak_db_l, input_peak_db_r); + output_level.emit(output_peak_db_l, output_peak_db_r); + + input_peak_left = util::minimum_linear_level; + input_peak_right = util::minimum_linear_level; + output_peak_left = util::minimum_linear_level; + output_peak_right = util::minimum_linear_level; +} + +void PluginBase::update_probe_links() {} diff --git a/src/plugins_box.cpp b/src/plugins_box.cpp new file mode 100644 index 0000000..bfbbec5 --- /dev/null +++ b/src/plugins_box.cpp @@ -0,0 +1,684 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "plugins_box.hpp" + +namespace ui::plugins_box { + +using namespace std::string_literals; + +struct Data { + public: + Data() { this->translated = tags::plugin_name::get_translated(); } + + ~Data() { util::debug("data struct destroyed"); } + + bool schedule_signal_idle; + + app::Application* application; + + PipelineType pipeline_type; + + std::string schema_path; + + std::map translated; + + std::vector connections; + + std::vector gconnections; +}; + +struct _PluginsBox { + GtkBox parent_instance; + + GtkMenuButton* menubutton_plugins; + + GtkOverlay* plugin_overlay; + + AdwStatusPage* overlay_no_plugins; + + GtkListView* listview; + + GtkStack* stack; + + GtkBox *startpoint_box, *endpoint_box; + + GtkImage *startpoint_icon, *endpoint_icon; + + GtkLabel *startpoint_name, *endpoint_name; + + ui::plugins_menu::PluginsMenu* plugins_menu; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(PluginsBox, plugins_box, GTK_TYPE_BOX) + +template +void add_plugins_to_stack(PluginsBox* self) { + EffectsBase* effects_base; + + if constexpr (pipeline_type == PipelineType::input) { + effects_base = self->data->application->sie; + } else if constexpr (pipeline_type == PipelineType::output) { + effects_base = self->data->application->soe; + } + + // saving the current visible page name for later usage + + std::string visible_page_name = + (gtk_stack_get_visible_child_name(self->stack) != nullptr) ? gtk_stack_get_visible_child_name(self->stack) : ""; + + // removing all plugins + + for (auto child = gtk_widget_get_first_child(GTK_WIDGET(self->stack)); child != nullptr;) { + auto* next_child = gtk_widget_get_next_sibling(child); + + uint serial = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(child), "serial")); + + set_ignore_filter_idle_add(serial, true); + + gtk_stack_remove(self->stack, child); + + child = next_child; + } + + // Adding to the stack the plugins in the list that are not there yet + + auto plugins_list = util::gchar_array_to_vector(g_settings_get_strv(self->settings, "plugins")); + + for (const auto& name : plugins_list) { + // With rfind we check if the plugin name starts with a given base name + + if (name.rfind(tags::plugin_name::autogain, 0) == 0) { + auto* box = ui::autogain_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::autogain_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::bass_enhancer, 0) == 0) { + auto* box = ui::bass_enhancer_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + auto path = name + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + ui::bass_enhancer_box::setup(box, plugin_ptr, self->data->schema_path + path); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::bass_loudness, 0) == 0) { + auto* box = ui::bass_loudness_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + auto path = name + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + ui::bass_loudness_box::setup(box, plugin_ptr, self->data->schema_path + path); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::compressor, 0) == 0) { + auto* box = ui::compressor_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::compressor_box::setup(box, plugin_ptr, self->data->schema_path + name + "/", self->data->application->pm); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::convolver, 0) == 0) { + auto* box = ui::convolver_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::convolver_box::setup(box, plugin_ptr, self->data->schema_path + name + "/", self->data->application); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::crossfeed, 0) == 0) { + auto* box = ui::crossfeed_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::crossfeed_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::crystalizer, 0) == 0) { + auto* box = ui::crystalizer_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::crystalizer_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::deesser, 0) == 0) { + auto* box = ui::deesser_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::deesser_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::delay, 0) == 0) { + auto* box = ui::delay_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::delay_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::echo_canceller, 0) == 0) { + auto* box = ui::echo_canceller_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + auto path = name + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + ui::echo_canceller_box::setup(box, plugin_ptr, self->data->schema_path + path); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::exciter, 0) == 0) { + auto* box = ui::exciter_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::exciter_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::equalizer, 0) == 0) { + auto* box = ui::equalizer_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::equalizer_box::setup(box, plugin_ptr, self->data->schema_path + name + "/", self->data->application); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::filter, 0) == 0) { + auto* box = ui::filter_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::filter_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::gate, 0) == 0) { + auto* box = ui::gate_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::gate_box::setup(box, plugin_ptr, self->data->schema_path + name + "/", self->data->application->pm); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::limiter, 0) == 0) { + auto* box = ui::limiter_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::limiter_box::setup(box, plugin_ptr, self->data->schema_path + name + "/", self->data->application->pm); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::loudness, 0) == 0) { + auto* box = ui::loudness_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::loudness_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::maximizer, 0) == 0) { + auto* box = ui::maximizer_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::maximizer_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::multiband_compressor, 0) == 0) { + auto* box = ui::multiband_compressor_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + auto path = name + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + ui::multiband_compressor_box::setup(box, plugin_ptr, self->data->schema_path + path, self->data->application->pm); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::multiband_gate, 0) == 0) { + auto* box = ui::multiband_gate_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + auto path = name + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + ui::multiband_gate_box::setup(box, plugin_ptr, self->data->schema_path + path); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::pitch, 0) == 0) { + auto* box = ui::pitch_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::pitch_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::reverb, 0) == 0) { + auto* box = ui::reverb_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::reverb_box::setup(box, plugin_ptr, self->data->schema_path + name + "/"); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::rnnoise, 0) == 0) { + auto* box = ui::rnnoise_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + ui::rnnoise_box::setup(box, plugin_ptr, self->data->schema_path + name + "/", self->data->application); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } else if (name.rfind(tags::plugin_name::stereo_tools, 0) == 0) { + auto* box = ui::stereo_tools_box::create(); + + auto plugin_ptr = effects_base->get_plugin_instance(name); + + auto path = name + "/"; + + path.erase(std::remove(path.begin(), path.end(), '_'), path.end()); + + ui::stereo_tools_box::setup(box, plugin_ptr, self->data->schema_path + path); + + gtk_stack_add_named(self->stack, GTK_WIDGET(box), name.c_str()); + } + } + + if (plugins_list.empty()) { + gtk_widget_show(GTK_WIDGET(self->overlay_no_plugins)); + + gtk_widget_hide(GTK_WIDGET(self->startpoint_box)); + + gtk_widget_hide(GTK_WIDGET(self->endpoint_box)); + } else { + gtk_widget_hide(GTK_WIDGET(self->overlay_no_plugins)); + + gtk_widget_show(GTK_WIDGET(self->startpoint_box)); + + gtk_widget_show(GTK_WIDGET(self->endpoint_box)); + + if (std::ranges::find(plugins_list, visible_page_name) != plugins_list.end()) { + gtk_stack_set_visible_child_name(self->stack, visible_page_name.c_str()); + } + } +} + +void setup_listview(PluginsBox* self) { + auto* factory = gtk_signal_list_item_factory_new(); + + // setting the factory callbacks + + g_signal_connect( + factory, "setup", G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PluginsBox* self) { + auto builder = gtk_builder_new_from_resource(tags::resources::plugin_row_ui); + + auto* top_box = gtk_builder_get_object(builder, "top_box"); + auto* plugin_icon = gtk_builder_get_object(builder, "plugin_icon"); + auto* remove = gtk_builder_get_object(builder, "remove"); + auto* enable = gtk_builder_get_object(builder, "enable"); + auto* drag_handle = gtk_builder_get_object(builder, "drag_handle"); + + g_object_set_data(G_OBJECT(item), "top_box", top_box); + g_object_set_data(G_OBJECT(item), "plugin_icon", plugin_icon); + g_object_set_data(G_OBJECT(item), "name", gtk_builder_get_object(builder, "name")); + g_object_set_data(G_OBJECT(item), "remove", remove); + g_object_set_data(G_OBJECT(item), "enable", enable); + g_object_set_data(G_OBJECT(item), "drag_handle", drag_handle); + + gtk_list_item_set_child(item, GTK_WIDGET(top_box)); + + g_object_unref(builder); + + // showing/hiding icons based on wether the mouse is over the plugin row + + auto* controller = gtk_event_controller_motion_new(); + + g_object_set_data(G_OBJECT(controller), "remove", remove); + g_object_set_data(G_OBJECT(controller), "enable", enable); + g_object_set_data(G_OBJECT(controller), "drag_handle", drag_handle); + + g_signal_connect(controller, "enter", + G_CALLBACK(+[](GtkEventControllerMotion* controller, gdouble x, gdouble y, PluginsBox* self) { + gtk_widget_set_opacity(GTK_WIDGET(g_object_get_data(G_OBJECT(controller), "remove")), 1.0); + gtk_widget_set_opacity(GTK_WIDGET(g_object_get_data(G_OBJECT(controller), "enable")), 1.0); + gtk_widget_set_opacity(GTK_WIDGET(g_object_get_data(G_OBJECT(controller), "drag_handle")), + 1.0); + }), + self); + + g_signal_connect(controller, "leave", G_CALLBACK(+[](GtkEventControllerMotion* controller, PluginsBox* self) { + gtk_widget_set_opacity(GTK_WIDGET(g_object_get_data(G_OBJECT(controller), "remove")), 0.0); + gtk_widget_set_opacity(GTK_WIDGET(g_object_get_data(G_OBJECT(controller), "enable")), 0.0); + gtk_widget_set_opacity(GTK_WIDGET(g_object_get_data(G_OBJECT(controller), "drag_handle")), + 0.0); + }), + self); + + gtk_widget_add_controller(GTK_WIDGET(top_box), controller); + + // Configuring row drag and drop + + auto* drag_source = gtk_drag_source_new(); + + gtk_drag_source_set_actions(drag_source, GDK_ACTION_MOVE); + + g_object_set_data(G_OBJECT(drag_source), "top_box", top_box); + + g_signal_connect( + drag_source, "prepare", G_CALLBACK(+[](GtkDragSource* source, double x, double y, PluginsBox* self) { + auto* top_box = static_cast(g_object_get_data(G_OBJECT(source), "top_box")); + + auto* paintable = gtk_widget_paintable_new(GTK_WIDGET(top_box)); + + gtk_drag_source_set_icon(source, paintable, 0, 0); + + if (auto* plugin_name = static_cast(g_object_get_data(G_OBJECT(top_box), "page-name")); + plugin_name != nullptr) { + return gdk_content_provider_new_typed(G_TYPE_STRING, plugin_name); + } + + return gdk_content_provider_new_typed(G_TYPE_STRING, ""); + }), + self); + + auto* drop_target = gtk_drop_target_new(G_TYPE_STRING, GDK_ACTION_MOVE); + + g_object_set_data(G_OBJECT(drop_target), "top_box", top_box); + + g_signal_connect( + drop_target, "drop", + G_CALLBACK(+[](GtkDropTarget* target, const GValue* value, double x, double y, PluginsBox* self) { + if (!G_VALUE_HOLDS(value, G_TYPE_STRING)) { + return false; + } + + auto* top_box = static_cast(g_object_get_data(G_OBJECT(target), "top_box")); + + if (auto* dst = static_cast(g_object_get_data(G_OBJECT(top_box), "page-name")); + dst != nullptr) { + auto* src = g_value_get_string(value); + + if (g_strcmp0(src, dst) != 0) { + auto list = util::gchar_array_to_vector(g_settings_get_strv(self->settings, "plugins")); + + auto iter_src = std::ranges::find(list, src); + auto iter_dst = std::ranges::find(list, dst); + + auto insert_after = (iter_src - list.begin() < iter_dst - list.begin()) ? true : false; + + list.erase(iter_src); + + iter_dst = std::ranges::find(list, dst); + + list.insert(((insert_after) ? (iter_dst + 1) : iter_dst), src); + + g_settings_set_strv(self->settings, "plugins", util::make_gchar_pointer_vector(list).data()); + + return true; + } + + return false; + } + + return false; + }), + self); + + gtk_widget_add_controller(GTK_WIDGET(drag_handle), GTK_EVENT_CONTROLLER(drag_source)); + gtk_widget_add_controller(GTK_WIDGET(top_box), GTK_EVENT_CONTROLLER(drop_target)); + + g_signal_connect(remove, "clicked", G_CALLBACK(+[](GtkButton* btn, PluginsBox* self) { + if (auto* name = static_cast(g_object_get_data(G_OBJECT(btn), "page-name")); + name != nullptr) { + auto list = util::gchar_array_to_vector(g_settings_get_strv(self->settings, "plugins")); + + list.erase(std::remove_if(list.begin(), list.end(), + [=](const auto& plugin_name) { return plugin_name == name; }), + list.end()); + + g_settings_set_strv(self->settings, "plugins", + util::make_gchar_pointer_vector(list).data()); + } + }), + self); + }), + self); + + g_signal_connect(factory, "bind", + G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PluginsBox* self) { + auto* top_box = static_cast(g_object_get_data(G_OBJECT(item), "top_box")); + auto* label = static_cast(g_object_get_data(G_OBJECT(item), "name")); + auto* remove = static_cast(g_object_get_data(G_OBJECT(item), "remove")); + auto* enable = static_cast(g_object_get_data(G_OBJECT(item), "enable")); + auto* plugin_icon = static_cast(g_object_get_data(G_OBJECT(item), "plugin_icon")); + + gtk_image_set_from_icon_name(plugin_icon, "ee-arrow-down-symbolic"); + + auto* child_item = gtk_list_item_get_item(item); + + auto page = GTK_STACK_PAGE(child_item); + auto name = gtk_stack_page_get_name(page); + + g_object_set_data(G_OBJECT(top_box), "page-name", const_cast(name)); + g_object_set_data(G_OBJECT(remove), "page-name", const_cast(name)); + + gtk_label_set_text(label, self->data->translated[name].c_str()); + + gtk_accessible_update_property(GTK_ACCESSIBLE(remove), GTK_ACCESSIBLE_PROPERTY_LABEL, + (_("Remove") + " "s + self->data->translated[name]).c_str(), -1); + + // binding the enable button to the bypass key + + auto gname = std::string(name); + + gname.erase(std::remove(gname.begin(), gname.end(), '_'), gname.end()); + + auto schema_path = self->data->schema_path + gname + "/"; + auto schema_id = tags::app::id + "."s + gname; + + auto* settings = g_settings_new_with_path(schema_id.c_str(), schema_path.c_str()); + + gsettings_bind_widget(settings, "bypass", enable, G_SETTINGS_BIND_INVERT_BOOLEAN); + + g_object_unref(settings); + }), + self); + + gtk_list_view_set_factory(self->listview, factory); + + g_object_unref(factory); +} + +void setup(PluginsBox* self, app::Application* application, PipelineType pipeline_type) { + self->data->application = application; + self->data->pipeline_type = pipeline_type; + + switch (pipeline_type) { + case PipelineType::input: { + self->settings = g_settings_new(tags::schema::id_input); + + self->data->schema_path = tags::app::path_stream_inputs; + + add_plugins_to_stack(self); + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::plugins", G_CALLBACK(+[](GSettings* settings, char* key, PluginsBox* self) { + add_plugins_to_stack(self); + }), + self)); + + gtk_image_set_from_icon_name(self->startpoint_icon, "audio-input-microphone-symbolic"); + gtk_image_set_from_icon_name(self->endpoint_icon, "ee-applications-multimedia-symbolic"); + + gtk_label_set_text(self->startpoint_name, _("Input Device")); + gtk_label_set_text(self->endpoint_name, _("Recorders")); + + break; + } + case PipelineType::output: { + self->settings = g_settings_new(tags::schema::id_output); + + self->data->schema_path = tags::app::path_stream_outputs; + + add_plugins_to_stack(self); + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::plugins", G_CALLBACK(+[](GSettings* settings, char* key, PluginsBox* self) { + add_plugins_to_stack(self); + }), + self)); + + gtk_image_set_from_icon_name(self->startpoint_icon, "ee-applications-multimedia-symbolic"); + gtk_image_set_from_icon_name(self->endpoint_icon, "audio-speakers-symbolic"); + + gtk_label_set_text(self->startpoint_name, _("Players")); + gtk_label_set_text(self->endpoint_name, _("Output Device")); + + break; + } + } + + ui::plugins_menu::setup(self->plugins_menu, application, pipeline_type); + + setup_listview(self); +} + +void realize(GtkWidget* widget) { + auto* self = EE_PLUGINS_BOX(widget); + + self->data->schedule_signal_idle = true; + + GTK_WIDGET_CLASS(plugins_box_parent_class)->realize(widget); +} + +void unroot(GtkWidget* widget) { + auto* self = EE_PLUGINS_BOX(widget); + + self->data->schedule_signal_idle = false; + + GTK_WIDGET_CLASS(plugins_box_parent_class)->unroot(widget); +} + +void dispose(GObject* object) { + auto* self = EE_PLUGINS_BOX(object); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + // Trying to avoid that the functions scheduled by the plugins are executed when the widgets have already been + // disposed + + for (auto child = gtk_widget_get_first_child(GTK_WIDGET(self->stack)); child != nullptr;) { + auto* next_child = gtk_widget_get_next_sibling(child); + + uint serial = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(child), "serial")); + + set_ignore_filter_idle_add(serial, true); + + child = next_child; + } + + util::debug("disposed"); + + G_OBJECT_CLASS(plugins_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_PLUGINS_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(plugins_box_parent_class)->finalize(object); +} + +void plugins_box_class_init(PluginsBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + widget_class->realize = realize; + widget_class->unroot = unroot; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::plugins_box_ui); + + gtk_widget_class_bind_template_child(widget_class, PluginsBox, menubutton_plugins); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, plugin_overlay); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, overlay_no_plugins); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, listview); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, stack); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, startpoint_box); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, startpoint_icon); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, startpoint_name); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, endpoint_box); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, endpoint_icon); + gtk_widget_class_bind_template_child(widget_class, PluginsBox, endpoint_name); +} + +void plugins_box_init(PluginsBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->data->schedule_signal_idle = false; + + self->plugins_menu = ui::plugins_menu::create(); + + gtk_menu_button_set_popover(self->menubutton_plugins, GTK_WIDGET(self->plugins_menu)); + + gtk_overlay_set_clip_overlay(self->plugin_overlay, GTK_WIDGET(self->overlay_no_plugins), 1); +} + +auto create() -> PluginsBox* { + return static_cast(g_object_new(EE_TYPE_PLUGINS_BOX, nullptr)); +} + +} // namespace ui::plugins_box diff --git a/src/plugins_menu.cpp b/src/plugins_menu.cpp new file mode 100644 index 0000000..8574b95 --- /dev/null +++ b/src/plugins_menu.cpp @@ -0,0 +1,251 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "plugins_menu.hpp" + +namespace ui::plugins_menu { + +using namespace std::string_literals; + +struct Data { + public: + Data() { this->translated = tags::plugin_name::get_translated(); } + + ~Data() { util::debug("data struct destroyed"); } + + bool schedule_signal_idle; + + app::Application* application; + + std::map translated; + + std::vector connections; + + std::vector gconnections; +}; + +struct _PluginsMenu { + GtkPopover parent_instance; + + GtkScrolledWindow* scrolled_window; + + GtkListView* listview; + + GtkStringList* string_list; + + GSettings *settings, *app_settings; + + Data* data; +}; + +G_DEFINE_TYPE(PluginsMenu, plugins_menu, GTK_TYPE_POPOVER) + +void setup_listview(PluginsMenu* self) { + auto* factory = gtk_signal_list_item_factory_new(); + + // setting the factory callbacks + + g_signal_connect( + factory, "setup", G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PluginsMenu* self) { + auto* box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); + auto* label = gtk_label_new(nullptr); + auto* button = gtk_button_new_from_icon_name("list-add-symbolic"); + + gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); + gtk_widget_set_hexpand(GTK_WIDGET(label), 1); + + gtk_box_append(GTK_BOX(box), GTK_WIDGET(label)); + gtk_box_append(GTK_BOX(box), GTK_WIDGET(button)); + + gtk_widget_add_css_class(GTK_WIDGET(button), "circular"); + + gtk_list_item_set_activatable(item, 0); + gtk_list_item_set_child(item, GTK_WIDGET(box)); + + g_object_set_data(G_OBJECT(item), "name", label); + g_object_set_data(G_OBJECT(item), "add", button); + + g_signal_connect( + button, "clicked", G_CALLBACK(+[](GtkButton* btn, PluginsMenu* self) { + if (auto* string_object = GTK_STRING_OBJECT(g_object_get_data(G_OBJECT(btn), "string-object")); + string_object != nullptr) { + auto* translated_name = gtk_string_object_get_string(string_object); + + std::string key_name; + + for (const auto& [key, value] : self->data->translated) { + if (translated_name == value) { + key_name = key; + + break; + } + } + + auto list = util::gchar_array_to_vector(g_settings_get_strv(self->settings, "plugins")); + + if (std::ranges::find(list, key_name) != list.end()) { + return; + } + + constexpr auto limiter_plugins = + std::to_array({tags::plugin_name::limiter, tags::plugin_name::maximizer}); + + if (!list.empty() && std::any_of(limiter_plugins.begin(), limiter_plugins.end(), + [&](const auto& str) { return str == list.at(list.size() - 1U); })) { + // If the user is careful protecting his/her device with a plugin of + // type limiter at the last position of the filter chain, we follow + // this behaviour inserting the new plugin at the second last position + + list.insert(list.cend() - 1U, key_name); + } else { + list.push_back(key_name); + } + + g_settings_set_strv(self->settings, "plugins", util::make_gchar_pointer_vector(list).data()); + } + }), + self); + }), + self); + + g_signal_connect(factory, "bind", + G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PluginsMenu* self) { + auto* label = static_cast(g_object_get_data(G_OBJECT(item), "name")); + auto* btn_add = static_cast(g_object_get_data(G_OBJECT(item), "add")); + + auto* child_item = gtk_list_item_get_item(item); + auto* string_object = GTK_STRING_OBJECT(child_item); + + g_object_set_data(G_OBJECT(btn_add), "string-object", string_object); + + auto* translated_name = gtk_string_object_get_string(GTK_STRING_OBJECT(child_item)); + + gtk_label_set_text(label, translated_name); + + gtk_accessible_update_property(GTK_ACCESSIBLE(btn_add), GTK_ACCESSIBLE_PROPERTY_LABEL, + (_("Add") + " "s + translated_name).c_str(), -1); + }), + self); + + gtk_list_view_set_factory(self->listview, factory); + + g_object_unref(factory); + + for (const auto& translated_name : std::views::values(self->data->translated)) { + gtk_string_list_append(self->string_list, translated_name.c_str()); + } +} + +void setup(PluginsMenu* self, app::Application* application, PipelineType pipeline_type) { + self->data->application = application; + + switch (pipeline_type) { + case PipelineType::input: { + self->settings = g_settings_new(tags::schema::id_input); + + break; + } + case PipelineType::output: { + self->settings = g_settings_new(tags::schema::id_output); + + break; + } + } + + setup_listview(self); +} + +void show(GtkWidget* widget) { + auto* self = EE_PLUGINS_MENU(widget); + + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->data->application)); + + auto active_window_height = gtk_widget_get_allocated_height(GTK_WIDGET(active_window)); + + const int menu_height = static_cast(0.5F * static_cast(active_window_height)); + + gtk_scrolled_window_set_max_content_height(self->scrolled_window, menu_height); + + GTK_WIDGET_CLASS(plugins_menu_parent_class)->show(widget); +} + +void dispose(GObject* object) { + auto* self = EE_PLUGINS_MENU(object); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + g_object_unref(self->app_settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(plugins_menu_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_PLUGINS_MENU(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(plugins_menu_parent_class)->finalize(object); +} + +void plugins_menu_class_init(PluginsMenuClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + widget_class->show = show; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::plugins_menu_ui); + + gtk_widget_class_bind_template_child(widget_class, PluginsMenu, string_list); + + gtk_widget_class_bind_template_child(widget_class, PluginsMenu, scrolled_window); + gtk_widget_class_bind_template_child(widget_class, PluginsMenu, listview); +} + +void plugins_menu_init(PluginsMenu* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->app_settings = g_settings_new(tags::app::id); + + g_settings_bind(self->app_settings, "autohide-popovers", self, "autohide", G_SETTINGS_BIND_DEFAULT); +} + +auto create() -> PluginsMenu* { + return static_cast(g_object_new(EE_TYPE_PLUGINS_MENU, nullptr)); +} + +} // namespace ui::plugins_menu diff --git a/src/preferences_general.cpp b/src/preferences_general.cpp new file mode 100644 index 0000000..85faa0f --- /dev/null +++ b/src/preferences_general.cpp @@ -0,0 +1,133 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "preferences_general.hpp" + +namespace ui::preferences::general { + +using namespace std::string_literals; + +struct _PreferencesGeneral { + AdwPreferencesPage parent_instance; + + GtkSwitch *enable_autostart, *process_all_inputs, *process_all_outputs, *theme_switch, *shutdown_on_window_close, + *use_cubic_volumes, *autohide_popovers, *reset_volume_on_startup, *exclude_monitor_streams; + + GtkSpinButton* inactivity_timeout; + + GSettings* settings; +}; + +G_DEFINE_TYPE(PreferencesGeneral, preferences_general, ADW_TYPE_PREFERENCES_PAGE) + +auto on_enable_autostart(GtkSwitch* obj, gboolean state, gpointer user_data) -> gboolean { + std::filesystem::path autostart_dir{g_get_user_config_dir() + "/autostart"s}; + + if (!std::filesystem::is_directory(autostart_dir)) { + std::filesystem::create_directories(autostart_dir); + } + + std::filesystem::path autostart_file{g_get_user_config_dir() + "/autostart/easyeffects-service.desktop"s}; + + if (state != 0) { + if (!std::filesystem::exists(autostart_file)) { + std::ofstream ofs{autostart_file}; + + ofs << "[Desktop Entry]\n"; + ofs << "Name=EasyEffects\n"; + ofs << "Comment=EasyEffects Service\n"; + ofs << "Exec=easyeffects --gapplication-service\n"; + ofs << "Icon=easyeffects\n"; + ofs << "StartupNotify=false\n"; + ofs << "Terminal=false\n"; + ofs << "Type=Application\n"; + + ofs.close(); + + util::debug("autostart file created"); + } + } else { + if (std::filesystem::exists(autostart_file)) { + std::filesystem::remove(autostart_file); + + util::debug("autostart file removed"); + } + } + + return 0; +} + +void dispose(GObject* object) { + auto* self = EE_PREFERENCES_GENERAL(object); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(preferences_general_parent_class)->dispose(object); +} + +void preferences_general_class_init(PreferencesGeneralClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::preferences_general_ui); + + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, enable_autostart); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, process_all_inputs); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, process_all_outputs); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, theme_switch); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, autohide_popovers); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, shutdown_on_window_close); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, use_cubic_volumes); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, reset_volume_on_startup); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, exclude_monitor_streams); + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, inactivity_timeout); + + gtk_widget_class_bind_template_callback(widget_class, on_enable_autostart); +} + +void preferences_general_init(PreferencesGeneral* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->settings = g_settings_new(tags::app::id); + + prepare_spinbuttons<"s">(self->inactivity_timeout); + + // initializing some widgets + + gtk_switch_set_active(self->enable_autostart, + static_cast(std::filesystem::is_regular_file( + g_get_user_config_dir() + "/autostart/easyeffects-service.desktop"s))); + + gsettings_bind_widgets<"process-all-inputs", "process-all-outputs", "use-dark-theme", "shutdown-on-window-close", + "use-cubic-volumes", "autohide-popovers", "reset-volume-on-startup", "exclude-monitor-streams", + "inactivity-timeout">( + self->settings, self->process_all_inputs, self->process_all_outputs, self->theme_switch, + self->shutdown_on_window_close, self->use_cubic_volumes, self->autohide_popovers, self->reset_volume_on_startup, + self->exclude_monitor_streams, self->inactivity_timeout); +} + +auto create() -> PreferencesGeneral* { + return static_cast(g_object_new(EE_TYPE_PREFERENCES_GENERAL, nullptr)); +} + +} // namespace ui::preferences::general diff --git a/src/preferences_spectrum.cpp b/src/preferences_spectrum.cpp new file mode 100644 index 0000000..6dba36c --- /dev/null +++ b/src/preferences_spectrum.cpp @@ -0,0 +1,226 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "preferences_spectrum.hpp" + +namespace ui::preferences::spectrum { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + std::vector gconnections; +}; + +struct _PreferencesSpectrum { + AdwPreferencesPage parent_instance; + + GtkSwitch *show, *fill, *show_bar_border, *rounded_corners; + + GtkColorButton *color_button, *axis_color_button; + + GtkComboBoxText* type; + + GtkSpinButton *n_points, *height, *line_width, *minimum_frequency, *maximum_frequency; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(PreferencesSpectrum, preferences_spectrum, ADW_TYPE_PREFERENCES_PAGE) + +void on_spectrum_color_set(PreferencesSpectrum* self, GtkColorButton* button) { + GdkRGBA rgba; + + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(button), &rgba); + + g_settings_set(self->settings, "color", "(dddd)", rgba.red, rgba.green, rgba.blue, rgba.alpha); +} + +void on_spectrum_axis_color_set(PreferencesSpectrum* self, GtkColorButton* button) { + GdkRGBA rgba; + + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(button), &rgba); + + g_settings_set(self->settings, "color-axis-labels", "(dddd)", rgba.red, rgba.green, rgba.blue, rgba.alpha); +} + +void dispose(GObject* object) { + auto* self = EE_PREFERENCES_SPECTRUM(object); + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(preferences_spectrum_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_PREFERENCES_SPECTRUM(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(preferences_spectrum_parent_class)->finalize(object); +} + +void preferences_spectrum_class_init(PreferencesSpectrumClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::preferences_spectrum_ui); + + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, show); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, type); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, fill); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, n_points); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, line_width); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, height); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, show_bar_border); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, rounded_corners); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, color_button); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, axis_color_button); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, minimum_frequency); + gtk_widget_class_bind_template_child(widget_class, PreferencesSpectrum, maximum_frequency); + + gtk_widget_class_bind_template_callback(widget_class, on_spectrum_color_set); + gtk_widget_class_bind_template_callback(widget_class, on_spectrum_axis_color_set); +} + +void preferences_spectrum_init(PreferencesSpectrum* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->settings = g_settings_new(tags::schema::spectrum::id); + + // initializing some widgets + + auto color = util::gsettings_get_color(self->settings, "color"); + + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(self->color_button), &color); + + color = util::gsettings_get_color(self->settings, "color-axis-labels"); + + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(self->axis_color_button), &color); + + // connecting some widgets signals + + prepare_spinbuttons<"px">(self->height, self->line_width); + + g_signal_connect(self->minimum_frequency, "output", G_CALLBACK(+[](GtkSpinButton* button, gpointer user_data) { + return parse_spinbutton_output(button, "Hz"); + }), + nullptr); + + g_signal_connect(self->minimum_frequency, "input", + G_CALLBACK(+[](GtkSpinButton* button, gdouble* new_value, PreferencesSpectrum* self) { + const auto parse_result = parse_spinbutton_input(button, new_value); + + if (parse_result != GTK_INPUT_ERROR) { + const auto max_freq = + static_cast(g_settings_get_int(self->settings, "maximum-frequency")); + + if (const auto valid_min_freq = max_freq - 100.0; *new_value > valid_min_freq) { + *new_value = valid_min_freq; + } + } + + return parse_result; + }), + self); + + g_signal_connect(self->maximum_frequency, "output", G_CALLBACK(+[](GtkSpinButton* button, gpointer user_data) { + return parse_spinbutton_output(button, "Hz"); + }), + nullptr); + + g_signal_connect(self->maximum_frequency, "input", + G_CALLBACK(+[](GtkSpinButton* button, gdouble* new_value, PreferencesSpectrum* self) { + const auto parse_result = parse_spinbutton_input(button, new_value); + + if (parse_result != GTK_INPUT_ERROR) { + const auto min_freq = + static_cast(g_settings_get_int(self->settings, "minimum-frequency")); + + if (const auto valid_max_freq = min_freq + 100.0; *new_value < valid_max_freq) { + *new_value = valid_max_freq; + } + } + + return parse_result; + }), + self); + + // spectrum section gsettings bindings + + g_settings_bind(self->settings, "show", self->show, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "fill", self->fill, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "rounded-corners", self->rounded_corners, "active", G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "show-bar-border", self->show_bar_border, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "n-points", gtk_spin_button_get_adjustment(self->n_points), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "height", gtk_spin_button_get_adjustment(self->height), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "line-width", gtk_spin_button_get_adjustment(self->line_width), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "minimum-frequency", gtk_spin_button_get_adjustment(self->minimum_frequency), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->settings, "maximum-frequency", gtk_spin_button_get_adjustment(self->maximum_frequency), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "type", self->type, "active-id", G_SETTINGS_BIND_DEFAULT); + + // Spectrum gsettings signals connections + + self->data->gconnections.push_back(g_signal_connect( + self->settings, "changed::color", G_CALLBACK(+[](GSettings* settings, char* key, PreferencesSpectrum* self) { + auto color = util::gsettings_get_color(settings, key); + + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(self->color_button), &color); + }), + self)); + + self->data->gconnections.push_back( + g_signal_connect(self->settings, "changed::color-axis-labels", + G_CALLBACK(+[](GSettings* settings, char* key, PreferencesSpectrum* self) { + auto color = util::gsettings_get_color(settings, key); + + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(self->axis_color_button), &color); + }), + self)); +} + +auto create() -> PreferencesSpectrum* { + return static_cast(g_object_new(EE_TYPE_PREFERENCES_SPECTRUM, nullptr)); +} + +} // namespace ui::preferences::spectrum diff --git a/src/preferences_window.cpp b/src/preferences_window.cpp new file mode 100644 index 0000000..a027f9a --- /dev/null +++ b/src/preferences_window.cpp @@ -0,0 +1,68 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "preferences_window.hpp" + +namespace ui::preferences::window { + +struct _PreferencesWindow { + AdwPreferencesWindow parent_instance; + + ui::preferences::general::PreferencesGeneral* page_general; + + ui::preferences::spectrum::PreferencesSpectrum* page_spectrum; +}; + +G_DEFINE_TYPE(PreferencesWindow, preferences_window, ADW_TYPE_PREFERENCES_WINDOW) + +void dispose(GObject* object) { + auto* self = EE_PREFERENCES_WINDOW(object); + + adw_preferences_window_remove(ADW_PREFERENCES_WINDOW(self), ADW_PREFERENCES_PAGE(self->page_general)); + adw_preferences_window_remove(ADW_PREFERENCES_WINDOW(self), ADW_PREFERENCES_PAGE(self->page_spectrum)); + + util::debug("disposed"); + + G_OBJECT_CLASS(preferences_window_parent_class)->dispose(object); +} + +void preferences_window_class_init(PreferencesWindowClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::preferences_window_ui); +} + +void preferences_window_init(PreferencesWindow* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->page_general = ui::preferences::general::create(); + self->page_spectrum = ui::preferences::spectrum::create(); + + adw_preferences_window_add(ADW_PREFERENCES_WINDOW(self), ADW_PREFERENCES_PAGE(self->page_general)); + adw_preferences_window_add(ADW_PREFERENCES_WINDOW(self), ADW_PREFERENCES_PAGE(self->page_spectrum)); +} + +auto create() -> PreferencesWindow* { + return static_cast(g_object_new(EE_TYPE_PREFERENCES_WINDOW, nullptr)); +} + +} // namespace ui::preferences::window diff --git a/src/presets_autoloading_holder.cpp b/src/presets_autoloading_holder.cpp new file mode 100644 index 0000000..dcd431f --- /dev/null +++ b/src/presets_autoloading_holder.cpp @@ -0,0 +1,60 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "presets_autoloading_holder.hpp" + +namespace ui::holders { + +G_DEFINE_TYPE(PresetsAutoloadingHolder, presets_autoloading_holder, G_TYPE_OBJECT); + +void presets_autoloading_holder_finalize(GObject* object) { + auto* self = EE_PRESETS_AUTOLOADING_HOLDER(object); + + util::debug(self->data->device + ", " + self->data->preset_name + " finalized"); + + delete self->data; + + G_OBJECT_CLASS(presets_autoloading_holder_parent_class)->finalize(object); +} + +void presets_autoloading_holder_class_init(PresetsAutoloadingHolderClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + + object_class->finalize = presets_autoloading_holder_finalize; +} + +void presets_autoloading_holder_init(PresetsAutoloadingHolder* self) { + self->data = new PresetsAutoLoadingData(); +} + +auto create(const std::string& device, + const std::string& device_description, + const std::string& device_profile, + const std::string& preset_name) -> PresetsAutoloadingHolder* { + auto* holder = static_cast(g_object_new(EE_TYPE_PRESETS_AUTOLOADING_HOLDER, nullptr)); + + holder->data->device = device; + holder->data->device_description = device_description; + holder->data->device_profile = device_profile; + holder->data->preset_name = preset_name; + + return holder; +} + +} // namespace ui::holders \ No newline at end of file diff --git a/src/presets_manager.cpp b/src/presets_manager.cpp new file mode 100644 index 0000000..614ffcc --- /dev/null +++ b/src/presets_manager.cpp @@ -0,0 +1,903 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "presets_manager.hpp" + +PresetsManager::PresetsManager() + : user_config_dir(g_get_user_config_dir()), + user_presets_dir(user_config_dir + "/easyeffects/"), + user_input_dir(user_config_dir + "/easyeffects/input"), + user_output_dir(user_config_dir + "/easyeffects/output"), + autoload_input_dir(user_config_dir + "/easyeffects/autoload/input"), + autoload_output_dir(user_config_dir + "/easyeffects/autoload/output"), + settings(g_settings_new(tags::app::id)), + soe_settings(g_settings_new(tags::schema::id_output)), + sie_settings(g_settings_new(tags::schema::id_input)) { + // system presets directories provided by Glib + + for (auto scd = g_get_system_config_dirs(); *scd != nullptr; scd++) { + system_input_dir.emplace_back(std::string(*scd) + + "/easyeffects/input"); // it should be fine to use emplace_back in these cases + system_output_dir.emplace_back(std::string(*scd) + "/easyeffects/output"); + } + + // add "/etc" to system config folders array and remove duplicates + system_input_dir.emplace_back("/etc/easyeffects/input"); + system_output_dir.emplace_back("/etc/easyeffects/output"); + std::sort(system_input_dir.begin(), system_input_dir.end()); + std::sort(system_output_dir.begin(), system_output_dir.end()); + system_input_dir.erase(std::unique(system_input_dir.begin(), system_input_dir.end()), system_input_dir.end()); + system_output_dir.erase(std::unique(system_output_dir.begin(), system_output_dir.end()), system_output_dir.end()); + + for (const auto& scd : system_input_dir) { + util::debug("system input presets directory: \"" + scd.string() + "\"; "); + } + for (const auto& scd : system_output_dir) { + util::debug("system output presets directory: \"" + scd.string() + "\"; "); + } + + // user presets directories + + create_user_directory(user_presets_dir); + create_user_directory(user_input_dir); + create_user_directory(user_output_dir); + create_user_directory(autoload_input_dir); + create_user_directory(autoload_output_dir); + + auto* gfile = g_file_new_for_path(user_output_dir.c_str()); + + user_output_monitor = g_file_monitor_directory(gfile, G_FILE_MONITOR_NONE, nullptr, nullptr); + + g_signal_connect(user_output_monitor, "changed", + G_CALLBACK(+[](GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonitorEvent event_type, + gpointer user_data) { + auto self = static_cast(user_data); + + switch (event_type) { + case G_FILE_MONITOR_EVENT_CREATED: { + const auto preset_name = util::remove_filename_extension(g_file_get_basename(file)); + + self->user_output_preset_created.emit(preset_name); + + break; + } + case G_FILE_MONITOR_EVENT_DELETED: { + const auto preset_name = util::remove_filename_extension(g_file_get_basename(file)); + + self->user_output_preset_removed.emit(preset_name); + + break; + } + default: + break; + } + }), + this); + + g_object_unref(gfile); + + gfile = g_file_new_for_path(user_input_dir.c_str()); + + user_input_monitor = g_file_monitor_directory(gfile, G_FILE_MONITOR_NONE, nullptr, nullptr); + + g_signal_connect(user_input_monitor, "changed", + G_CALLBACK(+[](GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonitorEvent event_type, + gpointer user_data) { + auto self = static_cast(user_data); + + switch (event_type) { + case G_FILE_MONITOR_EVENT_CREATED: { + const auto preset_name = util::remove_filename_extension(g_file_get_basename(file)); + + self->user_input_preset_created.emit(preset_name); + + break; + } + case G_FILE_MONITOR_EVENT_DELETED: { + const auto preset_name = util::remove_filename_extension(g_file_get_basename(file)); + + self->user_input_preset_removed.emit(preset_name); + + break; + } + default: + break; + } + }), + this); + + g_object_unref(gfile); + + gfile = g_file_new_for_path(autoload_input_dir.c_str()); + + autoload_input_monitor = g_file_monitor_directory(gfile, G_FILE_MONITOR_NONE, nullptr, nullptr); + + g_signal_connect(autoload_input_monitor, "changed", + G_CALLBACK(+[](GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonitorEvent event_type, + gpointer user_data) { + auto self = static_cast(user_data); + + if (event_type == G_FILE_MONITOR_EVENT_CREATED || event_type == G_FILE_MONITOR_EVENT_DELETED) { + const auto profiles = self->get_autoload_profiles(PresetType::input); + + self->autoload_input_profiles_changed.emit(profiles); + } + }), + this); + + g_object_unref(gfile); + + gfile = g_file_new_for_path(autoload_output_dir.c_str()); + + autoload_output_monitor = g_file_monitor_directory(gfile, G_FILE_MONITOR_NONE, nullptr, nullptr); + + g_signal_connect(autoload_output_monitor, "changed", + G_CALLBACK(+[](GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonitorEvent event_type, + gpointer user_data) { + auto self = static_cast(user_data); + + if (event_type == G_FILE_MONITOR_EVENT_CREATED || event_type == G_FILE_MONITOR_EVENT_DELETED) { + const auto profiles = self->get_autoload_profiles(PresetType::output); + + self->autoload_output_profiles_changed.emit(profiles); + } + }), + this); + + g_object_unref(gfile); +} + +PresetsManager::~PresetsManager() { + g_file_monitor_cancel(user_output_monitor); + g_file_monitor_cancel(user_input_monitor); + g_file_monitor_cancel(autoload_input_monitor); + g_file_monitor_cancel(autoload_output_monitor); + + g_object_unref(user_output_monitor); + g_object_unref(user_input_monitor); + g_object_unref(autoload_input_monitor); + g_object_unref(autoload_output_monitor); + g_object_unref(settings); + g_object_unref(sie_settings); + g_object_unref(soe_settings); + + util::debug("destroyed"); +} + +void PresetsManager::create_user_directory(const std::filesystem::path& path) { + if (!std::filesystem::is_directory(path)) { + if (std::filesystem::create_directories(path)) { + util::debug("user presets directory created: " + path.string()); + } else { + util::warning("failed to create user presets directory: " + path.string()); + } + + } else { + util::debug("user presets directory already exists: " + path.string()); + } +} + +auto PresetsManager::get_names(const PresetType& preset_type) -> std::vector { + std::filesystem::directory_iterator it; + std::vector names; + + // system directories search + std::vector sys_dirs; + + switch (preset_type) { + case PresetType::output: + sys_dirs.insert(sys_dirs.end(), system_output_dir.begin(), system_output_dir.end()); + break; + case PresetType::input: + sys_dirs.insert(sys_dirs.end(), system_input_dir.begin(), system_input_dir.end()); + break; + } + + for (const auto& dir : sys_dirs) { + if (std::filesystem::exists(dir)) { + it = std::filesystem::directory_iterator{dir}; + + const auto vn = search_names(it); + names.insert(names.end(), vn.begin(), vn.end()); + } + } + + // user directory search + const auto user_dir = (preset_type == PresetType::output) ? user_output_dir : user_input_dir; + it = std::filesystem::directory_iterator{user_dir}; + + const auto vn = search_names(it); + names.insert(names.end(), vn.begin(), vn.end()); + + // removing duplicates + std::sort(names.begin(), names.end()); + names.erase(std::unique(names.begin(), names.end()), names.end()); + + return names; +} + +auto PresetsManager::search_names(std::filesystem::directory_iterator& it) -> std::vector { + std::vector names; + + try { + while (it != std::filesystem::directory_iterator{}) { + if (std::filesystem::is_regular_file(it->status())) { + if (it->path().extension().c_str() == json_ext) { + names.push_back(it->path().stem().c_str()); + } + } + + ++it; + } + } catch (const std::exception& e) { + util::warning(e.what()); + } + + return names; +} + +void PresetsManager::add(const PresetType& preset_type, const std::string& name) { + for (const auto& p : get_names(preset_type)) { + if (p == name) { + return; + } + } + + save_preset_file(preset_type, name); +} + +void PresetsManager::save_blocklist(const PresetType& preset_type, nlohmann::json& json) { + std::vector blocklist; + + switch (preset_type) { + case PresetType::output: { + const auto list = util::gchar_array_to_vector(g_settings_get_strv(soe_settings, "blocklist")); + + for (const auto& l : list) { + blocklist.push_back(l); + } + + json["output"]["blocklist"] = blocklist; + + break; + } + case PresetType::input: { + const auto list = util::gchar_array_to_vector(g_settings_get_strv(sie_settings, "blocklist")); + + for (const auto& l : list) { + blocklist.push_back(l); + } + + json["input"]["blocklist"] = blocklist; + + break; + } + } +} + +auto PresetsManager::load_blocklist(const PresetType& preset_type, const nlohmann::json& json) -> bool { + std::vector blocklist; + + switch (preset_type) { + case PresetType::input: { + try { + auto list = json.at("input").at("blocklist").get>(); + + g_settings_set_strv(sie_settings, "blocklist", util::make_gchar_pointer_vector(list).data()); + } catch (const nlohmann::json::exception& e) { + g_settings_reset(sie_settings, "blocklist"); + + notify_error(PresetError::blocklist_format); + + util::warning(e.what()); + + return false; + } catch (...) { + g_settings_reset(sie_settings, "blocklist"); + + notify_error(PresetError::blocklist_generic); + + return false; + } + + break; + } + case PresetType::output: { + try { + auto list = json.at("output").at("blocklist").get>(); + + g_settings_set_strv(soe_settings, "blocklist", util::make_gchar_pointer_vector(list).data()); + } catch (const nlohmann::json::exception& e) { + g_settings_reset(soe_settings, "blocklist"); + + notify_error(PresetError::blocklist_format); + + util::warning(e.what()); + + return false; + } catch (...) { + g_settings_reset(soe_settings, "blocklist"); + + notify_error(PresetError::blocklist_generic); + + return false; + } + + break; + } + } + + return true; +} + +void PresetsManager::save_preset_file(const PresetType& preset_type, const std::string& name) { + nlohmann::json json; + + std::filesystem::path output_file; + + save_blocklist(preset_type, json); + + switch (preset_type) { + case PresetType::output: { + const auto plugins = util::gchar_array_to_vector(g_settings_get_strv(soe_settings, "plugins")); + + std::vector list; + + list.reserve(plugins.size()); + + for (const auto& p : plugins) { + list.push_back(p); + } + + json["output"]["plugins_order"] = list; + + write_plugins_preset(preset_type, plugins, json); + + output_file = user_output_dir / std::filesystem::path{name.c_str() + json_ext}; + + break; + } + case PresetType::input: { + const auto plugins = util::gchar_array_to_vector(g_settings_get_strv(sie_settings, "plugins")); + + std::vector list; + + list.reserve(plugins.size()); + + for (const auto& p : plugins) { + list.push_back(p); + } + + json["input"]["plugins_order"] = list; + + write_plugins_preset(preset_type, plugins, json); + + output_file = user_input_dir / std::filesystem::path{name.c_str() + json_ext}; + + break; + } + } + + std::ofstream o(output_file.c_str()); + + o << std::setw(4) << json << std::endl; + + // std::cout << std::setw(4) << json << std::endl; + + util::debug("saved preset: " + output_file.string()); +} + +void PresetsManager::write_plugins_preset(const PresetType& preset_type, + const std::vector& plugins, + nlohmann::json& json) { + for (const auto& name : plugins) { + if (auto wrapper = create_wrapper(name); wrapper != std::nullopt) { + wrapper.value()->write(preset_type, json); + } + } +} + +void PresetsManager::remove(const PresetType& preset_type, const std::string& name) { + std::filesystem::path preset_file; + + const auto user_dir = (preset_type == PresetType::output) ? user_output_dir : user_input_dir; + + preset_file = user_dir / std::filesystem::path{name.c_str() + json_ext}; + + if (std::filesystem::exists(preset_file)) { + std::filesystem::remove(preset_file); + + util::debug("removed preset: " + preset_file.string()); + } +} + +auto PresetsManager::load_preset_file(const PresetType& preset_type, const std::string& name) -> bool { + nlohmann::json json; + + std::vector plugins; + + std::vector conf_dirs; + + std::filesystem::path input_file; + + auto preset_found = false; + + switch (preset_type) { + case PresetType::output: { + conf_dirs.push_back(user_output_dir); + + conf_dirs.insert(conf_dirs.end(), system_output_dir.begin(), system_output_dir.end()); + + for (const auto& dir : conf_dirs) { + input_file = dir / std::filesystem::path{name + json_ext}; + + if (std::filesystem::exists(input_file)) { + preset_found = true; + + break; + } + } + + if (preset_found) { + try { + std::ifstream is(input_file); + + is >> json; + + for (const auto& p : json.at("output").at("plugins_order").get>()) { + for (const auto& v : tags::plugin_name::list) { + if (v == p) { + plugins.push_back(p); + + break; + } + } + } + + } catch (const nlohmann::json::exception& e) { + notify_error(PresetError::pipeline_format); + + util::warning(e.what()); + + return false; + } catch (...) { + notify_error(PresetError::pipeline_generic); + + return false; + } + + g_settings_set_strv(soe_settings, "plugins", util::make_gchar_pointer_vector(plugins).data()); + } else { + util::debug("can't find the preset " + name + " on the filesystem"); + + return false; + } + + break; + } + case PresetType::input: { + conf_dirs.push_back(user_input_dir); + + conf_dirs.insert(conf_dirs.end(), system_input_dir.begin(), system_input_dir.end()); + + for (const auto& dir : conf_dirs) { + input_file = dir / std::filesystem::path{name + json_ext}; + + if (std::filesystem::exists(input_file)) { + preset_found = true; + + break; + } + } + + if (preset_found) { + try { + std::ifstream is(input_file); + + is >> json; + + for (const auto& p : json.at("input").at("plugins_order").get>()) { + for (const auto& v : tags::plugin_name::list) { + if (v == p) { + plugins.push_back(p); + + break; + } + } + } + + } catch (const nlohmann::json::exception& e) { + notify_error(PresetError::pipeline_format); + + util::warning(e.what()); + + return false; + } catch (...) { + notify_error(PresetError::pipeline_generic); + + return false; + } + + g_settings_set_strv(sie_settings, "plugins", util::make_gchar_pointer_vector(plugins).data()); + } else { + util::debug("can't find the preset " + name + " on the filesystem"); + + return false; + } + + break; + } + } + + if (load_blocklist(preset_type, json) && read_plugins_preset(preset_type, plugins, json)) { + util::debug("successfully loaded preset: " + input_file.string()); + + return true; + } + + return false; +} + +auto PresetsManager::read_plugins_preset(const PresetType& preset_type, + const std::vector& plugins, + const nlohmann::json& json) -> bool { + for (const auto& name : plugins) { + if (auto wrapper = create_wrapper(name); wrapper != std::nullopt) { + try { + wrapper.value()->read(preset_type, json); + } catch (const nlohmann::json::exception& e) { + notify_error(PresetError::plugin_format, name); + + util::warning(e.what()); + + return false; + } catch (...) { + notify_error(PresetError::plugin_generic, name); + + return false; + } + } + } + + return true; +} + +void PresetsManager::import(const PresetType& preset_type, const std::string& file_path) { + std::filesystem::path p{file_path}; + + if (std::filesystem::is_regular_file(p)) { + if (p.extension().c_str() == json_ext) { + std::filesystem::path out_path; + + const auto user_dir = (preset_type == PresetType::output) ? user_output_dir : user_input_dir; + + out_path = user_dir / p.filename(); + + std::filesystem::copy_file(p, out_path, std::filesystem::copy_options::overwrite_existing); + + util::debug("imported preset to: " + out_path.string()); + } + } else { + util::warning(p.string() + " is not a file!"); + } +} + +void PresetsManager::add_autoload(const PresetType& preset_type, + const std::string& preset_name, + const std::string& device_name, + const std::string& device_description, + const std::string& device_profile) { + nlohmann::json json; + + std::filesystem::path output_file; + + switch (preset_type) { + case PresetType::output: + output_file = autoload_output_dir / std::filesystem::path{device_name + ":" + device_profile + json_ext}; + break; + case PresetType::input: + output_file = autoload_input_dir / std::filesystem::path{device_name + ":" + device_profile + json_ext}; + break; + } + + std::ofstream o(output_file.c_str()); + + json["device"] = device_name; + json["device-description"] = device_description; + json["device-profile"] = device_profile; + json["preset-name"] = preset_name; + + o << std::setw(4) << json << std::endl; + + util::debug("added autoload preset file: " + output_file.string()); +} + +void PresetsManager::remove_autoload(const PresetType& preset_type, + const std::string& preset_name, + const std::string& device_name, + const std::string& device_profile) { + std::filesystem::path input_file; + + switch (preset_type) { + case PresetType::output: + input_file = autoload_output_dir / std::filesystem::path{device_name + ":" + device_profile + json_ext}; + break; + case PresetType::input: + input_file = autoload_input_dir / std::filesystem::path{device_name + ":" + device_profile + json_ext}; + break; + } + + if (std::filesystem::is_regular_file(input_file)) { + nlohmann::json json; + + std::ifstream is(input_file); + + is >> json; + + if (preset_name == json.value("preset-name", "") && device_profile == json.value("device-profile", "")) { + std::filesystem::remove(input_file); + + util::debug("removed autoload: " + input_file.string()); + } + } +} + +auto PresetsManager::find_autoload(const PresetType& preset_type, + const std::string& device_name, + const std::string& device_profile) -> std::string { + std::filesystem::path input_file; + + switch (preset_type) { + case PresetType::output: + input_file = autoload_output_dir / std::filesystem::path{device_name + ":" + device_profile + json_ext}; + break; + case PresetType::input: + input_file = autoload_input_dir / std::filesystem::path{device_name + ":" + device_profile + json_ext}; + break; + } + + if (std::filesystem::is_regular_file(input_file)) { + nlohmann::json json; + + std::ifstream is(input_file); + + is >> json; + + return json.value("preset-name", ""); + } + + return ""; +} + +void PresetsManager::autoload(const PresetType& preset_type, + const std::string& device_name, + const std::string& device_profile) { + const auto name = find_autoload(preset_type, device_name, device_profile); + + if (!name.empty()) { + util::debug("autoloading preset " + name + " for device " + device_name); + + auto key = (preset_type == PresetType::output) ? "last-used-output-preset" : "last-used-input-preset"; + + if (load_preset_file(preset_type, name)) { + g_settings_set_string(settings, key, name.c_str()); + } else { + g_settings_reset(settings, key); + } + } +} + +auto PresetsManager::get_autoload_profiles(const PresetType& preset_type) -> std::vector { + std::filesystem::path autoload_dir; + std::vector list; + + switch (preset_type) { + case PresetType::output: + autoload_dir = autoload_output_dir; + + break; + case PresetType::input: + autoload_dir = autoload_input_dir; + break; + } + + auto it = std::filesystem::directory_iterator{autoload_dir}; + + try { + while (it != std::filesystem::directory_iterator{}) { + if (std::filesystem::is_regular_file(it->status())) { + if (it->path().extension().c_str() == json_ext) { + nlohmann::json json; + + std::ifstream is(autoload_dir / it->path()); + + is >> json; + + list.push_back(json); + } + } + + ++it; + } + + return list; + } catch (const std::exception& e) { + util::warning(e.what()); + + return list; + } +} + +auto PresetsManager::preset_file_exists(const PresetType& preset_type, const std::string& name) -> bool { + std::filesystem::path input_file; + std::vector conf_dirs; + + switch (preset_type) { + case PresetType::output: { + conf_dirs.push_back(user_output_dir); + + conf_dirs.insert(conf_dirs.end(), system_output_dir.begin(), system_output_dir.end()); + + for (const auto& dir : conf_dirs) { + input_file = dir / std::filesystem::path{name.c_str() + json_ext}; + + if (std::filesystem::exists(input_file)) { + return true; + } + } + + break; + } + case PresetType::input: { + conf_dirs.push_back(user_input_dir); + + conf_dirs.insert(conf_dirs.end(), system_input_dir.begin(), system_input_dir.end()); + + for (const auto& dir : conf_dirs) { + input_file = dir / std::filesystem::path{name.c_str() + json_ext}; + + if (std::filesystem::exists(input_file)) { + return true; + } + } + + break; + } + } + + return false; +} + +void PresetsManager::notify_error(const PresetError& preset_error, const std::string& plugin_name) { + std::string plugin_translated; + + try { + plugin_translated = tags::plugin_name::get_translated().at(plugin_name); + } catch (...) { + } + + switch (preset_error) { + case PresetError::blocklist_format: { + util::warning( + "A parsing error occurred while trying to load the blocklist from the preset. The file could be invalid " + "or corrupted. Please check its content."); + + preset_load_error.emit(_("Preset Not Loaded Correctly"), _("Wrong Format in Excluded Apps List")); + + break; + } + case PresetError::blocklist_generic: { + util::warning("A generic error occurred while trying to load the blocklist from the preset."); + + preset_load_error.emit(_("Preset Not Loaded Correctly"), _("Generic Error While Loading Excluded Apps List")); + + break; + } + case PresetError::pipeline_format: { + util::warning( + "A parsing error occurred while trying to load the pipeline from the preset. The file could be invalid " + "or corrupted. Please check its content."); + + preset_load_error.emit(_("Preset Not Loaded Correctly"), _("Wrong Format in Effects List")); + + break; + } + case PresetError::pipeline_generic: { + util::warning("A generic error occurred while trying to load the pipeline from the preset."); + + preset_load_error.emit(_("Preset Not Loaded Correctly"), _("Generic Error While Loading Effects List")); + + break; + } + case PresetError::plugin_format: { + util::warning("A parsing error occurred while trying to load the " + plugin_name + + " plugin from the preset. The file could be invalid or " + "corrupted. Please check its content."); + + preset_load_error.emit(_("Preset Not Loaded Correctly"), + plugin_translated + ": " + _("One or More Parameters Have a Wrong Format")); + + break; + } + case PresetError::plugin_generic: { + util::warning("A generic error occurred while trying to load the " + plugin_name + " plugin from the preset."); + + preset_load_error.emit(_("Preset Not Loaded Correctly"), + plugin_translated + ": " + _("Generic Error While Loading The Effect")); + + break; + } + default: + break; + } +} + +auto PresetsManager::create_wrapper(std::string_view filter_name) -> std::optional> { + if (filter_name.rfind(tags::plugin_name::autogain, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::bass_enhancer, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::bass_loudness, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::compressor, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::convolver, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::crossfeed, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::crystalizer, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::deesser, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::delay, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::echo_canceller, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::equalizer, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::exciter, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::filter, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::gate, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::limiter, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::loudness, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::maximizer, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::multiband_compressor, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::multiband_gate, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::pitch, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::reverb, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::rnnoise, 0) == 0) { + return std::make_unique(); + } else if (filter_name.rfind(tags::plugin_name::stereo_tools, 0) == 0) { + return std::make_unique(); + } + + util::warning("The filter name " + std::string(filter_name) + " base name could not be recognized"); + + return std::nullopt; +} \ No newline at end of file diff --git a/src/presets_menu.cpp b/src/presets_menu.cpp new file mode 100644 index 0000000..0e2b97f --- /dev/null +++ b/src/presets_menu.cpp @@ -0,0 +1,470 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "presets_menu.hpp" + +namespace ui::presets_menu { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + app::Application* application; + + std::vector connections; + + std::vector gconnections; +}; + +struct _PresetsMenu { + GtkPopover parent_instance; + + AdwViewStack* stack; + + GtkScrolledWindow *output_scrolled_window, *input_scrolled_window; + + GtkListView *output_listview, *input_listview; + + GtkText *output_name, *input_name; + + GtkLabel *last_used_output, *last_used_input; + + GtkStringList *output_string_list, *input_string_list; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(PresetsMenu, presets_menu, GTK_TYPE_POPOVER) + +template +void create_preset(PresetsMenu* self, GtkButton* button) { + GtkText* preset_name_box = nullptr; + + if constexpr (preset_type == PresetType::output) { + preset_name_box = self->output_name; + } else if constexpr (preset_type == PresetType::input) { + preset_name_box = self->input_name; + } + + auto name = std::string(g_utf8_make_valid(gtk_editable_get_text(GTK_EDITABLE(preset_name_box)), -1)); + + if (name.empty()) { + return; + } + + gtk_editable_set_text(GTK_EDITABLE(preset_name_box), ""); + + // Truncate if longer than 100 characters + + if (name.length() > 100U) { + name.resize(100U); + } + + if (name.find_first_of("\\/") != std::string::npos) { + util::debug(" name " + name + " has illegal file name characters. Aborting preset creation!"); + + return; + } + + self->data->application->presets_manager->add(preset_type, name); +} + +void create_output_preset(PresetsMenu* self, GtkButton* button) { + create_preset(self, button); +} + +void create_input_preset(PresetsMenu* self, GtkButton* button) { + create_preset(self, button); +} + +template +void import_preset(PresetsMenu* self) { + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->data->application)); + + auto* dialog = gtk_file_chooser_native_new(_("Import Preset"), active_window, GTK_FILE_CHOOSER_ACTION_OPEN, _("Open"), + _("Cancel")); + + auto* filter = gtk_file_filter_new(); + + gtk_file_filter_add_pattern(filter, "*.json"); + gtk_file_filter_set_name(filter, _("Presets")); + + gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); + + g_signal_connect(dialog, "response", G_CALLBACK(+[](GtkNativeDialog* dialog, int response, PresetsMenu* self) { + if (response == GTK_RESPONSE_ACCEPT) { + auto* chooser = GTK_FILE_CHOOSER(dialog); + auto* file = gtk_file_chooser_get_file(chooser); + auto* path = g_file_get_path(file); + + if constexpr (preset_type == PresetType::output) { + self->data->application->presets_manager->import(PresetType::output, path); + } else if constexpr (preset_type == PresetType::input) { + self->data->application->presets_manager->import(PresetType::input, path); + } + + g_free(path); + + g_object_unref(file); + } + + g_object_unref(dialog); + }), + self); + + gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(dialog), 1); + gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog)); +} + +void import_output_preset(PresetsMenu* self, GtkButton* button) { + import_preset(self); +} + +void import_input_preset(PresetsMenu* self, GtkButton* button) { + import_preset(self); +} + +template +void setup_listview(PresetsMenu* self, GtkListView* listview, GtkStringList* string_list) { + auto* factory = gtk_signal_list_item_factory_new(); + + // setting the factory callbacks + + g_signal_connect( + factory, "setup", G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PresetsMenu* self) { + auto builder = gtk_builder_new_from_resource(tags::resources::preset_row_ui); + + auto* top_box = gtk_builder_get_object(builder, "top_box"); + auto* apply = gtk_builder_get_object(builder, "apply"); + auto* save = gtk_builder_get_object(builder, "save"); + auto* remove = gtk_builder_get_object(builder, "remove"); + + g_object_set_data(G_OBJECT(item), "name", gtk_builder_get_object(builder, "name")); + g_object_set_data(G_OBJECT(item), "apply", apply); + g_object_set_data(G_OBJECT(item), "save", save); + g_object_set_data(G_OBJECT(item), "remove", remove); + + gtk_list_item_set_activatable(item, 0); + gtk_list_item_set_child(item, GTK_WIDGET(top_box)); + + g_signal_connect( + apply, "clicked", G_CALLBACK(+[](GtkButton* button, PresetsMenu* self) { + if (auto* string_object = GTK_STRING_OBJECT(g_object_get_data(G_OBJECT(button), "string-object")); + string_object != nullptr) { + auto* preset_name = gtk_string_object_get_string(string_object); + + if constexpr (preset_type == PresetType::output) { + if (self->data->application->presets_manager->load_preset_file(PresetType::output, preset_name)) { + g_settings_set_string(self->settings, "last-used-output-preset", preset_name); + } else { + g_settings_reset(self->settings, "last-used-output-preset"); + } + } else if constexpr (preset_type == PresetType::input) { + if (self->data->application->presets_manager->load_preset_file(PresetType::input, preset_name)) { + g_settings_set_string(self->settings, "last-used-input-preset", preset_name); + } else { + g_settings_reset(self->settings, "last-used-input-preset"); + } + } + } + }), + self); + + g_signal_connect( + save, "clicked", G_CALLBACK(+[](GtkButton* button, PresetsMenu* self) { + if (auto* string_object = GTK_STRING_OBJECT(g_object_get_data(G_OBJECT(button), "string-object")); + string_object != nullptr) { + auto* preset_name = gtk_string_object_get_string(string_object); + + if constexpr (preset_type == PresetType::output) { + self->data->application->presets_manager->save_preset_file(PresetType::output, preset_name); + } else if constexpr (preset_type == PresetType::input) { + self->data->application->presets_manager->save_preset_file(PresetType::input, preset_name); + } + } + }), + self); + + g_signal_connect( + remove, "clicked", G_CALLBACK(+[](GtkButton* button, PresetsMenu* self) { + if (auto* string_object = GTK_STRING_OBJECT(g_object_get_data(G_OBJECT(button), "string-object")); + string_object != nullptr) { + auto* preset_name = gtk_string_object_get_string(string_object); + + if constexpr (preset_type == PresetType::output) { + self->data->application->presets_manager->remove(PresetType::output, preset_name); + } else if constexpr (preset_type == PresetType::input) { + self->data->application->presets_manager->remove(PresetType::input, preset_name); + } + } + }), + self); + + g_object_unref(builder); + }), + self); + + g_signal_connect(factory, "bind", + G_CALLBACK(+[](GtkSignalListItemFactory* factory, GtkListItem* item, PresetsMenu* self) { + auto* label = static_cast(g_object_get_data(G_OBJECT(item), "name")); + auto* apply = static_cast(g_object_get_data(G_OBJECT(item), "apply")); + auto* save = static_cast(g_object_get_data(G_OBJECT(item), "save")); + auto* remove = static_cast(g_object_get_data(G_OBJECT(item), "remove")); + + auto* string_object = GTK_STRING_OBJECT(gtk_list_item_get_item(item)); + + g_object_set_data(G_OBJECT(apply), "string-object", string_object); + g_object_set_data(G_OBJECT(save), "string-object", string_object); + g_object_set_data(G_OBJECT(remove), "string-object", string_object); + + auto* name = gtk_string_object_get_string(string_object); + + gtk_label_set_text(label, name); + }), + self); + + gtk_list_view_set_factory(listview, factory); + + g_object_unref(factory); + + for (const auto& name : self->data->application->presets_manager->get_names(preset_type)) { + gtk_string_list_append(string_list, name.c_str()); + } +} + +void reset_menu_button_label(PresetsMenu* self) { + const auto names_input = self->data->application->presets_manager->get_names(PresetType::input); + const auto names_output = self->data->application->presets_manager->get_names(PresetType::output); + + if (names_input.empty() && names_output.empty()) { + g_settings_set_string(self->settings, "last-used-output-preset", _("Presets")); + g_settings_set_string(self->settings, "last-used-input-preset", _("Presets")); + + return; + } + + for (const auto& name : names_input) { + if (name == util::gsettings_get_string(self->settings, "last-used-input-preset")) { + return; + } + } + + for (const auto& name : names_output) { + if (name == util::gsettings_get_string(self->settings, "last-used-output-preset")) { + return; + } + } + + g_settings_set_string(self->settings, "last-used-output-preset", _("Presets")); + g_settings_set_string(self->settings, "last-used-input-preset", _("Presets")); +} + +void setup(PresetsMenu* self, app::Application* application) { + self->data->application = application; + + setup_listview(self, self->output_listview, self->output_string_list); + setup_listview(self, self->input_listview, self->input_string_list); + + reset_menu_button_label(self); + + self->data->connections.push_back( + self->data->application->presets_manager->user_output_preset_created.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"); + + return; + } + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_string_list)); n++) { + if (preset_name == gtk_string_list_get_string(self->output_string_list, n)) { + return; + } + } + + gtk_string_list_append(self->output_string_list, preset_name.c_str()); + })); + + self->data->connections.push_back( + self->data->application->presets_manager->user_output_preset_removed.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"); + + return; + } + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->output_string_list)); n++) { + if (preset_name == gtk_string_list_get_string(self->output_string_list, n)) { + gtk_string_list_remove(self->output_string_list, n); + + return; + } + } + })); + + self->data->connections.push_back( + self->data->application->presets_manager->user_input_preset_created.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"); + + return; + } + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_string_list)); n++) { + if (preset_name == gtk_string_list_get_string(self->input_string_list, n)) { + return; + } + } + + gtk_string_list_append(self->input_string_list, preset_name.c_str()); + })); + + self->data->connections.push_back( + self->data->application->presets_manager->user_input_preset_removed.connect([=](const std::string& preset_name) { + if (preset_name.empty()) { + util::warning("can't retrieve information about the preset file"); + + return; + } + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->input_string_list)); n++) { + if (preset_name == gtk_string_list_get_string(self->input_string_list, n)) { + gtk_string_list_remove(self->input_string_list, n); + + return; + } + } + })); +} + +void show(GtkWidget* widget) { + auto* self = EE_PRESETS_MENU(widget); + + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->data->application)); + + auto active_window_height = gtk_widget_get_allocated_height(GTK_WIDGET(active_window)); + + const int menu_height = static_cast(0.5F * static_cast(active_window_height)); + + gtk_scrolled_window_set_max_content_height(self->output_scrolled_window, menu_height); + gtk_scrolled_window_set_max_content_height(self->input_scrolled_window, menu_height); + + GTK_WIDGET_CLASS(presets_menu_parent_class)->show(widget); +} + +void dispose(GObject* object) { + auto* self = EE_PRESETS_MENU(object); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(presets_menu_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_PRESETS_MENU(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(presets_menu_parent_class)->finalize(object); +} + +void presets_menu_class_init(PresetsMenuClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + widget_class->show = show; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::presets_menu_ui); + + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, output_string_list); + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, input_string_list); + + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, stack); + + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, output_scrolled_window); + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, output_listview); + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, output_name); + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, last_used_output); + + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, input_scrolled_window); + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, input_listview); + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, input_name); + gtk_widget_class_bind_template_child(widget_class, PresetsMenu, last_used_input); + + gtk_widget_class_bind_template_callback(widget_class, create_output_preset); + gtk_widget_class_bind_template_callback(widget_class, create_input_preset); + gtk_widget_class_bind_template_callback(widget_class, import_output_preset); + gtk_widget_class_bind_template_callback(widget_class, import_input_preset); +} + +void presets_menu_init(PresetsMenu* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + self->settings = g_settings_new(tags::app::id); + + gtk_label_set_text(self->last_used_output, + util::gsettings_get_string(self->settings, "last-used-output-preset").c_str()); + gtk_label_set_text(self->last_used_input, + util::gsettings_get_string(self->settings, "last-used-input-preset").c_str()); + + self->data->gconnections.push_back( + g_signal_connect(self->settings, "changed::last-used-output-preset", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + gtk_label_set_text(self->last_used_output, util::gsettings_get_string(settings, key).c_str()); + }), + self)); + + self->data->gconnections.push_back( + g_signal_connect(self->settings, "changed::last-used-input-preset", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + gtk_label_set_text(self->last_used_input, util::gsettings_get_string(settings, key).c_str()); + }), + self)); +} + +auto create() -> PresetsMenu* { + return static_cast(g_object_new(EE_TYPE_PRESETS_MENU, nullptr)); +} + +} // namespace ui::presets_menu diff --git a/src/resampler.cpp b/src/resampler.cpp new file mode 100644 index 0000000..243febd --- /dev/null +++ b/src/resampler.cpp @@ -0,0 +1,32 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "resampler.hpp" + +Resampler::Resampler(const int& input_rate, const int& output_rate) : output(1, 0) { + resample_ratio = static_cast(output_rate) / static_cast(input_rate); + + src_state = src_new(SRC_SINC_FASTEST, 1, nullptr); +} + +Resampler::~Resampler() { + if (src_state != nullptr) { + src_delete(src_state); + } +} diff --git a/src/reverb.cpp b/src/reverb.cpp new file mode 100644 index 0000000..debda56 --- /dev/null +++ b/src/reverb.cpp @@ -0,0 +1,110 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "reverb.hpp" + +Reverb::Reverb(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::reverb, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://calf.sourceforge.net/plugins/Reverb")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://calf.sourceforge.net/plugins/Reverb is not installed"); + } + + lv2_wrapper->bind_key_double<"decay_time", "decay-time">(settings); + + lv2_wrapper->bind_key_double<"hf_damp", "hf-damp">(settings); + + lv2_wrapper->bind_key_double<"diffusion", "diffusion">(settings); + + lv2_wrapper->bind_key_double<"predelay", "predelay">(settings); + + lv2_wrapper->bind_key_double<"bass_cut", "bass-cut">(settings); + + lv2_wrapper->bind_key_double<"treble_cut", "treble-cut">(settings); + + lv2_wrapper->bind_key_double_db<"amount", "amount">(settings); + + lv2_wrapper->bind_key_double_db<"dry", "dry">(settings); + + lv2_wrapper->bind_key_enum<"room_size", "room-size">(settings); + + setup_input_output_gain(); +} + +Reverb::~Reverb() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void Reverb::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void Reverb::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto Reverb::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/reverb_preset.cpp b/src/reverb_preset.cpp new file mode 100644 index 0000000..1c7bb06 --- /dev/null +++ b/src/reverb_preset.cpp @@ -0,0 +1,78 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "reverb_preset.hpp" + +ReverbPreset::ReverbPreset() { + input_settings = g_settings_new_with_path(tags::schema::reverb::id, tags::schema::reverb::input_path); + + output_settings = g_settings_new_with_path(tags::schema::reverb::id, tags::schema::reverb::output_path); +} + +void ReverbPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["reverb"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["reverb"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["reverb"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["reverb"]["room-size"] = util::gsettings_get_string(settings, "room-size"); + + json[section]["reverb"]["decay-time"] = g_settings_get_double(settings, "decay-time"); + + json[section]["reverb"]["hf-damp"] = g_settings_get_double(settings, "hf-damp"); + + json[section]["reverb"]["diffusion"] = g_settings_get_double(settings, "diffusion"); + + json[section]["reverb"]["amount"] = g_settings_get_double(settings, "amount"); + + json[section]["reverb"]["dry"] = g_settings_get_double(settings, "dry"); + + json[section]["reverb"]["predelay"] = g_settings_get_double(settings, "predelay"); + + json[section]["reverb"]["bass-cut"] = g_settings_get_double(settings, "bass-cut"); + + json[section]["reverb"]["treble-cut"] = g_settings_get_double(settings, "treble-cut"); +} + +void ReverbPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("reverb"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("reverb"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("reverb"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("reverb"), settings, "room-size", "room-size"); + + update_key(json.at(section).at("reverb"), settings, "decay-time", "decay-time"); + + update_key(json.at(section).at("reverb"), settings, "hf-damp", "hf-damp"); + + update_key(json.at(section).at("reverb"), settings, "diffusion", "diffusion"); + + update_key(json.at(section).at("reverb"), settings, "amount", "amount"); + + update_key(json.at(section).at("reverb"), settings, "dry", "dry"); + + update_key(json.at(section).at("reverb"), settings, "predelay", "predelay"); + + update_key(json.at(section).at("reverb"), settings, "bass-cut", "bass-cut"); + + update_key(json.at(section).at("reverb"), settings, "treble-cut", "treble-cut"); +} diff --git a/src/reverb_ui.cpp b/src/reverb_ui.cpp new file mode 100644 index 0000000..cb14351 --- /dev/null +++ b/src/reverb_ui.cpp @@ -0,0 +1,294 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "reverb_ui.hpp" + +namespace ui::reverb_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr reverb; + + std::vector connections; + + std::vector gconnections; +}; + +struct _ReverbBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkComboBoxText* room_size; + + GtkSpinButton *predelay, *decay_time, *diffusion, *amount, *dry, *hf_damp, *bass_cut, *treble_cut; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(ReverbBox, reverb_box, GTK_TYPE_BOX) + +void on_reset(ReverbBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void on_preset_room(ReverbBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->decay_time, 0.445945); + gtk_spin_button_set_value(self->hf_damp, 5508.46); + gtk_combo_box_set_active(GTK_COMBO_BOX(self->room_size), 4); + gtk_spin_button_set_value(self->diffusion, 0.54); + gtk_spin_button_set_value(self->amount, util::linear_to_db(0.469761)); + gtk_spin_button_set_value(self->dry, util::linear_to_db(1.0)); + gtk_spin_button_set_value(self->predelay, 25.0); + gtk_spin_button_set_value(self->bass_cut, 257.65); + gtk_spin_button_set_value(self->treble_cut, 20000.0); +} + +void on_preset_empty_walls(ReverbBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->decay_time, 0.505687); + gtk_spin_button_set_value(self->hf_damp, 3971.64); + gtk_combo_box_set_active(GTK_COMBO_BOX(self->room_size), 4); + gtk_spin_button_set_value(self->diffusion, 0.17); + gtk_spin_button_set_value(self->amount, util::linear_to_db(0.198884)); + gtk_spin_button_set_value(self->dry, util::linear_to_db(1.0)); + gtk_spin_button_set_value(self->predelay, 13.0); + gtk_spin_button_set_value(self->bass_cut, 240.453); + gtk_spin_button_set_value(self->treble_cut, 3303.47); +} + +void on_preset_ambience(ReverbBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->decay_time, 1.10354); + gtk_spin_button_set_value(self->hf_damp, 2182.58); + gtk_combo_box_set_active(GTK_COMBO_BOX(self->room_size), 4); + gtk_spin_button_set_value(self->diffusion, 0.69); + gtk_spin_button_set_value(self->amount, util::linear_to_db(0.291183)); + gtk_spin_button_set_value(self->dry, util::linear_to_db(1.0)); + gtk_spin_button_set_value(self->predelay, 6.5); + gtk_spin_button_set_value(self->bass_cut, 514.079); + gtk_spin_button_set_value(self->treble_cut, 4064.15); +} + +void on_preset_large_empty_hall(ReverbBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->decay_time, 2.00689); + gtk_spin_button_set_value(self->hf_damp, 20000.0); + gtk_spin_button_set_value(self->amount, util::linear_to_db(0.366022)); + g_settings_reset(self->settings, "room-size"); + g_settings_reset(self->settings, "diffusion"); + g_settings_reset(self->settings, "dry"); + g_settings_reset(self->settings, "predelay"); + g_settings_reset(self->settings, "bass-cut"); + g_settings_reset(self->settings, "treble-cut"); +} + +void on_preset_disco(ReverbBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->decay_time, 1.0); + gtk_spin_button_set_value(self->hf_damp, 3396.49); + gtk_spin_button_set_value(self->amount, util::linear_to_db(0.269807)); + g_settings_reset(self->settings, "room-size"); + g_settings_reset(self->settings, "diffusion"); + g_settings_reset(self->settings, "dry"); + g_settings_reset(self->settings, "predelay"); + g_settings_reset(self->settings, "bass-cut"); + g_settings_reset(self->settings, "treble-cut"); +} + +void on_preset_large_occupied_hall(ReverbBox* self, GtkButton* btn) { + gtk_spin_button_set_value(self->decay_time, 1.45397); + gtk_spin_button_set_value(self->hf_damp, 9795.58); + gtk_spin_button_set_value(self->amount, util::linear_to_db(0.184284)); + g_settings_reset(self->settings, "room-size"); + g_settings_reset(self->settings, "diffusion"); + g_settings_reset(self->settings, "dry"); + g_settings_reset(self->settings, "predelay"); + g_settings_reset(self->settings, "bass-cut"); + g_settings_reset(self->settings, "treble-cut"); +} + +void setup(ReverbBox* self, std::shared_ptr reverb, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->reverb = reverb; + + self->settings = g_settings_new_with_path(tags::schema::reverb::id, schema_path.c_str()); + + reverb->set_post_messages(true); + + self->data->connections.push_back(reverb->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(reverb->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "amount", gtk_spin_button_get_adjustment(self->amount), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "predelay", gtk_spin_button_get_adjustment(self->predelay), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "decay-time", gtk_spin_button_get_adjustment(self->decay_time), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "diffusion", gtk_spin_button_get_adjustment(self->diffusion), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "dry", gtk_spin_button_get_adjustment(self->dry), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "hf-damp", gtk_spin_button_get_adjustment(self->hf_damp), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "bass-cut", gtk_spin_button_get_adjustment(self->bass_cut), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "treble-cut", gtk_spin_button_get_adjustment(self->treble_cut), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "room-size", self->room_size, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_REVERB_BOX(object); + + self->data->reverb->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(reverb_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_REVERB_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(reverb_box_parent_class)->finalize(object); +} + +void reverb_box_class_init(ReverbBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::reverb_ui); + + gtk_widget_class_bind_template_child(widget_class, ReverbBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, ReverbBox, room_size); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, predelay); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, decay_time); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, amount); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, diffusion); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, dry); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, hf_damp); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, bass_cut); + gtk_widget_class_bind_template_child(widget_class, ReverbBox, treble_cut); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + gtk_widget_class_bind_template_callback(widget_class, on_preset_room); + gtk_widget_class_bind_template_callback(widget_class, on_preset_empty_walls); + gtk_widget_class_bind_template_callback(widget_class, on_preset_ambience); + gtk_widget_class_bind_template_callback(widget_class, on_preset_large_empty_hall); + gtk_widget_class_bind_template_callback(widget_class, on_preset_disco); + gtk_widget_class_bind_template_callback(widget_class, on_preset_large_occupied_hall); +} + +void reverb_box_init(ReverbBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->amount, self->dry); + + prepare_spinbuttons<"Hz">(self->hf_damp, self->bass_cut, self->treble_cut); + + prepare_spinbuttons<"s">(self->decay_time); + + prepare_spinbuttons<"ms">(self->predelay); + + prepare_spinbuttons<"">(self->diffusion); +} + +auto create() -> ReverbBox* { + return static_cast(g_object_new(EE_TYPE_REVERB_BOX, nullptr)); +} + +} // namespace ui::reverb_box diff --git a/src/rnnoise.cpp b/src/rnnoise.cpp new file mode 100644 index 0000000..cc7051e --- /dev/null +++ b/src/rnnoise.cpp @@ -0,0 +1,320 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "rnnoise.hpp" + +RNNoise::RNNoise(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::rnnoise, schema, schema_path, pipe_manager), data_L(0), data_R(0) { + data_L.reserve(blocksize); + data_R.reserve(blocksize); + + gconnections.push_back(g_signal_connect(settings, "changed::model-path", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + self->data_mutex.lock(); + + self->rnnoise_ready = false; + + self->data_mutex.unlock(); + +#ifdef RNNOISE_AVAILABLE + self->free_rnnoise(); + + auto* m = self->get_model_from_file(); + + self->model = m; + + self->state_left = rnnoise_create(self->model); + self->state_right = rnnoise_create(self->model); + + self->rnnoise_ready = true; +#endif + }), + this)); + + setup_input_output_gain(); + +#ifdef RNNOISE_AVAILABLE + + auto* m = get_model_from_file(); + + model = m; + + state_left = rnnoise_create(model); + state_right = rnnoise_create(model); + + rnnoise_ready = true; +#else + util::warning("The RNNoise library was not available at compilation time. The noise reduction filter won't work"); +#endif +} + +RNNoise::~RNNoise() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + std::scoped_lock lock(data_mutex); + + resampler_ready = false; + +#ifdef RNNOISE_AVAILABLE + free_rnnoise(); +#endif + + util::debug(log_tag + name + " destroyed"); +} + +void RNNoise::setup() { + std::scoped_lock lock(data_mutex); + + resampler_ready = false; + + latency_n_frames = 0U; + + resample = rate != rnnoise_rate; + + data_L.resize(0); + data_R.resize(0); + + deque_out_L.resize(0); + deque_out_R.resize(0); + + resampler_inL = std::make_unique(rate, rnnoise_rate); + resampler_inR = std::make_unique(rate, rnnoise_rate); + + resampler_outL = std::make_unique(rnnoise_rate, rate); + resampler_outR = std::make_unique(rnnoise_rate, rate); + + resampler_ready = true; +} + +void RNNoise::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::scoped_lock lock(data_mutex); + + if (bypass || !rnnoise_ready) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + if (resample) { + if (resampler_ready) { + const auto resampled_inL = resampler_inL->process(left_in, false); + const auto resampled_inR = resampler_inR->process(right_in, false); + + resampled_data_L.resize(0); + resampled_data_R.resize(0); + +#ifdef RNNOISE_AVAILABLE + remove_noise(resampled_inL, resampled_inR, resampled_data_L, resampled_data_R); +#endif + + auto resampled_outL = resampler_outL->process(resampled_data_L, false); + auto resampled_outR = resampler_outR->process(resampled_data_R, false); + + for (const auto& v : resampled_outL) { + deque_out_L.push_back(v); + } + + for (const auto& v : resampled_outR) { + deque_out_R.push_back(v); + } + } else { + for (const auto& v : left_in) { + deque_out_L.push_back(v); + } + + for (const auto& v : right_in) { + deque_out_R.push_back(v); + } + } + } else { +#ifdef RNNOISE_AVAILABLE + remove_noise(left_in, right_in, deque_out_L, deque_out_R); +#endif + } + + if (deque_out_L.size() >= left_out.size()) { + for (float& v : left_out) { + v = deque_out_L.front(); + + deque_out_L.pop_front(); + } + + for (float& v : right_out) { + v = deque_out_R.front(); + + deque_out_R.pop_front(); + } + } else { + const uint offset = 2U * (left_out.size() - deque_out_L.size()); + + if (offset != latency_n_frames) { + latency_n_frames = offset; + + notify_latency = true; + } + + for (uint n = 0U; !deque_out_L.empty() && n < left_out.size(); n++) { + if (n < offset) { + left_out[n] = 0.0F; + right_out[n] = 0.0F; + } else { + left_out[n] = deque_out_L.front(); + right_out[n] = deque_out_R.front(); + + deque_out_R.pop_front(); + deque_out_L.pop_front(); + } + } + } + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (notify_latency) { + latency_value = static_cast(latency_n_frames) / static_cast(rate); + + util::debug(log_tag + name + " latency: " + util::to_string(latency_value, "") + " s"); + + g_idle_add((GSourceFunc) + + [](gpointer user_data) { + auto* self = static_cast(user_data); + + if (!self->post_messages) { + return G_SOURCE_REMOVE; + } + + if (self->latency.empty()) { + return G_SOURCE_REMOVE; + } + + self->latency.emit(self->latency_value); + + return G_SOURCE_REMOVE; + }, + this); + + spa_process_latency_info latency_info{}; + + latency_info.ns = static_cast(latency_value * 1000000000.0F); + + std::array buffer{}; + + spa_pod_builder b{}; + + spa_pod_builder_init(&b, buffer.data(), sizeof(buffer)); + + const spa_pod* param = spa_process_latency_build(&b, SPA_PARAM_ProcessLatency, &latency_info); + + pw_filter_update_params(filter, nullptr, ¶m, 1); + + notify_latency = false; + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +#ifdef RNNOISE_AVAILABLE + +auto RNNoise::get_model_from_file() -> RNNModel* { + RNNModel* m = nullptr; + + const auto path = util::gsettings_get_string(settings, "model-path"); + + // Standard Model + if (path.empty()) { + standard_model = true; + + util::debug(log_tag + name + " using the standard model."); + + model_changed.emit(false); + + return m; + } + + // Custom Model + util::debug(log_tag + name + " loading custom model from file: " + path); + + if (FILE* f = fopen(path.c_str(), "r"); f != nullptr) { + m = rnnoise_model_from_file(f); + + fclose(f); + } + + standard_model = (m == nullptr); + + if (standard_model) { + util::warning(log_tag + name + " failed to load the custom model. Using the standard one."); + } + + model_changed.emit(standard_model); + + return m; +} + +void RNNoise::free_rnnoise() { + rnnoise_ready = false; + + if (state_left != nullptr) { + rnnoise_destroy(state_left); + } + + if (state_right != nullptr) { + rnnoise_destroy(state_right); + } + + if (model != nullptr) { + rnnoise_model_free(model); + } + + state_left = nullptr; + state_right = nullptr; + model = nullptr; +} + +#endif + +auto RNNoise::get_latency_seconds() -> float { + return latency_value; +} diff --git a/src/rnnoise_preset.cpp b/src/rnnoise_preset.cpp new file mode 100644 index 0000000..87b6762 --- /dev/null +++ b/src/rnnoise_preset.cpp @@ -0,0 +1,46 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "rnnoise_preset.hpp" + +RNNoisePreset::RNNoisePreset() { + input_settings = g_settings_new_with_path(tags::schema::rnnoise::id, tags::schema::rnnoise::input_path); + + output_settings = g_settings_new_with_path(tags::schema::rnnoise::id, tags::schema::rnnoise::output_path); +} + +void RNNoisePreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["rnnoise"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["rnnoise"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["rnnoise"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["rnnoise"]["model-path"] = util::gsettings_get_string(settings, "model-path"); +} + +void RNNoisePreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("rnnoise"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("rnnoise"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("rnnoise"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("rnnoise"), settings, "model-path", "model-path"); +} diff --git a/src/rnnoise_ui.cpp b/src/rnnoise_ui.cpp new file mode 100644 index 0000000..e4a4a5d --- /dev/null +++ b/src/rnnoise_ui.cpp @@ -0,0 +1,434 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "rnnoise_ui.hpp" + +namespace ui::rnnoise_box { + +using namespace std::string_literals; + +static const std::string rnnn_ext = ".rnnn"; + +// The translated default_model_name is not working as global variable +// because for some reasons it's not translated and, as a result, the +// Standard Model is not set from UI perspective (see #1659). +// So it has to be constructed every time locally when it's needed. +// static const std::string default_model_name = _("Standard Model"); + +static std::filesystem::path model_dir = g_get_user_config_dir() + "/easyeffects/rnnoise"s; + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + app::Application* application; + + std::shared_ptr rnnoise; + + std::vector connections; + + std::vector gconnections; +}; + +struct _RNNoiseBox { + GtkBox parent_instance; + + GtkOverlay* overlay; + + AdwToastOverlay* toast_overlay; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *active_model_name, *model_active_state, *model_error_state, *input_level_left_label, + *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkListView* listview; + + GtkStringList* string_list; + + GtkSingleSelection* selection_model; + + GSettings* settings; + + GFileMonitor* folder_monitor; + + Data* data; +}; + +G_DEFINE_TYPE(RNNoiseBox, rnnoise_box, GTK_TYPE_BOX) + +void on_reset(RNNoiseBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void update_model_state(RNNoiseBox* self, const bool& load_error) { + gtk_widget_set_visible(GTK_WIDGET(self->model_error_state), load_error); + gtk_widget_set_visible(GTK_WIDGET(self->model_active_state), !load_error); + + if (load_error) { + ui::show_autohiding_toast( + self->toast_overlay, + _("Selected Model Not Loaded. Its Format May Be Unsupported. Fell Back To The Standard Model.")); + } +} + +gboolean set_model_delete_button_visibility(GtkListItem* item, const char* name) { + const std::string default_model_name = _("Standard Model"); + + return (name == default_model_name) ? 0 : 1; +} + +void on_remove_model_file(GtkListItem* item, GtkButton* btn) { + std::string name = gtk_string_object_get_string(GTK_STRING_OBJECT(gtk_list_item_get_item(item))); + + const auto model_file = model_dir / std::filesystem::path{name.c_str() + rnnn_ext}; + + if (std::filesystem::exists(model_file)) { + std::filesystem::remove(model_file); + + util::debug("removed model file: " + model_file.string()); + } +} + +void import_model_file(const std::string& file_path) { + std::filesystem::path p{file_path}; + + if (std::filesystem::is_regular_file(p)) { + auto out_path = model_dir / p.filename(); + + out_path.replace_extension(rnnn_ext); + + std::filesystem::copy_file(p, out_path, std::filesystem::copy_options::overwrite_existing); + + util::debug("imported model file to: " + out_path.string()); + } else { + util::warning(p.string() + " is not a file!"); + } +} + +void on_import_model_clicked(RNNoiseBox* self, GtkButton* btn) { + auto* active_window = gtk_application_get_active_window(GTK_APPLICATION(self->data->application)); + + auto* dialog = gtk_file_chooser_native_new(_("Import Model File"), active_window, GTK_FILE_CHOOSER_ACTION_OPEN, + _("Open"), _("Cancel")); + + auto* filter = gtk_file_filter_new(); + + gtk_file_filter_set_name(filter, _("RNNoise Models")); + gtk_file_filter_add_pattern(filter, "*.rnnn"); + + gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); + + g_signal_connect(dialog, "response", G_CALLBACK(+[](GtkNativeDialog* dialog, int response, RNNoiseBox* self) { + if (response == GTK_RESPONSE_ACCEPT) { + auto* chooser = GTK_FILE_CHOOSER(dialog); + auto* file = gtk_file_chooser_get_file(chooser); + auto* path = g_file_get_path(file); + + import_model_file(path); + + g_free(path); + + g_object_unref(file); + } + + g_object_unref(dialog); + }), + self); + + gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(dialog), 1); + gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog)); +} + +void setup_listview(RNNoiseBox* self) { + for (const auto& name : util::get_files_name(model_dir, rnnn_ext)) { + gtk_string_list_append(self->string_list, name.c_str()); + } + + if (g_list_model_get_n_items(G_LIST_MODEL(self->string_list)) == 0) { + g_settings_set_string(self->settings, "model-path", ""); + } +} + +void setup(RNNoiseBox* self, + std::shared_ptr rnnoise, + const std::string& schema_path, + app::Application* application) { + self->data->rnnoise = rnnoise; + self->data->application = application; + + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->settings = g_settings_new_with_path(tags::schema::rnnoise::id, schema_path.c_str()); + + rnnoise->set_post_messages(true); + + // Initialize state labels + if (const auto m = util::gsettings_get_string(self->settings, "model-path"); !m.empty() && rnnoise->standard_model) { + update_model_state(self, true); + } + + setup_listview(self); + + self->data->connections.push_back(rnnoise->model_changed.connect( + [=](const bool load_error) { util::idle_add([=]() { update_model_state(self, load_error); }); })); + + self->data->connections.push_back(rnnoise->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(rnnoise->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind_with_mapping( + self->settings, "model-path", self->selection_model, "selected", G_SETTINGS_BIND_DEFAULT, + +[](GValue* value, GVariant* variant, gpointer user_data) { + auto self = EE_RNNOISE_BOX(user_data); + + const auto* v = g_variant_get_string(variant, nullptr); + + const auto path = std::filesystem::path{v}; + + const std::string default_model_name = _("Standard Model"); + + auto gsettings_model_name = path.stem(); + + int standard_model_id = 0; + + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->selection_model)); n++) { + auto item = g_list_model_get_item(G_LIST_MODEL(self->selection_model), n); + + const std::string model_name = gtk_string_object_get_string(GTK_STRING_OBJECT(item)); + + g_object_unref(item); + + if (gsettings_model_name == model_name) { + g_value_set_uint(value, n); + } else if (model_name == default_model_name) { + standard_model_id = n; + } + } + + if (gsettings_model_name.empty()) { + g_value_set_uint(value, standard_model_id); + } + + return 1; + }, + +[](const GValue* value, const GVariantType* expected_type, gpointer user_data) { + auto self = EE_RNNOISE_BOX(user_data); + + auto string_object = + GTK_STRING_OBJECT(gtk_single_selection_get_selected_item(GTK_SINGLE_SELECTION(self->selection_model))); + + const std::string name = gtk_string_object_get_string(string_object); + + const std::string default_model_name = _("Standard Model"); + + if (name == default_model_name) { + return g_variant_new_string(""); + } + + const auto model_file = model_dir / std::filesystem::path{name + rnnn_ext}; + + return g_variant_new_string(model_file.c_str()); + }, + self, nullptr); +} + +void dispose(GObject* object) { + auto* self = EE_RNNOISE_BOX(object); + + self->data->rnnoise->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + g_file_monitor_cancel(self->folder_monitor); + + g_object_unref(self->folder_monitor); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(rnnoise_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_RNNOISE_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(rnnoise_box_parent_class)->finalize(object); +} + +void rnnoise_box_class_init(RNNoiseBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::rnnoise_ui); + + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, overlay); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, toast_overlay); + + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, string_list); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, selection_model); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, listview); + + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, active_model_name); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, model_active_state); + gtk_widget_class_bind_template_child(widget_class, RNNoiseBox, model_error_state); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); + gtk_widget_class_bind_template_callback(widget_class, on_import_model_clicked); + gtk_widget_class_bind_template_callback(widget_class, on_remove_model_file); + gtk_widget_class_bind_template_callback(widget_class, set_model_delete_button_visibility); +} + +void rnnoise_box_init(RNNoiseBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + // model dir + + if (!std::filesystem::is_directory(model_dir)) { + if (std::filesystem::create_directories(model_dir)) { + util::debug("model directory created: " + model_dir.string()); + } else { + util::warning("failed to create model directory: " + model_dir.string()); + } + } else { + util::debug("model directory already exists: " + model_dir.string()); + } + + auto gfile = g_file_new_for_path(model_dir.c_str()); + + self->folder_monitor = g_file_monitor_directory(gfile, G_FILE_MONITOR_NONE, nullptr, nullptr); + + g_signal_connect(self->folder_monitor, "changed", + G_CALLBACK(+[](GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonitorEvent event_type, + RNNoiseBox* self) { + const auto rnn_filename = util::remove_filename_extension(g_file_get_basename(file)); + + if (rnn_filename.empty()) { + util::warning("can't retrieve information about the rnn file"); + + return; + } + + switch (event_type) { + case G_FILE_MONITOR_EVENT_CREATED: { + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->string_list)); n++) { + if (rnn_filename == gtk_string_list_get_string(self->string_list, n)) { + return; + } + } + + gtk_string_list_append(self->string_list, rnn_filename.c_str()); + + break; + } + + case G_FILE_MONITOR_EVENT_DELETED: { + for (guint n = 0; n < g_list_model_get_n_items(G_LIST_MODEL(self->string_list)); n++) { + if (rnn_filename == gtk_string_list_get_string(self->string_list, n)) { + gtk_string_list_remove(self->string_list, n); + + // Workaround for GTK not calling the listview signal_selection_changed (issue #1110) + + // on_selection_changed(); + + return; + } + } + + break; + } + + default: + break; + } + }), + self); + + g_object_unref(gfile); +} + +auto create() -> RNNoiseBox* { + return static_cast(g_object_new(EE_TYPE_RNNOISE_BOX, nullptr)); +} + +} // namespace ui::rnnoise_box diff --git a/src/spectrum.cpp b/src/spectrum.cpp new file mode 100644 index 0000000..6e623ca --- /dev/null +++ b/src/spectrum.cpp @@ -0,0 +1,131 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "spectrum.hpp" + +Spectrum::Spectrum(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, "spectrum", schema, schema_path, pipe_manager) { + real_input.resize(n_bands); + output.resize(n_bands / 2U + 1U); + + complex_output = fftwf_alloc_complex(n_bands); + + plan = fftwf_plan_dft_r2c_1d(static_cast(n_bands), real_input.data(), complex_output, FFTW_ESTIMATE); + + fftw_ready = true; + + g_signal_connect(settings, "changed::show", G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + std::scoped_lock lock(self->data_mutex); + + self->bypass = g_settings_get_boolean(settings, key) == 0; + }), + this); +} + +Spectrum::~Spectrum() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + std::scoped_lock lock(data_mutex); + + fftw_ready = false; + + if (complex_output != nullptr) { + fftwf_free(complex_output); + } + + fftwf_destroy_plan(plan); + + util::debug(log_tag + name + " destroyed"); +} + +void Spectrum::setup() { + notification_dt = 0.0F; + + fft_buffer_duration = static_cast(n_bands) / static_cast(rate); +} + +void Spectrum::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + std::scoped_lock lock(data_mutex); + + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + if (bypass || !fftw_ready) { + return; + } + + uint count = 0U; + + for (uint n = 0U; n < left_in.size(); n++, count++) { + if (const uint k = total_count + n; k < real_input.size()) { + // https://en.wikipedia.org/wiki/Hann_function + + const float w = 0.5F * (1.0F - std::cos(2.0F * std::numbers::pi_v * static_cast(k) / + static_cast(real_input.size() - 1U))); + + real_input[k] = 0.5F * (left_in[n] + right_in[n]) * w; + } else { + break; + } + } + + total_count += count; + + if (total_count == real_input.size()) { + total_count = 0U; + + fftwf_execute(plan); + + for (uint i = 0U; i < output.size(); i++) { + float sqr = complex_output[i][0] * complex_output[i][0] + complex_output[i][1] * complex_output[i][1]; + + sqr /= static_cast(output.size() * output.size()); + + output[i] = sqr; + } + } + + notification_dt += fft_buffer_duration; + + if (notification_dt >= notification_time_window) { + notification_dt = 0.0F; + + util::idle_add([=, this]() { + if (bypass) { + return; + } + + power.emit(rate, output.size(), output); + }); + } +} + +auto Spectrum::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/stereo_tools.cpp b/src/stereo_tools.cpp new file mode 100644 index 0000000..5fe8037 --- /dev/null +++ b/src/stereo_tools.cpp @@ -0,0 +1,124 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "stereo_tools.hpp" + +StereoTools::StereoTools(const std::string& tag, + const std::string& schema, + const std::string& schema_path, + PipeManager* pipe_manager) + : PluginBase(tag, tags::plugin_name::stereo_tools, schema, schema_path, pipe_manager), + lv2_wrapper(std::make_unique("http://calf.sourceforge.net/plugins/StereoTools")) { + if (!lv2_wrapper->found_plugin) { + util::debug(log_tag + "http://calf.sourceforge.net/plugins/StereoTools is not installed"); + } + + lv2_wrapper->bind_key_double<"balance_in", "balance-in">(settings); + + lv2_wrapper->bind_key_double<"balance_out", "balance-out">(settings); + + lv2_wrapper->bind_key_double<"sbal", "sbal">(settings); + + lv2_wrapper->bind_key_double<"mpan", "mpan">(settings); + + lv2_wrapper->bind_key_double<"stereo_base", "stereo-base">(settings); + + lv2_wrapper->bind_key_double<"delay", "delay">(settings); + + lv2_wrapper->bind_key_double<"sc_level", "sc-level">(settings); + + lv2_wrapper->bind_key_double<"stereo_phase", "stereo-phase">(settings); + + lv2_wrapper->bind_key_double_db<"slev", "slev">(settings); + + lv2_wrapper->bind_key_double_db<"mlev", "mlev">(settings); + + lv2_wrapper->bind_key_bool<"softclip", "softclip">(settings); + + lv2_wrapper->bind_key_bool<"mutel", "mutel">(settings); + + lv2_wrapper->bind_key_bool<"muter", "muter">(settings); + + lv2_wrapper->bind_key_bool<"phasel", "phasel">(settings); + + lv2_wrapper->bind_key_bool<"phaser", "phaser">(settings); + + lv2_wrapper->bind_key_enum<"mode", "mode">(settings); + + setup_input_output_gain(); +} + +StereoTools::~StereoTools() { + if (connected_to_pw) { + disconnect_from_pw(); + } + + util::debug(log_tag + name + " destroyed"); +} + +void StereoTools::setup() { + if (!lv2_wrapper->found_plugin) { + return; + } + + lv2_wrapper->set_n_samples(n_samples); + + if (lv2_wrapper->get_rate() != rate) { + lv2_wrapper->create_instance(rate); + } +} + +void StereoTools::process(std::span& left_in, + std::span& right_in, + std::span& left_out, + std::span& right_out) { + if (!lv2_wrapper->found_plugin || !lv2_wrapper->has_instance() || bypass) { + std::copy(left_in.begin(), left_in.end(), left_out.begin()); + std::copy(right_in.begin(), right_in.end(), right_out.begin()); + + return; + } + + if (input_gain != 1.0F) { + apply_gain(left_in, right_in, input_gain); + } + + lv2_wrapper->connect_data_ports(left_in, right_in, left_out, right_out); + lv2_wrapper->run(); + + if (output_gain != 1.0F) { + apply_gain(left_out, right_out, output_gain); + } + + if (post_messages) { + get_peaks(left_in, right_in, left_out, right_out); + + notification_dt += buffer_duration; + + if (notification_dt >= notification_time_window) { + notify(); + + notification_dt = 0.0F; + } + } +} + +auto StereoTools::get_latency_seconds() -> float { + return 0.0F; +} \ No newline at end of file diff --git a/src/stereo_tools_preset.cpp b/src/stereo_tools_preset.cpp new file mode 100644 index 0000000..c9b46e7 --- /dev/null +++ b/src/stereo_tools_preset.cpp @@ -0,0 +1,106 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "stereo_tools_preset.hpp" + +StereoToolsPreset::StereoToolsPreset() { + input_settings = g_settings_new_with_path(tags::schema::stereo_tools::id, tags::schema::stereo_tools::input_path); + + output_settings = g_settings_new_with_path(tags::schema::stereo_tools::id, tags::schema::stereo_tools::output_path); +} + +void StereoToolsPreset::save(nlohmann::json& json, const std::string& section, GSettings* settings) { + json[section]["stereo_tools"]["bypass"] = g_settings_get_boolean(settings, "bypass") != 0; + + json[section]["stereo_tools"]["input-gain"] = g_settings_get_double(settings, "input-gain"); + + json[section]["stereo_tools"]["output-gain"] = g_settings_get_double(settings, "output-gain"); + + json[section]["stereo_tools"]["balance-in"] = g_settings_get_double(settings, "balance-in"); + + json[section]["stereo_tools"]["balance-out"] = g_settings_get_double(settings, "balance-out"); + + json[section]["stereo_tools"]["softclip"] = g_settings_get_boolean(settings, "softclip") != 0; + + json[section]["stereo_tools"]["mutel"] = g_settings_get_boolean(settings, "mutel") != 0; + + json[section]["stereo_tools"]["muter"] = g_settings_get_boolean(settings, "muter") != 0; + + json[section]["stereo_tools"]["phasel"] = g_settings_get_boolean(settings, "phasel") != 0; + + json[section]["stereo_tools"]["phaser"] = g_settings_get_boolean(settings, "phaser") != 0; + + json[section]["stereo_tools"]["mode"] = util::gsettings_get_string(settings, "mode"); + + json[section]["stereo_tools"]["side-level"] = g_settings_get_double(settings, "slev"); + + json[section]["stereo_tools"]["side-balance"] = g_settings_get_double(settings, "sbal"); + + json[section]["stereo_tools"]["middle-level"] = g_settings_get_double(settings, "mlev"); + + json[section]["stereo_tools"]["middle-panorama"] = g_settings_get_double(settings, "mpan"); + + json[section]["stereo_tools"]["stereo-base"] = g_settings_get_double(settings, "stereo-base"); + + json[section]["stereo_tools"]["delay"] = g_settings_get_double(settings, "delay"); + + json[section]["stereo_tools"]["sc-level"] = g_settings_get_double(settings, "sc-level"); + + json[section]["stereo_tools"]["stereo-phase"] = g_settings_get_double(settings, "stereo-phase"); +} + +void StereoToolsPreset::load(const nlohmann::json& json, const std::string& section, GSettings* settings) { + update_key(json.at(section).at("stereo_tools"), settings, "bypass", "bypass"); + + update_key(json.at(section).at("stereo_tools"), settings, "input-gain", "input-gain"); + + update_key(json.at(section).at("stereo_tools"), settings, "output-gain", "output-gain"); + + update_key(json.at(section).at("stereo_tools"), settings, "balance-in", "balance-in"); + + update_key(json.at(section).at("stereo_tools"), settings, "balance-out", "balance-out"); + + update_key(json.at(section).at("stereo_tools"), settings, "softclip", "softclip"); + + update_key(json.at(section).at("stereo_tools"), settings, "mutel", "mutel"); + + update_key(json.at(section).at("stereo_tools"), settings, "muter", "muter"); + + update_key(json.at(section).at("stereo_tools"), settings, "phasel", "phasel"); + + update_key(json.at(section).at("stereo_tools"), settings, "phaser", "phaser"); + + update_key(json.at(section).at("stereo_tools"), settings, "mode", "mode"); + + update_key(json.at(section).at("stereo_tools"), settings, "slev", "side-level"); + + update_key(json.at(section).at("stereo_tools"), settings, "sbal", "side-balance"); + + update_key(json.at(section).at("stereo_tools"), settings, "mlev", "middle-level"); + + update_key(json.at(section).at("stereo_tools"), settings, "mpan", "middle-panorama"); + + update_key(json.at(section).at("stereo_tools"), settings, "stereo-base", "stereo-base"); + + update_key(json.at(section).at("stereo_tools"), settings, "delay", "delay"); + + update_key(json.at(section).at("stereo_tools"), settings, "sc-level", "sc-level"); + + update_key(json.at(section).at("stereo_tools"), settings, "stereo-phase", "stereo-phase"); +} diff --git a/src/stereo_tools_ui.cpp b/src/stereo_tools_ui.cpp new file mode 100644 index 0000000..d8042f8 --- /dev/null +++ b/src/stereo_tools_ui.cpp @@ -0,0 +1,235 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "stereo_tools_ui.hpp" + +namespace ui::stereo_tools_box { + +struct Data { + public: + ~Data() { util::debug("data struct destroyed"); } + + uint serial = 0; + + std::shared_ptr stereo_tools; + + std::vector connections; + + std::vector gconnections; +}; + +struct _StereoToolsBox { + GtkBox parent_instance; + + GtkScale *input_gain, *output_gain; + + GtkLevelBar *input_level_left, *input_level_right, *output_level_left, *output_level_right; + + GtkLabel *input_level_left_label, *input_level_right_label, *output_level_left_label, *output_level_right_label; + + GtkComboBoxText* mode; + + GtkSpinButton *balance_in, *balance_out, *slev, *sbal, *mlev, *mpan, *stereo_base, *delay, *sc_level, *stereo_phase; + + GtkToggleButton *softclip, *mutel, *muter, *phasel, *phaser; + + GSettings* settings; + + Data* data; +}; + +G_DEFINE_TYPE(StereoToolsBox, stereo_tools_box, GTK_TYPE_BOX) + +void on_reset(StereoToolsBox* self, GtkButton* btn) { + util::reset_all_keys_except(self->settings); +} + +void setup(StereoToolsBox* self, std::shared_ptr stereo_tools, const std::string& schema_path) { + auto serial = get_new_filter_serial(); + + self->data->serial = serial; + + g_object_set_data(G_OBJECT(self), "serial", GUINT_TO_POINTER(serial)); + + set_ignore_filter_idle_add(serial, false); + + self->data->stereo_tools = stereo_tools; + + self->settings = g_settings_new_with_path(tags::schema::stereo_tools::id, schema_path.c_str()); + + stereo_tools->set_post_messages(true); + + self->data->connections.push_back(stereo_tools->input_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->input_level_left, self->input_level_left_label, self->input_level_right, + self->input_level_right_label, left, right); + }); + })); + + self->data->connections.push_back(stereo_tools->output_level.connect([=](const float& left, const float& right) { + util::idle_add([=]() { + if (get_ignore_filter_idle_add(serial)) { + return; + } + + update_level(self->output_level_left, self->output_level_left_label, self->output_level_right, + self->output_level_right_label, left, right); + }); + })); + + gsettings_bind_widgets<"input-gain", "output-gain">(self->settings, self->input_gain, self->output_gain); + + g_settings_bind(self->settings, "balance-in", gtk_spin_button_get_adjustment(self->balance_in), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "balance-out", gtk_spin_button_get_adjustment(self->balance_out), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "slev", gtk_spin_button_get_adjustment(self->slev), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sbal", gtk_spin_button_get_adjustment(self->sbal), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mlev", gtk_spin_button_get_adjustment(self->mlev), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mpan", gtk_spin_button_get_adjustment(self->mpan), "value", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "stereo-base", gtk_spin_button_get_adjustment(self->stereo_base), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "delay", gtk_spin_button_get_adjustment(self->delay), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "sc-level", gtk_spin_button_get_adjustment(self->sc_level), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "stereo-phase", gtk_spin_button_get_adjustment(self->stereo_phase), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "softclip", self->softclip, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mutel", self->mutel, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "muter", self->muter, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "phasel", self->phasel, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "phaser", self->phaser, "active", G_SETTINGS_BIND_DEFAULT); + + g_settings_bind(self->settings, "mode", self->mode, "active-id", G_SETTINGS_BIND_DEFAULT); +} + +void dispose(GObject* object) { + auto* self = EE_STEREO_TOOLS_BOX(object); + + self->data->stereo_tools->set_post_messages(false); + + set_ignore_filter_idle_add(self->data->serial, true); + + for (auto& c : self->data->connections) { + c.disconnect(); + } + + for (auto& handler_id : self->data->gconnections) { + g_signal_handler_disconnect(self->settings, handler_id); + } + + self->data->connections.clear(); + self->data->gconnections.clear(); + + g_object_unref(self->settings); + + util::debug("disposed"); + + G_OBJECT_CLASS(stereo_tools_box_parent_class)->dispose(object); +} + +void finalize(GObject* object) { + auto* self = EE_STEREO_TOOLS_BOX(object); + + delete self->data; + + util::debug("finalized"); + + G_OBJECT_CLASS(stereo_tools_box_parent_class)->finalize(object); +} + +void stereo_tools_box_class_init(StereoToolsBoxClass* klass) { + auto* object_class = G_OBJECT_CLASS(klass); + auto* widget_class = GTK_WIDGET_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + gtk_widget_class_set_template_from_resource(widget_class, tags::resources::stereo_tools_ui); + + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, input_gain); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, output_gain); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, input_level_left); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, input_level_right); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, output_level_left); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, output_level_right); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, input_level_left_label); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, input_level_right_label); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, output_level_left_label); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, output_level_right_label); + + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, mode); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, balance_in); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, balance_out); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, slev); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, sbal); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, mlev); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, mpan); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, stereo_base); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, delay); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, sc_level); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, stereo_phase); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, softclip); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, mutel); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, muter); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, phasel); + gtk_widget_class_bind_template_child(widget_class, StereoToolsBox, phaser); + + gtk_widget_class_bind_template_callback(widget_class, on_reset); +} + +void stereo_tools_box_init(StereoToolsBox* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->data = new Data(); + + prepare_scales<"dB">(self->input_gain, self->output_gain); + + prepare_spinbuttons<"dB">(self->slev, self->mlev); + + prepare_spinbuttons<"ms">(self->delay); + + prepare_spinbuttons<"">(self->balance_in, self->balance_out, self->sc_level, self->sbal, self->mpan, + self->stereo_base, self->stereo_phase); +} + +auto create() -> StereoToolsBox* { + return static_cast(g_object_new(EE_TYPE_STEREO_TOOLS_BOX, nullptr)); +} + +} // namespace ui::stereo_tools_box diff --git a/src/stream_input_effects.cpp b/src/stream_input_effects.cpp new file mode 100644 index 0000000..ba54059 --- /dev/null +++ b/src/stream_input_effects.cpp @@ -0,0 +1,363 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "stream_input_effects.hpp" + +StreamInputEffects::StreamInputEffects(PipeManager* pipe_manager) + : EffectsBase("sie: ", tags::schema::id_input, pipe_manager) { + auto* PULSE_SOURCE = std::getenv("PULSE_SOURCE"); + + if (PULSE_SOURCE != nullptr && PULSE_SOURCE != tags::pipewire::ee_source_name) { + for (const auto& [serial, node] : pm->node_map) { + if (node.name == PULSE_SOURCE) { + pm->input_device = node; + + g_settings_set_string(settings, "input-device", pm->input_device.name.c_str()); + + break; + } + } + } + + connections.push_back(pm->source_added.connect([=, this](const NodeInfo node) { + if (node.name == util::gsettings_get_string(settings, "input-device")) { + pm->input_device = node; + + if (g_settings_get_boolean(global_settings, "bypass") != 0) { + g_settings_set_boolean(global_settings, "bypass", 0); + + return; // filter connected through update_bypass_state + } + + set_bypass(false); + } + })); + + connections.push_back(pm->source_removed.connect([=, this](const NodeInfo node) { + if (g_settings_get_boolean(settings, "use-default-input-device") == 0) { + if (node.name == util::gsettings_get_string(settings, "input-device")) { + pm->input_device.id = SPA_ID_INVALID; + pm->input_device.serial = SPA_ID_INVALID; + } + } + })); + + connections.push_back(pm->stream_input_added.connect(sigc::mem_fun(*this, &StreamInputEffects::on_app_added))); + connections.push_back(pm->link_changed.connect(sigc::mem_fun(*this, &StreamInputEffects::on_link_changed))); + + connect_filters(); + + gconnections.push_back(g_signal_connect(settings, "changed::input-device", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + const auto name = util::gsettings_get_string(settings, key); + + if (name.empty()) { + return; + } + + for (const auto& [serial, node] : self->pm->node_map) { + if (node.name == name) { + self->pm->input_device = node; + + if (g_settings_get_boolean(self->global_settings, "bypass") != 0) { + g_settings_set_boolean(self->global_settings, "bypass", 0); + + return; // filter connected through update_bypass_state + } + + self->set_bypass(false); + + break; + } + } + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::plugins", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + if (g_settings_get_boolean(self->global_settings, "bypass") != 0) { + g_settings_set_boolean(self->global_settings, "bypass", 0); + + return; // filter connected through update_bypass_state + } + + self->set_bypass(false); + }), + this)); +} + +StreamInputEffects::~StreamInputEffects() { + disconnect_filters(); + + util::debug("destroyed"); +} + +void StreamInputEffects::on_app_added(const NodeInfo node_info) { + const auto blocklist = util::gchar_array_to_vector(g_settings_get_strv(settings, "blocklist")); + + auto is_blocklisted = std::ranges::find(blocklist, node_info.application_id) != blocklist.end(); + + is_blocklisted = is_blocklisted || std::ranges::find(blocklist, node_info.name) != blocklist.end(); + + if (g_settings_get_boolean(global_settings, "process-all-inputs") != 0 && !is_blocklisted) { + pm->connect_stream_input(node_info.id); + } +} + +auto StreamInputEffects::apps_want_to_play() -> bool { + for (const auto& link : pm->list_links) { + if (link.output_node_id == pm->ee_source_node.id) { + if (link.state == PW_LINK_STATE_ACTIVE) { + return true; + } + } + } + + return false; +} + +void StreamInputEffects::on_link_changed(const LinkInfo link_info) { + // We are not interested in the other link states + + if (link_info.state != PW_LINK_STATE_ACTIVE && link_info.state != PW_LINK_STATE_PAUSED) { + return; + } + + if (pm->default_input_device_name == pm->ee_source_node.name) { + return; + } + + /* + If bypass is enabled do not touch the plugin pipeline + */ + + if (bypass) { + return; + } + + if (apps_want_to_play()) { + if (list_proxies.empty()) { + util::debug("At least one app linked to our device wants to play. Linking our filters."); + + connect_filters(); + } + } else { + int inactivity_timeout = g_settings_get_int(global_settings, "inactivity-timeout"); + + g_timeout_add_seconds(inactivity_timeout, GSourceFunc(+[](StreamInputEffects* self) { + if (!self->apps_want_to_play() && !self->list_proxies.empty()) { + util::debug("No app linked to our device wants to play. Unlinking our filters."); + + self->disconnect_filters(); + } + + return G_SOURCE_REMOVE; + }), + this); + } +} + +void StreamInputEffects::connect_filters(const bool& bypass) { + const auto input_device_name = util::gsettings_get_string(settings, "input-device"); + + // checking if the output device exists + + if (input_device_name.empty()) { + util::debug("No input device set. Aborting the link"); + + return; + } + + bool dev_exists = false; + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == input_device_name) { + dev_exists = true; + + pm->input_device = node; + + break; + } + } + + if (!dev_exists) { + util::debug("The input device " + input_device_name + " is not available. Aborting the link"); + + return; + } + + const auto list = + (bypass) ? std::vector() : util::gchar_array_to_vector(g_settings_get_strv(settings, "plugins")); + + auto mic_linked = false; + + // waiting for the input device ports information to be available. + + int timeout = 0; + + while (pm->count_node_ports(pm->input_device.id) < 1) { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + + timeout++; + + if (timeout > 10000) { + util::warning("Information about the ports of the input device " + pm->input_device.name + " with id " + + util::to_string(pm->input_device.id) + " are taking to long to be available. Aborting the link"); + + return; + } + } + + uint prev_node_id = pm->input_device.id; + uint next_node_id = 0U; + + // link plugins + + if (!list.empty()) { + for (const auto& name : list) { + if (!plugins.contains(name)) { + continue; + } + + if (!plugins[name]->connected_to_pw ? plugins[name]->connect_to_pw() : true) { + next_node_id = plugins[name]->get_node_id(); + + const auto links = pm->link_nodes(prev_node_id, next_node_id); + + for (auto* link : links) { + list_proxies.push_back(link); + } + + if (mic_linked && (links.size() == 2U)) { + prev_node_id = next_node_id; + } else if (!mic_linked && (!links.empty())) { + prev_node_id = next_node_id; + mic_linked = true; + } else { + util::warning(" link from node " + util::to_string(prev_node_id) + " to node " + + util::to_string(next_node_id) + " failed"); + } + } + } + + // checking if we have to link the echo_canceller probe to the output device + + for (const auto& name : list) { + if (!plugins.contains(name)) { + continue; + } + + if (name == tags::plugin_name::echo_canceller) { + if (plugins[name]->connected_to_pw) { + for (const auto& link : pm->link_nodes(pm->output_device.id, plugins[name]->get_node_id(), true)) { + list_proxies.push_back(link); + } + } + } + + plugins[name]->update_probe_links(); + } + } + + // link spectrum, output level meter and source node + + for (const auto node_id : {spectrum->get_node_id(), output_level->get_node_id(), pm->ee_source_node.id}) { + next_node_id = node_id; + + const auto links = pm->link_nodes(prev_node_id, next_node_id); + + for (auto* link : links) { + list_proxies.push_back(link); + } + + if (mic_linked && (links.size() == 2U)) { + prev_node_id = next_node_id; + } else if (!mic_linked && (!links.empty())) { + prev_node_id = next_node_id; + mic_linked = true; + } else { + util::warning(" link from node " + util::to_string(prev_node_id) + " to node " + util::to_string(next_node_id) + + " failed"); + } + } +} + +void StreamInputEffects::disconnect_filters() { + std::set link_id_list; + + const auto selected_plugins_list = + (bypass) ? std::vector() : util::gchar_array_to_vector(g_settings_get_strv(settings, "plugins")); + + for (const auto& plugin : plugins | std::views::values) { + for (const auto& link : pm->list_links) { + if (link.input_node_id == plugin->get_node_id() || link.output_node_id == plugin->get_node_id()) { + link_id_list.insert(link.id); + } + } + + if (plugin->connected_to_pw) { + if (std::ranges::find(selected_plugins_list, plugin->name) == selected_plugins_list.end()) { + util::debug("disconnecting the " + plugin->name + " filter from PipeWire"); + + plugin->disconnect_from_pw(); + } + } + } + + for (const auto& link : pm->list_links) { + if (link.input_node_id == spectrum->get_node_id() || link.output_node_id == spectrum->get_node_id() || + link.input_node_id == output_level->get_node_id() || link.output_node_id == output_level->get_node_id()) { + link_id_list.insert(link.id); + } + } + + for (const auto& id : link_id_list) { + pm->destroy_object(static_cast(id)); + } + + pm->destroy_links(list_proxies); + + list_proxies.clear(); + + // remove_unused_filters(); +} + +void StreamInputEffects::set_bypass(const bool& state) { + bypass = state; + + disconnect_filters(); + + connect_filters(state); +} + +void StreamInputEffects::set_listen_to_mic(const bool& state) { + if (state) { + for (const auto& link : pm->link_nodes(pm->ee_source_node.id, pm->output_device.id, false, false)) { + list_proxies_listen_mic.push_back(link); + } + } else { + pm->destroy_links(list_proxies_listen_mic); + + list_proxies_listen_mic.clear(); + } +} diff --git a/src/stream_output_effects.cpp b/src/stream_output_effects.cpp new file mode 100644 index 0000000..349eb1c --- /dev/null +++ b/src/stream_output_effects.cpp @@ -0,0 +1,354 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "stream_output_effects.hpp" + +StreamOutputEffects::StreamOutputEffects(PipeManager* pipe_manager) + : EffectsBase("soe: ", tags::schema::id_output, pipe_manager) { + auto* PULSE_SINK = std::getenv("PULSE_SINK"); + + if (PULSE_SINK != nullptr && PULSE_SINK != tags::pipewire::ee_sink_name) { + for (const auto& [serial, node] : pm->node_map) { + if (node.name == PULSE_SINK) { + pm->output_device = node; + + g_settings_set_string(settings, "output-device", pm->output_device.name.c_str()); + + break; + } + } + } + + connections.push_back(pm->sink_added.connect([=, this](const NodeInfo node) { + if (node.name == util::gsettings_get_string(settings, "output-device")) { + pm->output_device = node; + + if (g_settings_get_boolean(global_settings, "bypass") != 0) { + g_settings_set_boolean(global_settings, "bypass", 0); + + return; // filter connected through update_bypass_state + } + + set_bypass(false); + } + })); + + connections.push_back(pm->sink_removed.connect([=, this](const NodeInfo node) { + if (g_settings_get_boolean(settings, "use-default-output-device") == 0) { + if (node.name == util::gsettings_get_string(settings, "output-device")) { + pm->output_device.id = SPA_ID_INVALID; + pm->output_device.serial = SPA_ID_INVALID; + } + } + })); + + connections.push_back(pm->stream_output_added.connect(sigc::mem_fun(*this, &StreamOutputEffects::on_app_added))); + connections.push_back(pm->link_changed.connect(sigc::mem_fun(*this, &StreamOutputEffects::on_link_changed))); + + connect_filters(); + + gconnections.push_back(g_signal_connect(settings, "changed::output-device", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + const auto name = util::gsettings_get_string(settings, key); + + if (name.empty()) { + return; + } + + for (const auto& [serial, node] : self->pm->node_map) { + if (node.name == name) { + self->pm->output_device = node; + + if (g_settings_get_boolean(self->global_settings, "bypass") != 0) { + g_settings_set_boolean(self->global_settings, "bypass", 0); + + return; // filter connected through update_bypass_state + } + + self->set_bypass(false); + + break; + } + } + }), + this)); + + gconnections.push_back(g_signal_connect(settings, "changed::plugins", + G_CALLBACK(+[](GSettings* settings, char* key, gpointer user_data) { + auto self = static_cast(user_data); + + if (g_settings_get_boolean(self->global_settings, "bypass") != 0) { + g_settings_set_boolean(self->global_settings, "bypass", 0); + + return; // filter connected through update_bypass_state + } + + self->set_bypass(false); + }), + this)); +} + +StreamOutputEffects::~StreamOutputEffects() { + disconnect_filters(); + + util::debug("destroyed"); +} + +void StreamOutputEffects::on_app_added(const NodeInfo node_info) { + const auto blocklist = util::gchar_array_to_vector(g_settings_get_strv(settings, "blocklist")); + + auto is_blocklisted = std::ranges::find(blocklist, node_info.application_id) != blocklist.end(); + + is_blocklisted = is_blocklisted || std::ranges::find(blocklist, node_info.name) != blocklist.end(); + + if (g_settings_get_boolean(global_settings, "process-all-outputs") != 0 && !is_blocklisted) { + pm->connect_stream_output(node_info.id); + } +} + +auto StreamOutputEffects::apps_want_to_play() -> bool { + for (const auto& link : pm->list_links) { + if (link.input_node_id == pm->ee_sink_node.id) { + if (link.state == PW_LINK_STATE_ACTIVE) { + return true; + } + } + } + + return false; +} + +void StreamOutputEffects::on_link_changed(const LinkInfo link_info) { + // We are not interested in the other link states + + if (link_info.state != PW_LINK_STATE_ACTIVE && link_info.state != PW_LINK_STATE_PAUSED) { + return; + } + + /* + If bypass is enabled do not touch the plugin pipeline + */ + + if (bypass) { + return; + } + + if (apps_want_to_play()) { + if (list_proxies.empty()) { + util::debug("At least one app linked to our device wants to play. Linking our filters."); + + connect_filters(); + } + } else { + int inactivity_timeout = g_settings_get_int(global_settings, "inactivity-timeout"); + + g_timeout_add_seconds(inactivity_timeout, GSourceFunc(+[](StreamOutputEffects* self) { + if (!self->apps_want_to_play() && !self->list_proxies.empty()) { + util::debug("No app linked to our device wants to play. Unlinking our filters."); + + self->disconnect_filters(); + } + + return G_SOURCE_REMOVE; + }), + this); + } +} + +void StreamOutputEffects::connect_filters(const bool& bypass) { + const auto output_device_name = util::gsettings_get_string(settings, "output-device"); + + // checking if the output device exists + + if (output_device_name.empty()) { + util::debug("No output device set. Aborting the link"); + + return; + } + + bool dev_exists = false; + + for (const auto& [serial, node] : pm->node_map) { + if (node.name == output_device_name) { + dev_exists = true; + + pm->output_device = node; + + break; + } + } + + if (!dev_exists) { + util::debug("The output device " + output_device_name + " is not available. Aborting the link"); + + return; + } + + const auto list = + (bypass) ? std::vector() : util::gchar_array_to_vector(g_settings_get_strv(settings, "plugins")); + + uint prev_node_id = pm->ee_sink_node.id; + uint next_node_id = 0U; + + // link plugins + + if (!list.empty()) { + for (const auto& name : list) { + if (!plugins.contains(name)) { + continue; + } + + if (!plugins[name]->connected_to_pw ? plugins[name]->connect_to_pw() : true) { + next_node_id = plugins[name]->get_node_id(); + + const auto links = pm->link_nodes(prev_node_id, next_node_id); + + for (auto* link : links) { + list_proxies.push_back(link); + } + + if (links.size() == 2U) { + prev_node_id = next_node_id; + } else { + util::warning(" link from node " + util::to_string(prev_node_id) + " to node " + + util::to_string(next_node_id) + " failed"); + } + } + } + + // checking if we have to link the echo_canceller probe to the output device + + for (const auto& name : list) { + if (!plugins.contains(name)) { + continue; + } + + if (name == tags::plugin_name::echo_canceller) { + if (plugins[name]->connected_to_pw) { + for (const auto& link : pm->link_nodes(pm->output_device.id, plugins[name]->get_node_id(), true)) { + list_proxies.push_back(link); + } + } + } + + plugins[name]->update_probe_links(); + } + } + + // link spectrum and output level meter + + for (const auto& node_id : {spectrum->get_node_id(), output_level->get_node_id()}) { + next_node_id = node_id; + + const auto links = pm->link_nodes(prev_node_id, next_node_id); + + for (auto* link : links) { + list_proxies.push_back(link); + } + + if (links.size() == 2U) { + prev_node_id = next_node_id; + } else { + util::warning(" link from node " + util::to_string(prev_node_id) + " to node " + util::to_string(next_node_id) + + " failed"); + } + } + + // waiting for the output device ports information to be available. + + int timeout = 0; + + while (pm->count_node_ports(pm->output_device.id) < 2) { + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + + timeout++; + + if (timeout > 10000) { // 10 seconds + util::warning("Information about the ports of the output device " + pm->output_device.name + " with id " + + util::to_string(pm->output_device.id) + " are taking to long to be available. Aborting the link"); + + return; + } + } + + // link output device + + next_node_id = pm->output_device.id; + + const auto links = pm->link_nodes(prev_node_id, next_node_id); + + for (auto* link : links) { + list_proxies.push_back(link); + } + + if (links.size() < 2U) { + util::warning(" link from node " + util::to_string(prev_node_id) + " to output device " + + util::to_string(next_node_id) + " failed"); + } +} + +void StreamOutputEffects::disconnect_filters() { + std::set link_id_list; + + const auto selected_plugins_list = + (bypass) ? std::vector() : util::gchar_array_to_vector(g_settings_get_strv(settings, "plugins")); + + for (const auto& plugin : plugins | std::views::values) { + for (const auto& link : pm->list_links) { + if (link.input_node_id == plugin->get_node_id() || link.output_node_id == plugin->get_node_id()) { + link_id_list.insert(link.id); + } + } + + if (plugin->connected_to_pw) { + if (std::ranges::find(selected_plugins_list, plugin->name) == selected_plugins_list.end()) { + util::debug("disconnecting the " + plugin->name + " filter from PipeWire"); + + plugin->disconnect_from_pw(); + } + } + } + + for (const auto& link : pm->list_links) { + if (link.input_node_id == spectrum->get_node_id() || link.output_node_id == spectrum->get_node_id() || + link.input_node_id == output_level->get_node_id() || link.output_node_id == output_level->get_node_id()) { + link_id_list.insert(link.id); + } + } + + for (const auto& id : link_id_list) { + pm->destroy_object(static_cast(id)); + } + + pm->destroy_links(list_proxies); + + list_proxies.clear(); + + // remove_unused_filters(); +} + +void StreamOutputEffects::set_bypass(const bool& state) { + bypass = state; + + disconnect_filters(); + + connect_filters(state); +} diff --git a/src/tags_plugin_name.cpp b/src/tags_plugin_name.cpp new file mode 100644 index 0000000..639f4d9 --- /dev/null +++ b/src/tags_plugin_name.cpp @@ -0,0 +1,52 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "tags_plugin_name.hpp" + +namespace tags::plugin_name { + +auto get_translated() -> std::map { + std::map translated = {{autogain, _("Autogain")}, + {bass_enhancer, _("Bass Enhancer")}, + {bass_loudness, _("Bass Loudness")}, + {compressor, _("Compressor")}, + {convolver, _("Convolver")}, + {crossfeed, _("Crossfeed")}, + {crystalizer, _("Crystalizer")}, + {deesser, _("Deesser")}, + {delay, _("Delay")}, + {echo_canceller, _("Echo Canceller")}, + {equalizer, _("Equalizer")}, + {exciter, _("Exciter")}, + {filter, _("Filter")}, + {gate, _("Gate")}, + {limiter, _("Limiter")}, + {loudness, _("Loudness")}, + {maximizer, _("Maximizer")}, + {multiband_compressor, _("Multiband Compressor")}, + {multiband_gate, _("Multiband Gate")}, + {pitch, _("Pitch")}, + {reverb, _("Reverberation")}, + {rnnoise, _("Noise Reduction")}, + {stereo_tools, _("Stereo Tools")}}; + + return translated; +} + +} // namespace tags::plugin_name \ No newline at end of file diff --git a/src/test_signals.cpp b/src/test_signals.cpp new file mode 100644 index 0000000..33db2e7 --- /dev/null +++ b/src/test_signals.cpp @@ -0,0 +1,193 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "test_signals.hpp" + +namespace { + +void on_process(void* userdata, spa_io_position* position) { + auto* d = static_cast(userdata); + + const auto n_samples = position->clock.duration; + const auto rate = position->clock.rate.denom; + + if (n_samples == 0 || rate == 0) { + return; + } + + if (rate != d->ts->rate || n_samples != d->ts->n_samples) { + d->ts->rate = rate; + d->ts->n_samples = n_samples; + + d->ts->sine_phase = 0.0F; + } + + // util::warning("processing: " + util::to_string(n_samples)); + + auto* out_left = static_cast(pw_filter_get_dsp_buffer(d->out_left, n_samples)); + auto* out_right = static_cast(pw_filter_get_dsp_buffer(d->out_right, n_samples)); + + if (out_left == nullptr || out_right == nullptr) { + return; + } + + std::span left_out{out_left, out_left + n_samples}; + std::span right_out{out_right, out_right + n_samples}; + + for (uint n = 0U; n < n_samples; n++) { + float signal = 0.0F; + left_out[n] = 0.0F; + right_out[n] = 0.0F; + + switch (d->ts->signal_type) { + case TestSignalType::sine_wave: { + d->ts->sine_phase += 2.0F * std::numbers::pi_v * d->ts->sine_frequency / static_cast(rate); + + signal = 0.5F * std::sin(d->ts->sine_phase); + + break; + } + case TestSignalType::gaussian: { + signal = d->ts->white_noise(); + + break; + } + case TestSignalType::pink: { + break; + } + } + + if (d->ts->create_left_channel) { + left_out[n] = signal; + } + + if (d->ts->create_right_channel) { + right_out[n] = signal; + } + } + + if (d->ts->sine_phase > 2.0F * std::numbers::pi_v) { + d->ts->sine_phase -= 2.0F * std::numbers::pi_v; + } +} + +const struct pw_filter_events filter_events = {.process = on_process}; + +} // namespace + +TestSignals::TestSignals(PipeManager* pipe_manager) : pm(pipe_manager), random_generator(rd()) { + pf_data.ts = this; + + const auto* filter_name = "ee_test_signals"; + + pm->lock(); + + auto* props_filter = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_filter, PW_KEY_APP_ID, tags::app::id); + pw_properties_set(props_filter, PW_KEY_NODE_NAME, filter_name); + pw_properties_set(props_filter, PW_KEY_NODE_DESCRIPTION, "easyeffects_filter"); + pw_properties_set(props_filter, PW_KEY_NODE_DRIVER, "true"); + pw_properties_set(props_filter, PW_KEY_MEDIA_TYPE, "Audio"); + pw_properties_set(props_filter, PW_KEY_MEDIA_CATEGORY, "Source"); + pw_properties_set(props_filter, PW_KEY_MEDIA_ROLE, "DSP"); + // pw_properties_set(props_filter, PW_KEY_MEDIA_CLASS, tags::pipewire::media_class::output_stream); + + filter = pw_filter_new(pm->core, filter_name, props_filter); + + // left channel output + + auto* props_out_left = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_out_left, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_out_left, PW_KEY_PORT_NAME, "output_FL"); + pw_properties_set(props_out_left, "audio.channel", "FL"); + + pf_data.out_left = static_cast(pw_filter_add_port(filter, PW_DIRECTION_OUTPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, + sizeof(port), props_out_left, nullptr, 0)); + + // right channel output + + auto* props_out_right = pw_properties_new(nullptr, nullptr); + + pw_properties_set(props_out_right, PW_KEY_FORMAT_DSP, "32 bit float mono audio"); + pw_properties_set(props_out_right, PW_KEY_PORT_NAME, "output_FR"); + pw_properties_set(props_out_right, "audio.channel", "FR"); + + pf_data.out_right = static_cast(pw_filter_add_port( + filter, PW_DIRECTION_OUTPUT, PW_FILTER_PORT_FLAG_MAP_BUFFERS, sizeof(port), props_out_right, nullptr, 0)); + + if (pw_filter_connect(filter, PW_FILTER_FLAG_RT_PROCESS, nullptr, 0) < 0) { + using namespace std::string_literals; + + util::error(filter_name + " cannot connect the filter to PipeWire!"s); + } + + pm->sync_wait_unlock(); + + do { + node_id = pw_filter_get_node_id(filter); + + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } while (node_id == SPA_ID_INVALID); + + pw_filter_add_listener(filter, &listener, &filter_events, &pf_data); +} + +TestSignals::~TestSignals() { + util::debug("destroyed"); + + spa_hook_remove(&listener); + + pm->lock(); + + pw_filter_set_active(filter, false); + + pw_filter_disconnect(filter); + + pw_filter_destroy(filter); + + pm->sync_wait_unlock(); +} + +void TestSignals::set_state(const bool& state) { + sine_phase = 0.0F; + + if (state) { + for (const auto& link : pm->link_nodes(node_id, pm->ee_sink_node.id, false, false)) { + list_proxies.push_back(link); + } + } else { + pm->destroy_links(list_proxies); + + list_proxies.clear(); + } +} + +void TestSignals::set_frequency(const float& value) { + sine_frequency = value; + + sine_phase = 0.0F; +} + +auto TestSignals::white_noise() -> float { + const auto v = normal_distribution(random_generator); + + return (v > 1.0F) ? 1.0F : ((v < -1.0F) ? -1.0F : v); +} diff --git a/src/ui_helpers.cpp b/src/ui_helpers.cpp new file mode 100644 index 0000000..d5d74fb --- /dev/null +++ b/src/ui_helpers.cpp @@ -0,0 +1,218 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "ui_helpers.hpp" + +namespace { + +uint widget_serial = 0; + +std::locale user_locale; + +std::map map_ignore_filter_idle_add; + +} // namespace + +namespace ui { + +using namespace std::string_literals; + +void show_autohiding_toast(AdwToastOverlay* toast_overlay, + const std::string& text, + const uint& timeout, + const AdwToastPriority& priority) { + /* ONLY AVAILABLE FROM libAdwaita 1.2 + // Construct a custom label because we want it + // to be wrapped on reduced window width + auto custom_title = gtk_label_new(text.c_str()); + + // Set wrap properties + gtk_label_set_wrap(GTK_LABEL(custom_title), 1); + gtk_label_set_wrap_mode(GTK_LABEL(custom_title), PANGO_WRAP_WORD_CHAR); + */ + + // Construct AdwToast + auto* toast = adw_toast_new(""); + + // adw_toast_set_custom_title(toast, custom_title); + adw_toast_set_title(toast, text.c_str()); + + adw_toast_set_timeout(toast, timeout); + + adw_toast_set_priority(toast, priority); + + // Show AdwToast + adw_toast_overlay_add_toast(toast_overlay, toast); +} + +void show_fixed_toast(AdwToastOverlay* toast_overlay, const std::string& text, const AdwToastPriority& priority) { + show_autohiding_toast(toast_overlay, text, 0U, priority); +} + +void show_simple_message_dialog(GtkWidget* parent, const std::string& title, const std::string& descr) { + if (parent == nullptr) { + return; + } + + // Modal flag prevents interaction with other windows in the same application + auto* dialog = gtk_message_dialog_new(GTK_WINDOW(parent), + static_cast(GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL), + GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, "%s", title.c_str()); + + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", descr.c_str()); + + // Add custom button to hint the user to press ESC to destroy the dialog. + // This has been introduced because multiple GTK4 dialogs shown at + // the same time could have issues on Wayland and the only way to + // close the outer one is pressing ESC, the mouse click does not work. + gtk_dialog_add_button(GTK_DIALOG(dialog), _("Close (Press ESC)"), 0); + + // Destroy the dialog when the user responds to it + g_signal_connect(dialog, "response", G_CALLBACK(gtk_window_destroy), NULL); + + // Keep the dialog on top of the main window, or center the dialog over the main window + gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); + + /* Version with Adw.MessageDialog available from libAdwaita 1.2 + auto* dialog = adw_message_dialog_new(GTK_WINDOW(parent), title.c_str(), descr.c_str()); + + adw_message_dialog_add_response(ADW_MESSAGE_DIALOG(dialog), "close", "OK"); */ + + gtk_window_present(GTK_WINDOW(dialog)); +} + +auto parse_spinbutton_output(GtkSpinButton* button, const char* unit) -> bool { + auto* adjustment = gtk_spin_button_get_adjustment(button); + auto value = gtk_adjustment_get_value(adjustment); + auto precision = gtk_spin_button_get_digits(button); + + // format string: 0 = value, 1 = precision, 2 = unit + auto text = + fmt::format(ui::get_user_locale(), "{0:.{1}Lf}{2}", value, precision, ((unit != nullptr) ? " "s + unit : "")); + + gtk_editable_set_text(GTK_EDITABLE(button), text.c_str()); + + return true; +} + +auto parse_spinbutton_input(GtkSpinButton* button, double* new_value) -> int { + std::istringstream str(gtk_editable_get_text(GTK_EDITABLE(button))); + + str.imbue(ui::get_user_locale()); + + if (auto min = 0.0, max = 0.0; str >> *new_value) { + gtk_spin_button_get_range(button, &min, &max); + + *new_value = std::clamp(*new_value, min, max); + + return 1; + } + + return GTK_INPUT_ERROR; +} + +auto get_new_filter_serial() -> uint { + widget_serial++; + + return widget_serial; +} + +void set_ignore_filter_idle_add(const uint& serial, const bool& state) { + map_ignore_filter_idle_add[serial] = state; +} + +auto get_ignore_filter_idle_add(const uint& serial) -> bool { + return map_ignore_filter_idle_add[serial]; +} + +void save_user_locale() { + try { + user_locale = std::locale(""); + } catch (...) { + util::warning("We could not get the user locale in your system! Your locale configuration is broken!"); + + util::warning("Falling back to the C locale"); + } +} + +auto get_user_locale() -> std::locale { + return user_locale; +} + +void update_level(GtkLevelBar* w_left, + GtkLabel* w_left_label, + GtkLevelBar* w_right, + GtkLabel* w_right_label, + const float& left, + const float& right) { + if (!GTK_IS_LEVEL_BAR(w_left) || !GTK_IS_LABEL(w_left_label) || !GTK_IS_LEVEL_BAR(w_right) || + !GTK_IS_LABEL(w_right_label)) { + return; + } + + if (auto db_value = util::db_to_linear(left); left >= -99.0) { + if (db_value < 0.0) { + db_value = 0.0; + } else if (db_value > 1.0) { + db_value = 1.0; + } + + gtk_level_bar_set_value(w_left, db_value); + gtk_label_set_text(w_left_label, fmt::format("{0:.0f}", left).c_str()); + } else { + gtk_level_bar_set_value(w_left, 0.0); + gtk_label_set_text(w_left_label, "-99"); + } + + if (auto db_value = util::db_to_linear(right); right >= -99.0) { + if (db_value < 0.0) { + db_value = 0.0; + } else if (db_value > 1.0) { + db_value = 1.0; + } + + gtk_level_bar_set_value(w_right, db_value); + gtk_label_set_text(w_right_label, fmt::format("{0:.0f}", right).c_str()); + } else { + gtk_level_bar_set_value(w_right, 0.0); + gtk_label_set_text(w_right_label, "-99"); + } +} + +void append_to_string_list(GtkStringList* string_list, const std::string& name) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(string_list)); n++) { + if (gtk_string_list_get_string(string_list, n) == name) { + return; + } + } + + gtk_string_list_append(string_list, name.c_str()); +} + +void remove_from_string_list(GtkStringList* string_list, const std::string& name) { + for (guint n = 0U; n < g_list_model_get_n_items(G_LIST_MODEL(string_list)); n++) { + if (gtk_string_list_get_string(string_list, n) == name) { + gtk_string_list_remove(string_list, n); + + return; + } + } +} + +} // namespace ui diff --git a/src/util.cpp b/src/util.cpp new file mode 100644 index 0000000..a402e4a --- /dev/null +++ b/src/util.cpp @@ -0,0 +1,383 @@ +/* + * Copyright © 2017-2022 Wellington Wallace + * + * This file is part of EasyEffects. + * + * EasyEffects is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * EasyEffects is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EasyEffects. If not, see . + */ + +#include "util.hpp" + +namespace util { + +auto prepare_debug_message(const std::string& message, std::source_location location) -> std::string { + auto file_path = std::filesystem::path{location.file_name()}; + + std::string msg = "\t" + file_path.filename().string() + ":" + to_string(location.line()) + "\t" + message; + + return msg; +} + +void debug(const std::string& s, std::source_location location) { + g_debug(prepare_debug_message(s, location).c_str(), "%s"); +} + +void error(const std::string& s, std::source_location location) { + g_error(prepare_debug_message(s, location).c_str(), "%s"); +} + +void critical(const std::string& s, std::source_location location) { + g_critical(prepare_debug_message(s, location).c_str(), "%s"); +} + +void warning(const std::string& s, std::source_location location) { + g_warning(prepare_debug_message(s, location).c_str(), "%s"); +} + +void info(const std::string& s, std::source_location location) { + g_info(prepare_debug_message(s, location).c_str(), "%s"); +} + +void print_thread_id() { + std::cout << "thread id: " << std::this_thread::get_id() << std::endl; +} + +auto normalize(const float& x, const float& min, const float& max) -> float { + return (x - min) / (max - min); +} + +auto logspace(const float& start, const float& stop, const uint& npoints) -> std::vector { + std::vector output; + + if (stop <= start || npoints < 2) { + return output; + } + + auto log10_start = std::log10(start); + auto log10_stop = std::log10(stop); + + const float delta = (log10_stop - log10_start) / static_cast(npoints - 1); + + output.push_back(start); + + float v = log10_start; + + while (output.size() < npoints - 1) { + v += delta; + + output.push_back(std::pow(10.0F, v)); + } + + output.push_back(stop); + + return output; +} + +auto linspace(const float& start, const float& stop, const uint& npoints) -> std::vector { + std::vector output; + + if (stop <= start || npoints < 2) { + return output; + } + + const float delta = (stop - start) / static_cast(npoints - 1); + + output.push_back(start); + + float v = start; + + while (output.size() < npoints - 1) { + v += delta; + + output.push_back(v); + } + + output.push_back(stop); + + return output; +} + +auto linear_to_db(const float& amp) -> float { + if (amp >= minimum_linear_level) { + return 20.0F * std::log10(amp); + } + + return minimum_db_level; +} + +auto linear_to_db(const double& amp) -> double { + if (amp >= minimum_linear_d_level) { + return 20.0 * std::log10(amp); + } + + return minimum_db_d_level; +} + +auto db_to_linear(const float& db) -> float { + return std::exp((db / 20.0F) * std::log(10.0F)); +} + +auto db_to_linear(const double& db) -> double { + return std::exp((db / 20.0) * std::log(10.0)); +} + +auto db20_gain_to_linear(GValue* value, GVariant* variant, gpointer user_data) -> gboolean { + const gfloat v_linear = std::pow(10.0F, static_cast(g_variant_get_double(variant)) / 20.0F); + + g_value_set_float(value, v_linear); + + return 1; +} + +auto linear_gain_to_db20(const GValue* value, const GVariantType* expected_type, gpointer user_data) -> GVariant* { + const gdouble v_db = 20.0 * std::log10(static_cast(g_value_get_float(value))); + + return g_variant_new_double(v_db); +} + +auto db10_gain_to_linear(GValue* value, GVariant* variant, gpointer user_data) -> gboolean { + const gfloat v_linear = std::pow(10.0F, static_cast(g_variant_get_double(variant)) / 10.0F); + + g_value_set_float(value, v_linear); + + return 1; +} + +auto double_to_float(GValue* value, GVariant* variant, gpointer user_data) -> gboolean { + g_value_set_float(value, static_cast(g_variant_get_double(variant))); + + return 1; +} + +auto db20_gain_to_linear_double(GValue* value, GVariant* variant, gpointer user_data) -> gboolean { + const gdouble v_linear = std::pow(10.0, g_variant_get_double(variant) / 20.0); + + g_value_set_double(value, v_linear); + + return 1; +} + +auto linear_double_gain_to_db20(const GValue* value, const GVariantType* expected_type, gpointer user_data) + -> GVariant* { + const gdouble v_db = 20.0 * std::log10(g_value_get_double(value)); + + return g_variant_new_double(v_db); +} + +auto double_x10_to_int(GValue* value, GVariant* variant, gpointer user_data) -> gboolean { + g_value_set_int(value, static_cast(g_variant_get_double(variant) * 10.0)); + + return 1; +} + +auto ms_to_ns(GValue* value, GVariant* variant, gpointer user_data) -> gboolean { + g_value_set_uint64(value, static_cast(g_variant_get_double(variant) * 1000000.0)); + + return 1; +} + +auto remove_filename_extension(const std::string& basename) -> std::string { + return basename.substr(0, basename.find_last_of('.')); +} + +auto gchar_array_to_vector(gchar** gchar_array, const bool free_data) -> std::vector { + std::vector output; + + if (gchar_array != nullptr) { + for (int n = 0; gchar_array[n] != nullptr; n++) { + output.push_back(gchar_array[n]); + } + } + + if (free_data) { + g_strfreev(gchar_array); + } + + return output; +} + +auto make_gchar_pointer_vector(const std::vector& input) -> std::vector { + std::vector output; + + output.reserve(input.size()); + + for (const auto& v : input) { + output.push_back(v.c_str()); + } + + output.push_back(nullptr); // char* arrays passed to g_settings_set_strv must have a null pointer as the last element + + return output; +} + +auto gsettings_get_color(GSettings* settings, const char* key) -> GdkRGBA { + GdkRGBA rgba; + std::array color{}; + + g_settings_get(settings, key, "(dddd)", &color[0], &color[1], &color[2], &color[3]); + + rgba.red = static_cast(color[0]); + rgba.green = static_cast(color[1]); + rgba.blue = static_cast(color[2]); + rgba.alpha = static_cast(color[3]); + + return rgba; +} + +auto gsettings_get_string(GSettings* settings, const char* key) -> std::string { + auto* s = g_settings_get_string(settings, key); + + std::string output = s; + + g_free(s); + + return output; +} + +auto add_new_blocklist_entry(GSettings* settings, const std::string& name) -> bool { + if (name.empty()) { + return false; + } + + using namespace std::string_literals; + + auto list = util::gchar_array_to_vector(g_settings_get_strv(settings, "blocklist")); + + if (std::any_of(list.cbegin(), list.cend(), [&](const auto& str) { return str == name; })) { + util::debug("entry already present in the list"); + + return false; + } + + list.push_back(name); + + g_settings_set_strv(settings, "blocklist", util::make_gchar_pointer_vector(list).data()); + + util::debug("new entry has been added to the blocklist"); + + return true; +} + +void remove_blocklist_entry(GSettings* settings, const std::string& name) { + using namespace std::string_literals; + + auto list = util::gchar_array_to_vector(g_settings_get_strv(settings, "blocklist")); + + list.erase(std::remove_if(list.begin(), list.end(), [=](const auto& a) { return a == name; }), list.end()); + + g_settings_set_strv(settings, "blocklist", util::make_gchar_pointer_vector(list).data()); + + util::debug("an entry has been removed from the blocklist"); +} + +void idle_add(std::function cb) { + struct Data { + std::function cb; + }; + + auto d = new Data(); + + d->cb = cb; + + g_idle_add((GSourceFunc) + + [](Data* d) { + if (d == nullptr) { + return G_SOURCE_REMOVE; + } + + if (d->cb == nullptr) { + return G_SOURCE_REMOVE; + } + + d->cb(); + + delete d; + + return G_SOURCE_REMOVE; + }, + d); +} + +void generate_tags(const int& N, const std::string& start_string, const std::string& end_string) { + size_t max_tag_size = 0; + std::string body = "{"; + std::string msg = "constexpr char tag_array[]["; + + for (int n = 0; n < N; n++) { + auto n_str = to_string(n); + + auto tag = "\"" + start_string + n_str + end_string + "\""; + + body += "{" + tag + "}"; + + if (n < N - 1) { + body += ", "; + } + + max_tag_size = (tag.size() > max_tag_size) ? tag.size() : max_tag_size; + } + + msg += to_string(max_tag_size) + "] = " + body + "};"; + + warning(msg); +} + +auto get_files_name(std::filesystem::path dir_path, const std::string& ext) -> std::vector { + std::vector names; + + for (std::filesystem::directory_iterator it{dir_path}; it != std::filesystem::directory_iterator{}; ++it) { + if (std::filesystem::is_regular_file(it->status())) { + if (it->path().extension() == ext) { + names.push_back(it->path().stem().string()); + } + } + } + + return names; +} + +void reset_all_keys_except(GSettings* settings, const std::vector& blocklist) { + GSettingsSchema* schema; + gchar** keys; + + g_object_get(settings, "settings-schema", &schema, nullptr); + + keys = g_settings_schema_list_keys(schema); + + for (int i = 0; keys[i]; i++) { + if (std::ranges::find(blocklist, keys[i]) == blocklist.end()) { + g_settings_reset(settings, keys[i]); + } + } + + g_settings_schema_unref(schema); + g_strfreev(keys); +} + +auto str_contains(const std::string& haystack, const std::string& needle) -> bool { + // This helper indicates if the needle is contained in the haystack string, + // but the empty needle will NOT return true. + + // Instead .find method of C++ string class returns a size_type different + // than std::string::npos when the needle is empty indicating that an empty + // string IS CONTAINED in the haystack. That's pointless, so here is this helper. + + if (needle.empty()) { + return false; + } + + return (haystack.find(needle) != std::string::npos); +} + +} // namespace util diff --git a/util/NEWS.yaml b/util/NEWS.yaml new file mode 100644 index 0000000..f4c28ce --- /dev/null +++ b/util/NEWS.yaml @@ -0,0 +1,312 @@ +--- +Version: UNRELEASED_VERSION +Date: UNRELEASED_DATE + +Description: +- Features∶ +- + +- Bug fixes∶ +- + +- Other notes∶ +- + +--- +Version: 6.2.8 +Date: 2022-07-25 + +Description: +- Features∶ +- Improved translations + +- Bug fixes∶ +- Fixed a bug where EasyEffects could crash when closing its window while effects were being applied. + +- Other notes∶ + +--- +Version: 6.2.7 +Date: 2022-07-18 + +Description: +- Features∶ +- The bypass state can be saved to the preset file. The reasons why this was done can be seen at https://github.com/wwmm/easyeffects/issues/1039 +- The preset autoloading code compatibility with usb devices has been improved. +- A dialog is shown to the user when a preset fails to load or a preset/impulse file fails to be imported. +- The SideChain Gate plugin from `Linux Studio Plugins` is now used instead of the one from Calf Studio. + +- Bug fixes∶ +- EasyEffects should not crash anymore when the user locale is not properly configured. +- A workaround was implemented in our icon to deal with the lack of proper SVG support in QT. + +- Other notes∶ + +--- +Version: 6.2.6 +Date: 2022-06-22 + +Description: +- Features∶ +- When effects are disable to an application we now set its target metadata to null. This will allow the media session + manager (wireplumber) to properly move the stream to a new device. +- A new configuration option was added. It allows EasyEffects to ignore streams whose purpose is to monitor sink + devices. This will help to fix some of problems our users were having when using OBS. +- The code that shows the stream sample format has been improved +- The rnnoise library is now optional. This should help package maintainers to build + a Debian package. See https://github.com/wwmm/easyeffects/issues/1000 for more information. +- Our logs now show the source code line where the messages are being printed +- Bug fixes∶ +- The "enable effects" checkbox in our window was not being updated when third party programs like pavucontrol + moved the stream away from our virtual devices. This should be fixed now. +- Fixed a crash that could happen when the maximum autogain history was changed. +- Avoid crashes when pw-mididump is running + +--- +Version: 6.2.5 +Date: 2022-04-30 + +Description: +- Features∶ +- The interface of the pitch plugin was improved +- Our application icon is now compatible with desktops that uses QT +- Our blocklist code will use the `application.id` tag if the stream sets it +- In order to avoid problems with the mouse scroll the entries in the applications list shown in our `Players/Recorders` tab do not show a volume scale anymore. More details about the problem and the solution for it can be found on https://github.com/wwmm/easyeffects/issues/1211 and https://github.com/wwmm/easyeffects/issues/1427 +- When no application is available for display in the `Players/Recorders` a message will be shown to the user +- Many translation updates +- Bug fixes∶ +- Fixed a bug where EasyEffeects crashed when the number of points displayed in the spectrum was changed while our pipeline was active and the spectrum widget was visible +- The pipeline latency value displayed in our window could be wrong in some situations. This was fixed. + +--- +Version: 6.2.4 +Date: 2022-03-07 + +Description: +- Features∶ +- There is a new setting allowing the user to select an inactivity timeout for the pipeline. When no client is playing to or recording from our devices the filters will be unlinked after the timeout is reached. This is done to make sure we do not waste CPU power processing silence. +- The autogain plugin now allows the user to select which of the three loudness are used to calculate the geometric mean. +- The autogain plugin now allows the maximum history to be set and does not use `libebur128` histogram mode anymore. This should avoid the cases where the `Integrated` loudness gets stuck forever in the same value. +- EasyEffects icon has been updated in a way that should make it visible in QT desktops. +- Bug fixes∶ +- The command line option that returns the global bypass state is working again. + +--- +Version: 6.2.3 +Date: 2022-01-29 + +Description: +- Features∶ +- The crossfeed filter should deal better with PipeWire's dynamic latency switches. Jumps in volume level should not happen anymore in these situations. + +- Bug fixes∶ + +- Fixed a bug that prevented mono microphones from properly working with EasyEffects + +--- +Version: 6.2.2 +Date: 2022-01-27 + +Description: +- Features∶ +- Support for the next PipeWire release `0.3.44` +- The autogain filter should deal better with PipeWire's dynamic latency switches. Jumps in volume level should not happen anymore in these situations. +- We added an option that allows the volume and mute state of our virtual devices to be reset when EasyEffects starts. It should help with the cases were our devices are muted by the audio server for unknown reasons. +- Better support for computer suspending. +- Updated translations + +- Bug fixes∶ + +- Fixed a bug where trying to create an autoloading profile without having presets caused the application to crash. + +--- +Version: 6.2.1 +Date: 2022-01-05 + +Description: +- Bug fixes∶ +- Fixed a bug where setting a equalizer band `quality` to `zero` would lead to an application crash. + +--- +Version: 6.2.0 +Date: 2022-01-04 + +Description: +- Features∶ +- LibAdwaita is used to create some parts of our window and for handling the switching between dark and light themes. +- The settings menu has been redesigned using LibAdwaita widgets. +- Equalizer APO preset import feature has been improved to apply not only the Bell filter, but also other supported ones (at the moment only the Bandpass filter is not available in LSP plugin). +- The `Reset All Settings` function in our menu should work in Flatpak now. +- We have a new option that allows the user to disable our menus `autohide`. This may help to workaround some bugs Popover menus currently have on gtk4. + +- Bug fixes∶ + +- More robust parsing to import APO presets saved with comma as thousands separator in central frequency band. + +- Other notes∶ + +- The fmt library is a new dependency https://github.com/fmtlib/fmt. At least while the c++ compilers do not implement its features. This is expected to happen in the next years. +- GTKMM and GLIBMM are not a dependency anymore. We now use gtk4 directly. + +--- +Version: 6.1.5 +Date: 2021-11-17 + +Description: +- Features∶ +- It is now possible to combine impulse responses in the Convolver interface. A new impulse file is generated and it should be visible in the impulse list. +- Improved `x axis` drawings in our plots. Now the number of labels is adjusted dynamically depending on our window width. +- The documentation has been updated reflecting the new EasyEffects features. Old references about PulseEffects have been removed. The documentation button has been added in the menu section. + +- Bug fixes∶ + +- When a spinbutton is filled with an out of range value, now it is updated with the lowest/highest value rather than resetting to the previous one. +- The application window now remembers the maximized state and restores it on the next opening event. + +- Other notes∶ + +- The `tbb` library is a new dependency https://www.threadingbuildingblocks.org + +--- +Version: 6.1.4 +Date: 2021-10-16 + +Description: +- Features∶ +- The Limiter and the Multiband Compressor plugins can now use an optional external sidechain. +- The Autogain plugin now allows the user to select which Loudness is used as reference for the volume correction. +- The APO Profile Import feature of Equalizer plugin now parses the "Pre Amplification" parameter. +- Optional Cubic Volume can be enabled in General Settings. + +- Bug fixes∶ + +- The Spectrum plugin was supposed to enter passthrough whenever it was not visible, but this was happening only when our window was closed. +- Improved support for Assistive Technology. +- The probes used in some filters like the Compressor and the Limiter were not being relinked after changing the order of the plugins in the pipeline. It should be working now. + +--- +Version: 6.1.3 +Date: 2021-10-03 + +Description: +- Features∶ +- PipeWire monitor streams are now excluded and removed from the applications list. + +- Bug fixes∶ + +- Hopefully crashes like the one reported at https://github.com/wwmm/easyeffects/issues/1172 are fixed. +- Prevented a case in which Spectrum was crashing. +- Pavucontrol is not added anymore to input applications list on systems with localization different than English. + +--- +Version: 6.1.2 +Date: 2021-09-20 + +Description: +- Features∶ +- Improved compatibility with WirePlumber. This is needed to run on systems that decided to use it instead of the built-in PipeWire session manager. More information at https://github.com/wwmm/easyeffects/issues/1144. + +--- +Version: 6.1.1 +Date: 2021-09-17 + +Description: +- Features∶ +- When trying to add an autoloading profile for a device already in the list its target preset will be updated. This way we can change the profile preset without having to remove and recreating it. +- The preset autoloading support implementation was redesigned again. It should work on more hardware now. For more information see https://github.com/wwmm/easyeffects/issues/1051. +- If the Limiter or the Maximizer are set in the last position of the plugin stack, new plugins are added at the second to last position in order to prevent hardware damage on eventually high output level. +- Removing an application from the blocklist, its previous enabled state is restored. + +- Bug fixes∶ + +- Sometimes when removing imported models from the noise reduction plugin the current used model was not properly updated. This should be fixed now. +- When editing presets files in an external editor, duplicated entries won't be shown in our presets menu. +- Now the blocklist is correctly set when switching presets. +- Now the status of the global bypass button is correctly updated when changing plugin stack. +- Missing icons on the system should not be shown inside the application info UI (if an application icon could not be shown even if you're sure it's correctly installed, please open an issue). +- Some icons not showing in Plasma DE with Breeze icon theme should appear now. + +--- +Version: 6.1.0 +Date: 2021-08-17 + +Description: +- Features∶ +- Updated Chinese translation. +- Updated Italian translation. +- Added support for the compressor parameter `Boost Amount` +- The multiband compressor plugin now uses the stereo multiband compressor plugin from Linux Studio Plugins instead of the one from Calf Studio. +- The limiter plugin now uses the stereo limiter plugin from Linux Studio Plugins instead of the one from Calf Studio. +- LV2 filters now are spawned in PipeWire graph only when loaded the first time. Once loaded, they remain connected until EasyEffects shutdown. + +- Bug fixes∶ + +- The echo canceller sampling rate is now properly set. +- The threshold parameter from the deesser plugin is now saved to the preset file. +- Improved band splitting for crystalizer with new default intensity values. +- Depending on the input gain or output gain values the corresponding level bars could not be aligned. +- When adding more equalizer bands they are set to `Bell` instead of `Off`. +- Equalizer APO presets loading is now working properly on locales different than C. +- Improved linking management between port filter nodes in PipeWire. +- The crystalizer plugin signal amplification was too high before. It should be within more reasonable levels now. + +--- +Version: 6.0.3 +Date: 2021-07-16 + +Description: +- Features∶ +- Improved the resampler used in the plugins that require one(like the rnnoise plugin) +- Updated translations + +- Bug fixes∶ + +- Setting multiple autoloading presets should be fine now +- Transient windows are now properly set for some plugins dialogs +- The convolver impulse response menu was improved to workaround an issue where the impulse files was not loaded when only one was available in the menu, see https://github.com/wwmm/easyeffects/issues/1011 +- Fixed a bug that could make the pitch plugin to not be properly initialized +- The saturation warning should not displace its neighbor widgets anymore +- Fixed the locale in a few widgets +- Fixed wrong alignment in a few widgets + +--- +Version: 6.0.2 +Date: 2021-07-11 + +Description: +- Features∶ +- The Loudness plugin is being used again for the reasons described at https://github.com/wwmm/easyeffects/issues/820. This means that http://drobilla.net/plugins/mda/Loudness is an optional dependency again. + +- Bug fixes∶ + +- Fixed a segmentation fault that happened when optional dependencies were not installed + +--- +Version: 6.0.1 +Date: 2021-07-09 + +Description: +- Features∶ +- Improved equalizer interface. +- Now we use a sidechain LSP compressor that allows the user to select and external source as the sidechain input. +- We now support the LSP compressor `Boosting` mode. +- When `split-channels` is enabled in the equalizer the imported APO preset will be applied only to the channel being visualized in the window. This will allow to import different presets for each channel instead of just settings the same values to both. + +- Bug fixes∶ + +- Fixed some segmentation faults that could happen when creating a preset autoloading profile or removing presets + +--- +Version: 6.0.0 +Date: 2021-07-07 + +Description: +- Features∶ +- This is one of the biggest releases that I have ever made. The amount of changes is so big that it is hard to talk about everything here. +- The following are just the most import ones. People interested on the journey that got us here can take a look at https://github.com/wwmm/easyeffects/issues/904 and https://github.com/wwmm/easyeffects/issues/874. +- The application and its repository have been renamed from PulseEffects to `EasyEffects` +- gtkmm3 was replaced by gtkmm4 +- Gstreamer was replaced by native PipeWire filters. +- Many features were reimplemented from scratch. The preset autoloading is one example. Another remarkable change will be seen in the plugins selection menu. Now the user can show in the window only the plugins that he/she wants to use. +- Boost is no longer a dependency. The price paid for that was a little change in our presets structures. With some patience it is possible to edit PulseEffects presets in a text editor and make them work in EasyEffects. Hopefully someone will come up with a script for this in the feature. +- New libraries are being used and some of the librarires that were optional before are now required diff --git a/util/autobuild.sh b/util/autobuild.sh new file mode 100755 index 0000000..ebf070c --- /dev/null +++ b/util/autobuild.sh @@ -0,0 +1,148 @@ +#!/usr/bin/env bash +# This ugly script helps to build a new version of EasyEffects +# Currently for DEB package only +# Author: Mikhail Novosyolov + +pkg_name="easyeffects" +git_upstream_url="https://github.com/wwmm/easyeffects.git" +stdate="$(date +%s)" +day_name="$(env LANG=c date --date="@${stdate}" +%a)" +month_name="$(env LANG=c date --date="@${stdate}" +%b)" +year="$(env LANG=c date --date="@${stdate}" +%Y)" +day_month="$(env LANG=c date --date="@${stdate}" +%d)" +time="$(env LANG=c date --date="@${stdate}" +%H:%m:%S)" +timezone="$(env LANG=c date --date="@${stdate}" +%z)" + +dir_start="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +if [ "$(basename "${dir_start}")" = 'util' ]; then + cd .. +fi +dir0="$(pwd)" + +echo_help(){ + echo "Usage: nv|nw|new_version, ppa, lc|local_test, check_fuzzy|check_fuzzy_po|cf, full" +} + +git_sync_upstream(){ + if ! git remote -v | grep -q "$git_upstream_url"; then + git remote add upstream "$git_upstream_url" + fi + + git fetch upstream + + # git merge returns 0 only if merge was successful + if git merge upstream/master + then + : + else + echo "" + echo "Merge conflicts! Cannot continue!" + echo "" + exit 1 + fi +} + +debian_changelog_new_entry(){ + if [ ! -f debian/changelog.tpl ]; then + echo "No debian/changelog.tpl, cannot continue!" + exit 1 + fi + if [ -z "$new_version" ]; then echo "new_version is empty"; exit 1; fi + cat debian/changelog.tpl | \ + sed "s/%new_version%/${new_version}/g" | \ + sed "s/%day_name%/${day_name}/g" | \ + sed "s/%day_month%/${day_month}/g" | \ + sed "s/%month_name%/${month_name}/g" | \ + sed "s/%year%/${year}/g" | \ + sed "s/%time%/${time}/g" | \ + sed "s/%timezone%/${timezone}/g" | \ + tee -a "${dir0}/debian/changelog.new" + mv debian/changelog debian/changelog.old + echo " " >> debian/changelog.new + cat debian/changelog.new debian/changelog.old > debian/changelog + rm -f debian/changelog.new debian/changelog.old +} + +check_fuzzy_po(){ + for lang in ru + do + if grep -q "^#, fuzzy" "po/${lang}.po" + then + read -p "Fuzzies FOUND in localization ${lang}" + else + echo "No fuzzies found in localization ${lang}" + fi + + if grep -q "^#, fuzzy" "help/${lang}/${lang}.po" + then + read -p "Fuzzies FOUND in help ${lang}" + echo "No fuzzies found in help ${lang}" + else + echo "No fuzzies found in help ${lang}" + fi + done +} + +new_version(){ + # env USCAN=0 util/autobuild.sh + if [ ! "$USCAN" = '0' ] + then + if env LANG=c uscan | grep -qi 'Newer package available'; then + new_version="$(env LANG=c uscan --no-download | grep 'Newest version of' | awk -F ', ' '{print $1}' | awk -F ' ' '{print $NF}')" + fi + else + : + fi + git_sync_upstream + git commit -m "Updated to ${new_version} (autobuild)" debian/changelog + debian_changelog_new_entry + check_fuzzy_po +} + +ppa(){ + pushd debian + ./build-ppa.sh + popd +} + +git_push(){ + git push +} + +local_test(){ + dpkg-buildpackage + last_version="$(head -n 1 debian/changelog | tr -d "()" | awk -F ' ' '{print $2}')" + sudo apt install ../*${pkg_name}*${last_version}*.deb -y && \ + if easyeffects + then return 0 + else return 1 + fi + debian/rules clean +} + +case "$1" in + nv|nw|new_version ) + new_version + ;; + ppa ) + ppa + ;; + full ) + new_version + if local_test; then + ppa + git_push + fi + ;; + lc|local_test ) + #new_version + local_test + ;; + check_fuzzy|check_fuzzy_po|cf ) + check_fuzzy_po + ;; + * ) + echo "Current dir is: $(pwd) ." + echo_help + ;; +esac diff --git a/util/changes_since_last_release.sh b/util/changes_since_last_release.sh new file mode 100755 index 0000000..7307f89 --- /dev/null +++ b/util/changes_since_last_release.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# using git log to view the changes that have been done since the tag given as argument + +read -r -e -p "Write the last release version(example 6.2.6): " LAST_RELEASE + +echo "" +echo "Changes done since $LAST_RELEASE:" +echo "" + +git log v$LAST_RELEASE...HEAD --pretty=format:'%H %s' \ No newline at end of file diff --git a/util/crystalizer.py b/util/crystalizer.py new file mode 100755 index 0000000..221120a --- /dev/null +++ b/util/crystalizer.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +import numpy as np +import matplotlib.pyplot as plt +import scipy.io.wavfile as wavefile + +rate, wave = wavefile.read('test.wav') + +wave_y = wave[14000:15000] +wave_x = np.arange(wave_y.size) + +t = wave_x +original = wave_y + +standard = np.copy(original) +deriv2 = np.zeros(original.size) + +intensity = 2.0 + +# the boundaries are better handled in the plugin code + +for n in range(original.size): + if n > 0 and n < original.size - 1: + deriv2[n] = original[n + 1] - 2 * original[n] + original[n - 1] + elif n == 0: + deriv2[0] = original[n + 1] - 2 * original[n] + original[n] + elif n == original.size - 1: + deriv2[n] = original[n] - 2 * original[n] + original[n - 1] + +for n in range(standard.size): + standard[n] -= intensity * deriv2[n] + +aggressive = np.copy(standard) + +if intensity >= 1: + ndivs = 1000 + gain = np.linspace(1, intensity, ndivs) + dv = 0.5 / ndivs + + for n in range(standard.size): + v = aggressive[n] + + idx = int(np.floor(np.fabs(v) / dv)) + + if idx < 0: + idx = 0 + elif idx > gain.size: + idx = gain.size - 1 + + aggressive[n] = v * gain[idx] + + +fig = plt.figure() + +plt.plot(t, original, 'bo-', markersize=4, label='original') +plt.plot(t, standard, 'ro-', markersize=4, label='standard') +plt.plot(t, aggressive, 'go-', markersize=4, label='aggressive') + +fig.legend() + +plt.xlabel('Arbitrary Time', fontsize=18) +plt.ylabel('Waveform', fontsize=18) +plt.grid() + +plt.show() diff --git a/util/environmental_variables.sh b/util/environmental_variables.sh new file mode 100755 index 0000000..0c39629 --- /dev/null +++ b/util/environmental_variables.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +export GSETTINGS_SCHEMA_DIR=../../data/schemas/ +export G_MESSAGES_DEBUG=easyeffects +export ASAN_OPTIONS="detect_stack_use_after_return=1:check_initialization_order=1" +export LSAN_OPTIONS="print_suppressions=true:suppressions=../../util/sanitizer.supp" + +alias ee_valgrind='valgrind --suppressions=/usr/share/gtk-4.0/valgrind/gtk.supp --suppressions=/usr/share/glib-2.0/valgrind/glib.supp --leak-check=full --show-leak-kinds=definite' diff --git a/util/flatpak/com.github.wwmm.easyeffects.json b/util/flatpak/com.github.wwmm.easyeffects.json new file mode 100644 index 0000000..d390a24 --- /dev/null +++ b/util/flatpak/com.github.wwmm.easyeffects.json @@ -0,0 +1,98 @@ +{ + "id": "com.github.wwmm.easyeffects", + "runtime": "org.gnome.Platform", + "runtime-version": "42", + "sdk": "org.gnome.Sdk", + "command": "easyeffects", + "finish-args": [ + "--share=ipc", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri", + "--filesystem=xdg-run/pipewire-0:ro", + "--env=LV2_PATH=/app/lib/lv2:/app/extensions/Plugins/lv2" + ], + "cleanup": [ + "*.a", + "*.h", + "*.la", + "/bin/analyseplugin", + "/bin/applyplugin", + "/bin/listplugins", + "/include", + "/lib/pkgconfig", + "/lib/python*", + "/share/info" + ], + "add-extensions": { + "org.freedesktop.LinuxAudio.Plugins": { + "directory": "extensions/Plugins", + "version": "21.08", + "add-ld-path": "lib", + "merge-dirs": "lv2", + "subdirectories": true, + "no-autodownload": true + }, + "org.freedesktop.LinuxAudio.Plugins.LSP": { + "directory": "extensions/Plugins/LSP", + "version": "21.08", + "add-ld-path": "lib", + "merge-dirs": "lv2", + "autodelete": false, + "subdirectories": true + }, + "org.freedesktop.LinuxAudio.Plugins.ZamPlugins": { + "directory": "extensions/Plugins/ZamPlugins", + "version": "21.08", + "add-ld-path": "lib", + "merge-dirs": "lv2", + "autodelete": false, + "subdirectories": true + }, + "org.freedesktop.LinuxAudio.Plugins.MDA": { + "directory": "extensions/Plugins/MDA", + "version": "21.08", + "add-ld-path": "lib", + "merge-dirs": "lv2", + "autodelete": false, + "subdirectories": true + } + }, + "modules": [ + { + "name": "easyeffects", + "buildsystem": "meson", + "sources": [ + { + "type": "dir", + "path": "../../" + }, + { + "type": "file", + "path": "easyeffects-wrapper.sh" + }, + { + "type": "patch", + "path": "patch/easyeffects/002-fix-desktop-file.patch" + }, + { + "type": "patch", + "path": "patch/easyeffects/0001-Background-portal-support-for-autostart-and-shutdown.patch" + }, + { + "type": "shell", + "commands": [ + "install -Dvm 755 easyeffects-wrapper.sh $FLATPAK_DEST/bin/easyeffects-wrapper" + ] + } + ], + "post-install": [ + "install -Dm644 -t $FLATPAK_DEST/share/licenses/$FLATPAK_ID ../LICENSE.md", + "mkdir -pm755 $FLATPAK_DEST/extensions/Plugins" + ], + "modules": [ + "easyeffects-modules.json" + ] + } + ] +} \ No newline at end of file diff --git a/util/flatpak/easyeffects-modules.json b/util/flatpak/easyeffects-modules.json new file mode 100644 index 0000000..3c57a49 --- /dev/null +++ b/util/flatpak/easyeffects-modules.json @@ -0,0 +1,297 @@ +{ + "name": "easyeffects-modules", + "modules": [ + { + "name": "libsigc++", + "buildsystem": "meson", + "config-opts": [ + "-Dbuild-examples=false" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/libsigc++/3.2/libsigc++-3.2.0.tar.xz", + "sha256": "8cdcb986e3f0a7c5b4474aa3c833d676e62469509f4899110ddf118f04082651", + "x-checker-data": { + "type": "gnome", + "name": "libsigc++", + "stable-only": true + } + } + ], + "cleanup": [ + "/lib/sigc++*" + ] + }, + { + "name": "libebur128", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DBUILD_STATIC_LIBS=OFF", + "-DCMAKE_INSTALL_LIBDIR=lib" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/jiixyj/libebur128.git", + "tag": "v1.2.6", + "commit": "67b33abe1558160ed76ada1322329b0e9e058b02", + "x-checker-data": { + "type": "git", + "tag-pattern": "^v([\\d.]+)" + } + } + ], + "post-install": [ + "install -Dm644 -t $FLATPAK_DEST/share/licenses/libebur128 COPYING" + ] + }, + { + "name": "zita-convolver", + "no-autogen": true, + "subdir": "source", + "make-install-args": [ + "PREFIX=${FLATPAK_DEST}", + "LIBDIR=${FLATPAK_DEST}/lib" + ], + "sources": [ + { + "type": "archive", + "url": "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/zita-convolver-4.0.3.tar.bz2", + "sha512": "62d7841757f10c094e43ed755e187f947c5743f302ed2a1ee6064a850c18921466f4505d8a2a7b3ad23619db7f1ad7307e1dfb2e8a1e7685e60ece2ffff4f6ca" + }, + { + "type": "patch", + "path": "patch/zita-convolver/0001-Fix-makefile.patch" + } + ], + "modules": [ + "shared-modules/linux-audio/fftw3f.json", + "shared-modules/linux-audio/lv2.json", + "shared-modules/linux-audio/lilv.json", + { + "name": "bs2b", + "rm-configure": true, + "sources": [ + { + "type": "archive", + "url": "https://downloads.sourceforge.net/sourceforge/bs2b/libbs2b-3.1.0.tar.gz", + "sha256": "6aaafd81aae3898ee40148dd1349aab348db9bfae9767d0e66e0b07ddd4b2528" + }, + { + "type": "script", + "dest-filename": "autogen.sh", + "commands": [ + "cp -p /usr/share/automake-*/config.{sub,guess} build-aux", + "autoreconf -vfi" + ] + }, + { + "type": "patch", + "path": "patch/bs2b/001-fix-automake-dist-lzma.patch" + } + ], + "post-install": [ + "install -Dm644 -t $FLATPAK_DEST/share/licenses/bs2b COPYING" + ], + "cleanup": [ + "/bin" + ] + }, + { + "name": "speexdsp", + "buildsystem": "autotools", + "sources": [ + { + "type": "git", + "url": "https://gitlab.xiph.org/xiph/speexdsp", + "tag": "SpeexDSP-1.2.1", + "commit": "1b28a0f61bc31162979e1f26f3981fc3637095c8", + "x-checker-data": { + "type": "git", + "tag-pattern": "^SpeexDSP-([\\d.]+)" + } + } + ] + }, + { + "name": "rubberband", + "buildsystem": "meson", + "cleanup": [ + "/include", + "/lib/*.a", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "archive", + "url": "https://breakfastquay.com/files/releases/rubberband-3.0.0.tar.bz2", + "sha256": "df6530b403c8300a23973df22f36f3c263f010d53792063e411f633cebb9ed85", + "x-checker-data": { + "type": "html", + "url": "https://www.breakfastquay.com/rubberband/", + "version-pattern": "Rubber Band Library v(\\d\\.\\d+\\.?\\d*) source", + "url-template": "https://breakfastquay.com/files/releases/rubberband-$version.tar.bz2" + } + } + ] + }, + { + "name": "calf", + "sources": [ + { + "type": "git", + "url": "https://github.com/calf-studio-gear/calf.git", + "tag": "0.90.3", + "commit": "41a2b7fb029cf0099fc05b7a9c569208034018de", + "x-checker-data": { + "type": "git", + "tag-pattern": "^([\\d.]+)" + } + } + ], + "post-install": [ + "install -Dm644 -t $FLATPAK_DEST/share/licenses/calf COPYING" + ], + "cleanup": [ + "/bin", + "/share/applications", + "/share/bash-completion", + "/share/calf", + "/share/doc", + "/share/icons", + "/share/man" + ], + "modules": [ + "shared-modules/linux-audio/fluidsynth2.json" + ] + } + ] + }, + { + "name": "rnnoise", + "sources": [ + { + "type": "git", + "url": "https://github.com/xiph/rnnoise.git", + "commit": "1cbdbcf1283499bbb2230a6b0f126eb9b236defd" + } + ], + "cleanup": [ + "/share/doc/rnnoise" + ] + }, + { + "name": "pipewire", + "buildsystem": "meson", + "config-opts": [ + "-Dgstreamer=disabled", + "-Dman=disabled", + "-Dsystemd=disabled", + "-Dudev=disabled", + "-Dudevrulesdir=disabled" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/pipewire/pipewire.git", + "tag": "0.3.41", + "commit": "717fb64e4e4477b5a3bfb2d6f8def273b52b7259" + }, + { + "type": "git", + "url": "https://gitlab.freedesktop.org/pipewire/media-session.git", + "commit": "f71506321393a0f85f6da0427cd99efa99f2d1e2", + "dest": "subprojects/media-session" + } + ] + }, + { + "name": "nlohmann-json", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/nlohmann/json", + "tag": "v3.10.5", + "commit": "4f8fba14066156b73f1189a2b8bd568bde5284c5", + "x-checker-data": { + "type": "git", + "tag-pattern": "^v([\\d.]+)$" + } + } + ] + }, + { + "name": "tbb", + "buildsystem": "simple", + "build-commands": [ + "make tbb tbbmalloc tbbproxy", + "install -d usr/lib/", + "install -m755 build/linux_*/*.so* /app/lib/", + "install -d usr/include", + "cp -a include/tbb /app/include/", + "cmake -DINSTALL_DIR=/app/lib/cmake/TBB -DSYSTEM_NAME=Linux -DTBB_VERSION_FILE=/app/include/tbb/tbb_stddef.h -P cmake/tbb_config_installer.cmake" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/intel/tbb/archive/v2020.3.tar.gz", + "sha256": "ebc4f6aa47972daed1f7bf71d100ae5bf6931c2e3144cf299c8cc7d041dca2f3" + } + ], + "cleanup": [ + "/include" + ] + }, + { + "name": "libportal", + "buildsystem": "meson", + "config-opts": [ + "-Ddocs=false", + "-Dbackends=gtk4" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/flatpak/libportal.git", + "tag": "0.5", + "commit": "467a397fd7996557f837cdc26ac07c01c62810e5" + } + ] + }, + { + "name": "zenity", + "buildsystem": "meson", + "sources": [ + { + "type": "git", + "url": "https://gitlab.gnome.org/GNOME/zenity", + "tag": "3.41.0", + "commit": "d8857f446b602d5fb4a41fef3d8a63507a12b72c" + } + ] + }, + { + "name": "fmt", + "buildsystem": "cmake", + "config-opts": [ + "-DCMAKE_INSTALL_PREFIX=/app", + "-DCMAKE_INSTALL_LIBDIR=/app/lib", + "-DBUILD_SHARED_LIBS=ON", + "-DFMT_TEST=Off" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/fmtlib/fmt/releases/download/8.0.1/fmt-8.0.1.zip", + "sha256": "a627a56eab9554fc1e5dd9a623d0768583b3a383ff70a4312ba68f94c9d415bf" + } + ] + } + ] +} \ No newline at end of file diff --git a/util/flatpak/easyeffects-wrapper.sh b/util/flatpak/easyeffects-wrapper.sh new file mode 100644 index 0000000..cea46e4 --- /dev/null +++ b/util/flatpak/easyeffects-wrapper.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# this checks the PipeWire version on the host, and then compares it to what we need. +# current baseline to compile EasyEffects is 0.3.41, thus the host needs minimum that as well. + +# get host's PipeWire version: + +# https://stackoverflow.com/a/48066872 +# we can't use jq to parse JSON as that will fail to run with flatpak run or from desktop file; gives "command not found", even though jq is in the runtime/sdk. +found_pipewire_version="$(pw-dump | grep -Po '"version":.*?[^\\]",' | sed 's/"//g' | sed 's/://g' | sed 's/,//g' | cut -c9-18)" + +required_pipewire_version="0.3.41" # from EasyEffects' build requirements + +# compare versions +# from https://unix.stackexchange.com/a/285928 + +if [ "$(printf '%s\n' "$required_pipewire_version" "$found_pipewire_version" | sort -V | head -n1)" = "$required_pipewire_version" ]; then + echo "You have PipeWire ${found_pipewire_version} installed" + echo "This is newer or the same as PipeWire ${required_pipewire_version} required to run EasyEffects" + +else + + if pw-dump >/dev/null ; then # TRY + # https://stackoverflow.com/a/6852427 + # https://stackoverflow.com/a/428118 + echo "pw-dump succeeded; system likely has PipeWire 0.3.x or later." + echo "You have PipeWire ${found_pipewire_version} installed" + echo "This is less than PipeWire ${required_pipewire_version} recommended to run EasyEffects" + + # put all the text here so we can use variable as part of output, it is helpful to the user. + zenity --info --title="PipeWire version warning" --no-wrap \ + --text="Could not find compatible PipeWire. +It is recommended to install PipeWire ${required_pipewire_version} or newer for EasyEffects to work correctly. \n +More info: +PipeWire ${found_pipewire_version} was found, which is not considered recent enough for EasyEffects. +If on Ubuntu or an Ubuntu-based system you may install newer PipeWire from: https://pipewire-debian.github.io +You may try PulseEffects which does not require PipeWire. +You may dismiss this warning by clicking \"OK\", please note PipeWire ${found_pipewire_version} is not tested to work with EasyEffects. \n +If you believe this message was shown in error, please report it to: https://github.com/wwmm/easyeffects" + + else # CATCH + echo 'pw-dump failed; system likely has PipeWire 0.2.x or older, or no PipeWire package exists.' + echo "Your system does not appear to have PipeWire 0.3.0 or later installed" + echo "This is less than PipeWire ${required_pipewire_version} required to run EasyEffects" + + # put all the text here so we can use variable as part of output, it is helpful to the user. + zenity --info --title="PipeWire version warning" --no-wrap \ + --text="Could not find compatible PipeWire. +Install PipeWire ${required_pipewire_version} or newer for EasyEffects to work correctly. \n +More info: +Either PipeWire is not installed or is not recent enough for EasyEffects. +If on Ubuntu or an Ubuntu-based system you may install newer PipeWire from: https://pipewire-debian.github.io +You may try PulseEffects which does not require PipeWire. \n +If you believe this message was shown in error, please report it to: https://github.com/wwmm/easyeffects" + + fi + +fi + +# launch the normal app without checking again +exec easyeffects "$@" \ No newline at end of file diff --git a/util/flatpak/patch/bs2b/001-fix-automake-dist-lzma.patch b/util/flatpak/patch/bs2b/001-fix-automake-dist-lzma.patch new file mode 100644 index 0000000..e303b57 --- /dev/null +++ b/util/flatpak/patch/bs2b/001-fix-automake-dist-lzma.patch @@ -0,0 +1,13 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -4,8 +4,8 @@ + AC_PREREQ([2.63]) + AC_INIT([libbs2b], [3.1.0], [boris_mikhaylov@users.sourceforge.net]) + AC_CONFIG_AUX_DIR([build-aux]) +-AM_INIT_AUTOMAKE([1.10.1 -Wall foreign subdir-objects +- dist-zip dist-bzip2 dist-lzma]) ++AM_INIT_AUTOMAKE([1.11.2 -Wall foreign subdir-objects ++ dist-zip dist-bzip2 dist-xz]) + AC_CONFIG_SRCDIR([src/bs2b.h]) + + # Checks for programs. diff --git a/util/flatpak/patch/easyeffects/0001-Background-portal-support-for-autostart-and-shutdown.patch b/util/flatpak/patch/easyeffects/0001-Background-portal-support-for-autostart-and-shutdown.patch new file mode 100644 index 0000000..8ce4bf2 --- /dev/null +++ b/util/flatpak/patch/easyeffects/0001-Background-portal-support-for-autostart-and-shutdown.patch @@ -0,0 +1,319 @@ +From 2131bf7458be12109784b12399bd5c6fc27ae8d0 Mon Sep 17 00:00:00 2001 +From: Vincent Chernin <38842733+vchernin@users.noreply.github.com> +Date: Mon, 27 Dec 2021 23:53:53 -0800 +Subject: [PATCH] Background portal support for autostart and shutdown on window close switches + +oth the enable autostart and shutdown on window close buttons correctly use the portal. +Based on the original patch from Digitalone1. + +Ideally this should properly finalize and don't rely on g_settings_unbind +--- + data/schemas/com.github.wwmm.easyeffects.gschema.xml | 7 +++++-- + data/ui/preferences_general.ui | 1 - + include/preferences_general.hpp | 6 ++++-- + src/meson.build | 1 + + src/preferences_general.cpp | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- + 5 files changed, 168 insertions(+), 10 deletions(-) + +diff --git a/data/schemas/com.github.wwmm.easyeffects.gschema.xml b/data/schemas/com.github.wwmm.easyeffects.gschema.xml +index 6e9483a..612390e 100644 +--- a/data/schemas/com.github.wwmm.easyeffects.gschema.xml ++++ b/data/schemas/com.github.wwmm.easyeffects.gschema.xml +@@ -7,6 +7,9 @@ + + false + ++ ++ false ++ + + false + +@@ -32,7 +35,7 @@ + false + + +- false ++ true + + + false +@@ -51,4 +54,4 @@ + 10 + + +- +\ No newline at end of file ++ +diff --git a/data/ui/preferences_general.ui b/data/ui/preferences_general.ui +index f73c4ff..25223e2 100644 +--- a/data/ui/preferences_general.ui ++++ b/data/ui/preferences_general.ui +@@ -15,7 +15,6 @@ + + + center +- + + + +diff --git a/include/preferences_general.hpp b/include/preferences_general.hpp +index fb6cfc7..34e1669 100644 +--- a/include/preferences_general.hpp ++++ b/include/preferences_general.hpp +@@ -20,12 +20,14 @@ + #pragma once + + #include +-#include + #include + #include + #include "tags_resources.hpp" + #include "ui_helpers.hpp" + #include "util.hpp" ++#include "libportal/portal.h" ++#include "libportal-gtk4/portal-gtk4.h" ++ + + namespace ui::preferences::general { + +@@ -39,4 +41,4 @@ G_END_DECLS + + auto create() -> PreferencesGeneral*; + +-} // namespace ui::preferences::general +\ No newline at end of file ++} // namespace ui::preferences::general +diff --git a/src/meson.build b/src/meson.build +index 6fb5c11..e142588 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -140,6 +140,7 @@ easyeffects_deps = [ + dependency('fftw3f'), + dependency('libebur128',version: '>=1.2.0'), + dependency('samplerate'), ++ dependency('libportal'), + dependency('rubberband'), + dependency('speexdsp'), + dependency('nlohmann_json'), +diff --git a/src/preferences_general.cpp b/src/preferences_general.cpp +index 85faa0f..aa15860 100644 +--- a/src/preferences_general.cpp ++++ b/src/preferences_general.cpp +@@ -32,10 +32,134 @@ struct _PreferencesGeneral { + GtkSpinButton* inactivity_timeout; + + GSettings* settings; ++ ++ gboolean reset_shutdown, reset_autostart; ++ + }; + + G_DEFINE_TYPE(PreferencesGeneral, preferences_general, ADW_TYPE_PREFERENCES_PAGE) + ++inline static XdpPortal* portal = nullptr; ++static void update_background_portal(const bool& state, PreferencesGeneral* self); ++static void on_request_background_called(GObject* source, GAsyncResult* result, gpointer data); ++ ++// generic portal update function ++void update_background_portal(const bool& state, PreferencesGeneral* self) { ++ XdpBackgroundFlags background_flags = XDP_BACKGROUND_FLAG_NONE; ++ ++ g_autoptr(GPtrArray) command_line = nullptr; ++ ++ if (state) { ++ command_line = g_ptr_array_new_with_free_func(g_free); ++ ++ g_ptr_array_add(command_line, g_strdup("easyeffects")); ++ g_ptr_array_add(command_line, g_strdup("--gapplication-service")); ++ ++ background_flags = XDP_BACKGROUND_FLAG_AUTOSTART; ++ } ++ ++ auto* reason = g_strdup("EasyEffects Background Access"); ++ ++ // libportal portal request ++ xdp_portal_request_background(portal, nullptr, reason, command_line, background_flags, NULL, ++ on_request_background_called, self); ++ ++ g_free(reason); ++} ++ ++// callback ++void on_request_background_called(GObject* source, GAsyncResult* result, gpointer self) { ++ g_autoptr(GError) error = nullptr; ++ ++ // libportal check if portal request worked ++ if (!xdp_portal_request_background_finish(portal, result, &error)) { ++ util::warning(std::string("portal: a background request failed: ") + ((error) ? error->message : "unknown reason")); ++ util::warning(std::string("portal: background portal access has likely been denied")); ++ util::warning(std::string("portal: to let EasyEffects ask for the portal again, run flatpak permission-reset com.github.wwmm.easyeffects")); ++ ++ ++ // this seems wrong but also works? ++ auto* window_levels = gtk_window_get_toplevels(); ++ ++ GtkWidget* dialog = gtk_message_dialog_new ((GtkWindow*) g_list_model_get_item(window_levels, 0), ++ GTK_DIALOG_MODAL, ++ GTK_MESSAGE_WARNING, ++ GTK_BUTTONS_CLOSE, ++ "Unable to get background access: %s", ++ ((error) ? error->message : "Unknown reason")) ++ ; ++ gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "To let EasyEffects ask again, run: \nflatpak permission-reset com.github.wwmm.easyeffects"); ++ ++ gtk_widget_show(dialog); ++ g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL); ++ ++ ++ if (gtk_switch_get_active(((PreferencesGeneral *)self)->enable_autostart) == true || gtk_switch_get_state(((PreferencesGeneral *)self)->enable_autostart) == true) { ++ ((PreferencesGeneral *)self)->reset_autostart = true; ++ util::warning(std::string("portal: setting autostart state and switch to false")); ++ gtk_switch_set_state(((PreferencesGeneral *)self)->enable_autostart, false); ++ gtk_switch_set_active(((PreferencesGeneral *)self)->enable_autostart, false); ++ } ++ if (gtk_switch_get_active(((PreferencesGeneral *)self)->shutdown_on_window_close) == false || gtk_switch_get_state(((PreferencesGeneral *)self)->shutdown_on_window_close) == false) { ++ ((PreferencesGeneral *)self)->reset_shutdown = true; ++ util::warning(std::string("portal: setting shutdown on window close state and switch to true")); ++ gtk_switch_set_state(((PreferencesGeneral *)self)->shutdown_on_window_close, true); ++ gtk_switch_set_active(((PreferencesGeneral *)self)->shutdown_on_window_close, true); ++ } ++ ++ ((PreferencesGeneral *)self)->reset_autostart = false; ++ ((PreferencesGeneral *)self)->reset_shutdown = false; ++ return; ++ } ++ ++ gtk_switch_set_state(((PreferencesGeneral *)self)->enable_autostart, gtk_switch_get_active(((PreferencesGeneral *)self)->enable_autostart)); ++ ++ gtk_switch_set_state(((PreferencesGeneral *)self)->shutdown_on_window_close, gtk_switch_get_active(((PreferencesGeneral *)self)->shutdown_on_window_close)); ++ ++ ((PreferencesGeneral *)self)->reset_autostart = false; ++ ((PreferencesGeneral *)self)->reset_shutdown = false; ++ util::debug("portal: a background request successfully completed"); ++ return; ++} ++ ++ ++gboolean on_enable_autostart(GtkSwitch* obj, gboolean state, PreferencesGeneral* self) { ++ if (!self->reset_autostart) { ++ util::debug("portal: requesting autostart file since autostart is enabled"); ++ update_background_portal(state, self); ++ } ++ return true; ++} ++ ++gboolean on_shutdown_on_window_close_called(GtkSwitch* btn, gboolean state, PreferencesGeneral* self) { ++ if (!self->reset_shutdown) { ++ if (g_settings_get_boolean(self->settings, "enable-autostart") && !state) { ++ util::debug("portal: requesting both background access and autostart file since autostart is enabled"); ++ update_background_portal(true, self); ++ } ++ else if (!g_settings_get_boolean(self->settings, "enable-autostart") && !state) { ++ util::debug("portal: requesting only background access, not creating autostart file"); ++ update_background_portal(false, self); ++ } ++ ++ else if (g_settings_get_boolean(self->settings, "enable-autostart") && state) { ++ util::debug("portal: requesting autostart access since autostart enabled"); ++ update_background_portal(true, self); ++ } ++ ++ else if (!g_settings_get_boolean(self->settings, "enable-autostart") && state) { ++ util::debug("portal: not requesting any access since enabling shutdown on window close"); ++ gtk_switch_set_state(((PreferencesGeneral *)self)->shutdown_on_window_close, gtk_switch_get_active(((PreferencesGeneral *)self)->shutdown_on_window_close)); ++ } ++ } ++ ++ ++ return true; ++ ++} ++ ++ ++/* + auto on_enable_autostart(GtkSwitch* obj, gboolean state, gpointer user_data) -> gboolean { + std::filesystem::path autostart_dir{g_get_user_config_dir() + "/autostart"s}; + +@@ -72,14 +196,18 @@ auto on_enable_autostart(GtkSwitch* obj, gboolean state, gpointer user_data) -> + + return 0; + } ++*/ + + void dispose(GObject* object) { + auto* self = EE_PREFERENCES_GENERAL(object); + + g_object_unref(self->settings); + + util::debug("disposed"); + ++ g_settings_unbind(self->enable_autostart, "active"); ++ g_settings_unbind(self->shutdown_on_window_close, "active"); ++ + G_OBJECT_CLASS(preferences_general_parent_class)->dispose(object); + } + +@@ -103,29 +231,54 @@ void preferences_general_class_init(PreferencesGeneralClass* klass) { + gtk_widget_class_bind_template_child(widget_class, PreferencesGeneral, inactivity_timeout); + + gtk_widget_class_bind_template_callback(widget_class, on_enable_autostart); ++ gtk_widget_class_bind_template_callback(widget_class, on_shutdown_on_window_close_called); + } + + void preferences_general_init(PreferencesGeneral* self) { + gtk_widget_init_template(GTK_WIDGET(self)); + + self->settings = g_settings_new(tags::app::id); + + prepare_spinbuttons<"s">(self->inactivity_timeout); + +- // initializing some widgets ++ if (portal == nullptr) { ++ portal = xdp_portal_new(); ++ } + +- gtk_switch_set_active(self->enable_autostart, +- static_cast(std::filesystem::is_regular_file( +- g_get_user_config_dir() + "/autostart/easyeffects-service.desktop"s))); ++ // initializing some widgets + + gsettings_bind_widgets<"process-all-inputs", "process-all-outputs", "use-dark-theme", "shutdown-on-window-close", ++ "enable-autostart", + "use-cubic-volumes", "autohide-popovers", "reset-volume-on-startup", "exclude-monitor-streams", + "inactivity-timeout">( + self->settings, self->process_all_inputs, self->process_all_outputs, self->theme_switch, +- self->shutdown_on_window_close, self->use_cubic_volumes, self->autohide_popovers, self->reset_volume_on_startup, ++ self->shutdown_on_window_close, self->enable_autostart, self->use_cubic_volumes, self->autohide_popovers, self->reset_volume_on_startup, + self->exclude_monitor_streams, self->inactivity_timeout); ++ ++ ++ g_signal_connect(self->enable_autostart, "state-set", G_CALLBACK(on_enable_autostart), self); ++ g_signal_connect(self->shutdown_on_window_close, "state-set", G_CALLBACK(on_shutdown_on_window_close_called), self); ++ ++ ++ ++ // sanity checks in case switch(es) was somehow already set previously. ++ if (!gtk_switch_get_active(self->shutdown_on_window_close) && !gtk_switch_get_active(self->enable_autostart)) { ++ util::debug(std::string("portal: Running portal sanity check, autostart and shutdown switches are disabled")); ++ update_background_portal(false, self); ++ } ++ ++ else if (gtk_switch_get_active(self->shutdown_on_window_close) && gtk_switch_get_active(self->enable_autostart)) { ++ util::debug(std::string("portal: Running portal sanity check, autostart and shutdown switches are enabled")); ++ update_background_portal(true, self); ++ } ++ ++ else if (!gtk_switch_get_active(self->shutdown_on_window_close) && gtk_switch_get_active(self->enable_autostart)) { ++ util::debug(std::string("portal: Running portal sanity check, autostart switch is enabled and shutdown switch is disabled")); ++ update_background_portal(true, self); ++ } + } + ++ + auto create() -> PreferencesGeneral* { + return static_cast(g_object_new(EE_TYPE_PREFERENCES_GENERAL, nullptr)); + } +-- +libgit2 1.0.1 + diff --git a/util/flatpak/patch/easyeffects/002-fix-desktop-file.patch b/util/flatpak/patch/easyeffects/002-fix-desktop-file.patch new file mode 100644 index 0000000..7ab4e3c --- /dev/null +++ b/util/flatpak/patch/easyeffects/002-fix-desktop-file.patch @@ -0,0 +1,43 @@ +From 1eba69fef4c800289485bee3544660e9baa45de6 Mon Sep 17 00:00:00 2001 +From: Vincent Chernin <38842733+vchernin@users.noreply.github.com> +Date: Thu, 26 Aug 2021 10:45:37 -0700 +Subject: [PATCH 1/2] Rename the Exec line to launch the wrapper script. +This was the only way I could get a wrapper script to launch from using the app launcher (i.e. triggering the desktop file.) + +--- + data/com.github.wwmm.easyeffects.desktop.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/com.github.wwmm.easyeffects.desktop.in b/data/com.github.wwmm.easyeffects.desktop.in +index 69912196..8c210e53 100644 +--- a/data/com.github.wwmm.easyeffects.desktop.in ++++ b/data/com.github.wwmm.easyeffects.desktop.in +@@ -4,7 +4,7 @@ GenericName=Equalizer, Compressor and Other Audio Effects + Comment=Audio Effects for PipeWire Applications + Keywords=limiter;compressor;reverberation;equalizer;autovolume; + Categories=GTK;AudioVideo;Audio; +-Exec=easyeffects ++Exec=easyeffects-wrapper + # Translators: This is an icon name, don't translate! + Icon=easyeffects + StartupNotify=true + +From df4cc6bb435c9a4694c6a807154609e9af4fe65f Mon Sep 17 00:00:00 2001 +From: Vincent Chernin <38842733+vchernin@users.noreply.github.com> +Date: Thu, 26 Aug 2021 10:46:01 -0700 +Subject: [PATCH 2/2] Update com.github.wwmm.easyeffects.service.in + +--- + data/com.github.wwmm.easyeffects.service.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/com.github.wwmm.easyeffects.service.in b/data/com.github.wwmm.easyeffects.service.in +index 0493f584..9e56bc6b 100644 +--- a/data/com.github.wwmm.easyeffects.service.in ++++ b/data/com.github.wwmm.easyeffects.service.in +@@ -1,3 +1,3 @@ + [D-BUS Service] + Name=com.github.wwmm.easyeffects +-Exec=@bindir@/easyeffects --gapplication-service ++Exec=@bindir@/easyeffects-wrapper --gapplication-service + diff --git a/util/flatpak/patch/zita-convolver/0001-Fix-makefile.patch b/util/flatpak/patch/zita-convolver/0001-Fix-makefile.patch new file mode 100644 index 0000000..6b0b3f1 --- /dev/null +++ b/util/flatpak/patch/zita-convolver/0001-Fix-makefile.patch @@ -0,0 +1,33 @@ +From 5980950dbae82c6a03b38b8e66e07a8b29068a00 Mon Sep 17 00:00:00 2001 +From: AsavarTzeth +Date: Thu, 19 Jul 2018 21:55:38 +0200 +Subject: [PATCH] Fix makefile + +- ldconfig should not be called by Makefile +- Add missing symlink for major version of lib +--- + source/Makefile | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/source/Makefile b/source/Makefile +index 776c067..a15bea9 100644 +--- a/source/Makefile ++++ b/source/Makefile +@@ -34,7 +34,6 @@ VERSION = $(MAJVERS).$(MINVERS) + CPPFLAGS += -I. -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS + CPPFLAGS += -DENABLE_VECTOR_MODE + CXXFLAGS += -fPIC -Wall -ffast-math -funroll-loops -O2 +-CXXFLAGS += -march=native + LDLFAGS += + LDLIBS += + +@@ -56,8 +55,8 @@ install: $(ZITA-CONVOLVER_MIN) + install -d $(DESTDIR)$(LIBDIR) + install -m 644 $(ZITA-CONVOLVER_H) $(DESTDIR)$(INCDIR) + install -m 755 $(ZITA-CONVOLVER_MIN) $(DESTDIR)$(LIBDIR) +- ldconfig + ln -sf $(ZITA-CONVOLVER_MIN) $(DESTDIR)$(LIBDIR)/$(ZITA-CONVOLVER_SO) ++ ln -sf $(ZITA-CONVOLVER_MIN) $(DESTDIR)$(LIBDIR)/$(ZITA-CONVOLVER_MAJ) + + uninstall: + rm -rf $(DESTDIR)$(INCDIR)/$(ZITA-CONVOLVER_H) diff --git a/util/flatpak/shared-modules/linux-audio/fftw3f.json b/util/flatpak/shared-modules/linux-audio/fftw3f.json new file mode 100644 index 0000000..ee10c75 --- /dev/null +++ b/util/flatpak/shared-modules/linux-audio/fftw3f.json @@ -0,0 +1,41 @@ +{ + "name": "fftw3f", + "config-opts": [ + "--enable-threads", + "--enable-shared", + "--disable-static", + "--enable-float" + ], + "build-options": { + "arch": { + "x86_64": { + "config-opts": [ + "--enable-sse2", + "--enable-avx", + "--enable-avx-128-fma" + ] + }, + "aarch64": { + "config-opts": [ + "--enable-neon" + ] + } + } + }, + "sources": [ + { + "type": "archive", + "url": "https://www.fftw.org/fftw-3.3.10.tar.gz", + "sha256": "56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467" + } + ], + "cleanup": [ + "/bin", + "/include", + "/lib/cmake", + "/lib/pkgconfig", + "/share/man", + "*.la", + "*.so" + ] +} diff --git a/util/flatpak/shared-modules/linux-audio/fluidsynth2.json b/util/flatpak/shared-modules/linux-audio/fluidsynth2.json new file mode 100644 index 0000000..f7a5873 --- /dev/null +++ b/util/flatpak/shared-modules/linux-audio/fluidsynth2.json @@ -0,0 +1,21 @@ +{ + "name": "fluidsynth", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DLIB_SUFFIX=" + ], + "cleanup": [ + "/bin", + "/include", + "/lib/pkgconfig", + "/share/man", + "*.so" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/FluidSynth/fluidsynth/archive/v2.2.4.tar.gz", + "sha256": "83cb1dba04c632ede74f0c0717018b062c0e00b639722203b23f77a961afd390" + } + ] +} diff --git a/util/flatpak/shared-modules/linux-audio/lilv.json b/util/flatpak/shared-modules/linux-audio/lilv.json new file mode 100644 index 0000000..2c08053 --- /dev/null +++ b/util/flatpak/shared-modules/linux-audio/lilv.json @@ -0,0 +1,100 @@ +{ + "name": "lilv", + "buildsystem": "simple", + "build-commands": [ + "python3 ./waf configure --prefix=$FLATPAK_DEST", + "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS", + "python3 ./waf install" + ], + "modules": [ + { + "name": "serd", + "buildsystem": "simple", + "build-commands": [ + "python3 ./waf configure --prefix=$FLATPAK_DEST", + "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS", + "python3 ./waf install" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.drobilla.net/serd-0.30.10.tar.bz2", + "sha256": "affa80deec78921f86335e6fc3f18b80aefecf424f6a5755e9f2fa0eb0710edf" + } + ], + "post-install": [ + "install -Dm644 -t /app/share/licenses/serd COPYING" + ], + "cleanup": [ + "/bin", + "/include", + "/lib/pkgconfig", + "/share/man" + ] + }, + { + "name": "sord", + "buildsystem": "simple", + "build-commands": [ + "python3 ./waf configure --prefix=$FLATPAK_DEST", + "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS", + "python3 ./waf install" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.drobilla.net/sord-0.16.8.tar.bz2", + "sha256": "7c289d2eaabf82fa6ac219107ce632d704672dcfb966e1a7ff0bbc4ce93f5e14" + } + ], + "post-install": [ + "install -Dm644 -t /app/share/licenses/sord COPYING" + ], + "cleanup": [ + "/bin", + "/include", + "/lib/pkgconfig", + "/share/man" + ] + }, + { + "name": "sratom", + "buildsystem": "simple", + "build-commands": [ + "python3 ./waf configure --prefix=$FLATPAK_DEST", + "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS", + "python3 ./waf install" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.drobilla.net/sratom-0.6.8.tar.bz2", + "sha256": "3acb32b1adc5a2b7facdade2e0818bcd6c71f23f84a1ebc17815bb7a0d2d02df" + } + ], + "post-install": [ + "install -Dm644 -t /app/share/licenses/sratom COPYING" + ] + } + ], + "sources": [ + { + "type": "archive", + "url": "https://download.drobilla.net/lilv-0.24.12.tar.bz2", + "sha256": "26a37790890c9c1f838203b47f5b2320334fe92c02a4d26ebbe2669dbd769061" + } + ], + "post-install": [ + "install -Dm644 -t /app/share/licenses/lilv COPYING" + ], + "cleanup": [ + "/bin", + "/etc", + "/lib/pkgconfig", + "/share/man" + ] +} diff --git a/util/flatpak/shared-modules/linux-audio/lv2.json b/util/flatpak/shared-modules/linux-audio/lv2.json new file mode 100644 index 0000000..5cf5a67 --- /dev/null +++ b/util/flatpak/shared-modules/linux-audio/lv2.json @@ -0,0 +1,26 @@ +{ + "name": "lv2", + "buildsystem": "simple", + "build-commands": [ + "python3 ./waf configure --prefix=$FLATPAK_DEST --lv2dir=$FLATPAK_DEST/lib/lv2 --copy-headers", + "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS", + "python3 ./waf install" + ], + "cleanup": [ + "/bin", + "/include", + "/lib/pkgconfig", + "/share" + ], + "sources": [ + { + "type": "archive", + "url": "https://lv2plug.in/spec/lv2-1.18.2.tar.bz2", + "sha256": "4e891fbc744c05855beb5dfa82e822b14917dd66e98f82b8230dbd1c7ab2e05e" + } + ], + "post-install": [ + "install -Dm644 -t $FLATPAK_DEST/share/licenses/lv2 COPYING", + "ln -sf lv2.pc $FLATPAK_DEST/lib/pkgconfig/lv2core.pc" + ] +} diff --git a/util/news-release-template.yaml b/util/news-release-template.yaml new file mode 100644 index 0000000..c54ebfe --- /dev/null +++ b/util/news-release-template.yaml @@ -0,0 +1,14 @@ +--- +Version: UNRELEASED_VERSION +Date: UNRELEASED_DATE + +Description: +- Features∶ +- + +- Bug fixes∶ +- + +- Other notes∶ +- + diff --git a/util/sanitizer.supp b/util/sanitizer.supp new file mode 100644 index 0000000..823f176 --- /dev/null +++ b/util/sanitizer.supp @@ -0,0 +1,4 @@ +leak:libEGL_mesa* +leak:libfontconfig* +leak:libsigc* +leak:libglib-2* \ No newline at end of file diff --git a/util/sanitizer.txt b/util/sanitizer.txt new file mode 100644 index 0000000..d30321d --- /dev/null +++ b/util/sanitizer.txt @@ -0,0 +1,5 @@ +meson _build --prefix=/tmp/ee -Db_sanitize=address,undefined + +G_SLICE=always-malloc G_DEBUG=gc-friendly ./easyeffects + +export LSAN_OPTIONS="print_suppressions=false:suppressions=/path/to/blender-lsan-suppressions.txt" diff --git a/util/test.wav b/util/test.wav new file mode 100644 index 0000000..941c63b Binary files /dev/null and b/util/test.wav differ diff --git a/util/update-release-files.sh b/util/update-release-files.sh new file mode 100755 index 0000000..291083d --- /dev/null +++ b/util/update-release-files.sh @@ -0,0 +1,368 @@ +#!/usr/bin/env bash + +# Update metainfo and changelog using a NEWS.yaml file. Also configures NEWS.yaml file in preparation for the next release. +# After running this script, metainfo and changelog should not need to be modified directly to adjust release notes. + +# Release workflow: +# 1. Update version number in meson.build +# 2. Run this script +# 3. Commit, tag, and push to GitHub + +# Important: this script is meant to be run at each release. If you do not, it might produce incorrect or confusing results. +# Also, reusing old version numbers for new releases might cause problems. + +# some functions reused from https://github.com/wwmm/easyeffects/commit/04bd3e968f7e0ba79b9672882590affe445dc330 + +# no means just refresh changelog and metainfo with current news.yaml file, will assume template is present representing a future relase. +# The future release at the top of NEWS.yaml will not be included (since you are only regenerating current releases). +read -r -e -p "Create a new release? (y/n): " MAKE_NEW_RELEASE + +set -o nounset +set -o noglob +set -o noclobber +#set -o xtrace #Debug + +readonly APP_ID='com.github.wwmm.easyeffects' +readonly SCRIPT_DEPS='date dirname realpath xmllint xsltproc sed appstreamcli appstream-util mktemp' + +BASE_DIR='.' +CMD_DIR='' +REPO_DIR='' +METAINFO_FILE='' + +# Configurable +DATA_DIR='data' + +init() { + local cmd="$1" + + readonly BASE_DIR="$(pwd -P)" + readonly CMD_DIR="$(dirname "${cmd}")" + readonly REPO_DIR="$(realpath "${CMD_DIR}"/..)" + readonly DATA_DIR="${REPO_DIR}/${DATA_DIR}" + readonly METAINFO_FILE="${DATA_DIR}/${APP_ID}.metainfo.xml.in" + readonly CHANGELOG_FILE="${REPO_DIR}/CHANGELOG.md" + readonly NEWS_FILE="${REPO_DIR}/util/NEWS.yaml" + + + if [[ "${BASE_DIR}" != "${REPO_DIR}" ]]; then + log_info 'Changing current working directory to repo.' + cd -P -- "${REPO_DIR:?}" || exit 1 + fi +} + +log_info() { + printf "%b" "\e[1m[ \e[36mINFO\e[39m ]\e[0m $1\n" +} + +log_err() { + printf "%b" "\e[1m[ \e[31mERROR\e[39m ]\e[0m $1" >&2 +} + +exit_err() { + log_err "$1" + exit 1 +} + +check_deps() { + local missing_deps='' + + for dep in ${SCRIPT_DEPS}; do + if ! which "${dep}" > /dev/null 2>&1; then + missing_deps="${missing_deps} ${dep}" + fi + done + + if [[ -n "${missing_deps}" ]]; then + exit_err "Missing commands:${missing_deps}\n" + fi +} + +check_metainfo_releases() { + local new_version="$1" + local old_version='' + local xpath='string(//release[1]/@version)' + + old_version="$(xmllint --xpath "${xpath}" "${METAINFO_FILE}")" + if [[ "$?" -ne 0 ]]; then + exit_err "Failed to find any existing releases in ${METAINFO_FILE}." + fi + + if [ "${old_version}" == "${new_version}" ] && [ "${MAKE_NEW_RELEASE}" == y ]; then + log_info 'Current app release is already in metainfo. No action taken.' + log_info 'Since you said you are making a new release, ensure to set a new version in the root meson.build.' + exit 0 + fi +} + +get_version() { + local file='' + local version='' + + # Read main project meson.build file + file="${REPO_DIR}/$(< meson.build)" + if [[ "$?" -ne 0 ]]; then + exit_err 'Failed to read meson.build file.' + fi + # Extract version string + # Works as long as "meson_version:" is defined below "version:" + file="${file#*version:*\'}" + version="${file%%\'*}" + + printf "%b" "${version}\n" +} + +get_date() { + local date='' + + if ! date="$(date --utc +%F)" ; then + exit_err 'Failed to get the current date.' + fi + + printf "%b" "${date}\n" +} + +convert_to_changelog() { + + # converts a specific type of yaml news file to a markdown changelog file + # At the end copy a working template to the top of the changelog for the next release. + + log_info "Copying file to changelog" + TEMP_CHANGELOG_FILE=$(mktemp) + + cp "${TEMP_NEWS}" "${TEMP_CHANGELOG_FILE}" + + log_info "Adjusting changelog formatting" + + + sed -i 's/---/ /g' "${TEMP_CHANGELOG_FILE}" + + sed -i 's/- Features/### Features/g' "${TEMP_CHANGELOG_FILE}" + sed -i 's/- Bug fixes/### Bug fixes/g' "${TEMP_CHANGELOG_FILE}" + sed -i 's/- Other notes/### Other notes/g' "${TEMP_CHANGELOG_FILE}" + + sed -i 's/Description://g' "${TEMP_CHANGELOG_FILE}" + + # replace ratio character with colon + sed -i 's/∶/:/g' "${TEMP_CHANGELOG_FILE}" + + + sed -i 's/^Version:/##/' "${TEMP_CHANGELOG_FILE}" + sed -i 's/^Date:/###/' "${TEMP_CHANGELOG_FILE}" + + sed -i "1i # Changelog" "${TEMP_CHANGELOG_FILE}" + + cp "${TEMP_CHANGELOG_FILE}" "${CHANGELOG_FILE}" + +} + +remove_unneeded_template() { + + # if just refreshing the existing release notes, we don't want the template to be present since it is for the new release + + if [ "${MAKE_NEW_RELEASE}" == n ] + then + log_info "Removing template part from temporary NEWS.yaml file, since not generating new release" + removed_template=false + for i in {3..1000} + do + if [ "$(sed -n "${i}"p "${TEMP_NEWS}")" == "---" ] + then + sed -i "1, "$((i - 2))"d" "${TEMP_NEWS}" + removed_template=true + break + fi + done + if [ ! "${removed_template}" == true ] + then + rm "${TEMP_NEWS:?}" + log_err "Could not remove the template from your NEWS.yaml file. \n" + log_err "Please verify it follows the correct format and try again. \n" + exit_err "Note a NEWS.yaml file template (the top release in the NEWS.yaml file) of up to 1000 lines long is attempted to be removed when regenerating a release. \n" + fi + fi + +} + +prepare_release_entry() { + + # check if new release version is not already in metainfo. + # adds a date and version number to the latest release in news + + if [ "${MAKE_NEW_RELEASE}" == y ] + then + + if ! grep -q UNRELEASED_VERSION "${TEMP_NEWS}"; + then + rm "${TEMP_NEWS:?}" + exit_err 'UNRELEASED_VERSION not found in NEWS. Verify NEWS file contains news-release-template.yaml at the top.' + fi + sed -i "{s/UNRELEASED_VERSION/${NEW_RELEASE_VERSION}/g}" "${TEMP_NEWS}"; + log_info "Release version ${NEW_RELEASE_VERSION} put in NEWS file." + + + if ! grep -q UNRELEASED_DATE "${TEMP_NEWS}"; + then + rm "${TEMP_NEWS:?}" + exit_err "UNRELEASED_DATE not found in NEWS. Verify NEWS file contains contents of news-release-template.yaml at the top." + fi + sed -i "{s/UNRELEASED_DATE/${NEW_RELEASE_DATE}/g}" "${TEMP_NEWS}"; + log_info "Release date ${NEW_RELEASE_DATE} put in NEWS file." + + fi + +} + +check_appstream_cli() { + + log_info "Checking appstreamcli validate --pedantic" + + APPSTREAM_CLI_OUT=$(appstreamcli validate --pedantic --explain "${TEMP_METAINFO_FILE}") + if [ $? -ne 0 ]; + then + log_err "appstreamcli validate --pedantic failed \n" + log_err "appstreamcli: $APPSTREAM_CLI_OUT \n" + rm "${TEMP_NEWS:?}" + rm "${TEMP_METAINFO_FILE:?}" + exit 1 + fi + log_info "Passed appstreamcli validate --pedantic" + +} + +check_appstream_util() { + + log_info "Checking appstream-util validate-relax" + + if [ "$(appstream-util validate-relax "${TEMP_METAINFO_FILE}" 2>&1 > /dev/null)" ]; + then + log_err "appstream-util validate-relax failed \n" + log_err "appstream-util: $(appstream-util validate-relax "${TEMP_METAINFO_FILE}") \n" + rm "${TEMP_NEWS:?}" + rm "${TEMP_METAINFO_FILE:?}" + exit 1 + fi + log_info "Passed appstream-util validate-relax" + + + + log_info "Checking appstream-util validate" + log_info "This script will hide errors relating to screenshots or style-invalid, as those are considered false positives." + log_info "However, errors that are not relating to screenshots or style-invalid are considered important to fix." + + TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT=$(mktemp) + set +o noclobber + appstream-util validate "${TEMP_METAINFO_FILE}" > "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" 2>&1 + set -o noclobber + + sed "/easyeffects-light-screenshot/d" -i "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" + sed "/style-invalid/d" -i "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" + sed "/failed/d" -i "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" + sed "/FAILED/d" -i "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" + sed "/com.github.wwmm.easyeffects.metainfo.xml.in/d" -i "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" + + if [ -s "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" ]; then + log_err "appstream-util validate gave non-screenshot related errors \n" + log_err "appstream-util validate failed \n" + cat "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT}" + rm "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT:?}" + rm "${TEMP_METAINFO_FILE:?}" + rm "${TEMP_NEWS:?}" + exit 1 + fi + + log_info "Passed appstream-util validate" + + rm "${TEMP_APPSTREAM_UTIL_EXCESS_OUTPUT:?}" + +} + +convert_news_to_metainfo() { + + # need to remove URLs as under certain conditions URLs are not permitted in AppStream release notes. + # only some implementations will actually fail validation an AppStream file on this, though. + # this only effects the outputted metainfo file, not news or changelog + + TEMP_NEWS_CLEANED=$(mktemp) + cp "${TEMP_NEWS}" "${TEMP_NEWS_CLEANED}" + + sed -i 's|https://github.com/wwmm/easyeffects/issues/|issue |g' "${TEMP_NEWS_CLEANED}" + + sed -i 's!http[s]\?://\S*!!g' "${TEMP_NEWS_CLEANED}" + + log_info "Converting news to metainfo" + + # must use actual file extension otherwise appstream-util will complain + TEMP_METAINFO_FILE=$(mktemp --suffix .metainfo.xml.in) + + cp "${METAINFO_FILE}" "${TEMP_METAINFO_FILE}" + + if [ "$(appstreamcli news-to-metainfo --format=yaml "${TEMP_NEWS_CLEANED}" "${TEMP_METAINFO_FILE}" 2>&1 > /dev/null)" ]; + then + rm "${TEMP_NEWS:?}" + log_err "Converting news to metainfo failed. \n" + log_err "Check formatting, don't leave section headers with nothing beneath them. \n" + log_err "appstreamcli: $(appstreamcli news-to-metainfo --format=yaml "${TEMP_NEWS_CLEANED}" "${TEMP_METAINFO_FILE}" 2>&1 > /dev/null) \n" + rm "${TEMP_NEWS_CLEANED:?}" + rm "${TEMP_METAINFO_FILE:?}" + exit 1 + fi + + log_info "Succesfully converted news to metainfo" + + # replace ratio character with colon + sed -i 's/∶/:/g' "${TEMP_METAINFO_FILE}" + + rm "${TEMP_NEWS_CLEANED:?}" + +} + + + +if ! [ "${MAKE_NEW_RELEASE}" == y ] && ! [ "${MAKE_NEW_RELEASE}" == n ] +then + exit_err "Invalid input entered. Enter only exactly \"y\" or \"n\" \n" +fi + +if [ "${MAKE_NEW_RELEASE}" == n ] +then + log_info "Not making a new release, just refreshing changelog and metainfo with current releases." + log_info "The top entry of the NEWS.yaml file will not be used for refreshing, since that is supposed to be the next release." +fi + + +check_deps +init "$0" +NEW_RELEASE_VERSION="$(get_version)" || exit 1 + +check_metainfo_releases "${NEW_RELEASE_VERSION}" + +NEW_RELEASE_DATE="$(get_date)" || exit 1 + +TEMP_NEWS=$(mktemp) +cp "${NEWS_FILE}" "${TEMP_NEWS}" + +remove_unneeded_template +prepare_release_entry + +convert_news_to_metainfo +check_appstream_cli +check_appstream_util + +convert_to_changelog + + +if [ "${MAKE_NEW_RELEASE}" == y ] +then + log_info "Copying new dates to NEWS.yaml" + cp "${TEMP_NEWS}" "${NEWS_FILE}" + + log_info "Copying template for next release to NEWS.yaml" + sed -i -e "1 e cat ${REPO_DIR}/util/news-release-template.yaml" "${NEWS_FILE}" +fi + +log_info "Copying changes to metainfo file" +cp "${TEMP_METAINFO_FILE}" "${METAINFO_FILE}" +rm "${TEMP_METAINFO_FILE:?}" + +rm "${TEMP_NEWS:?}" diff --git a/util/update_translation_templates.sh b/util/update_translation_templates.sh new file mode 100755 index 0000000..718432a --- /dev/null +++ b/util/update_translation_templates.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +ninja easyeffects-pot +ninja easyeffects-update-po +ninja easyeffects-news-pot +ninja easyeffects-news-update-po \ No newline at end of file diff --git a/util/valgrind.txt b/util/valgrind.txt new file mode 100644 index 0000000..a31f048 --- /dev/null +++ b/util/valgrind.txt @@ -0,0 +1 @@ +valgrind --suppressions=/usr/share/gtk-4.0/valgrind/gtk.supp --suppressions=/usr/share/glib-2.0/valgrind/glib.supp --leak-check=full --show-leak-kinds=definite