The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .circleci
    ├── config.yml
    ├── disable_all_plugins.sh
    ├── enable_all_plugins.sh
    ├── presets
    │   ├── sie_preset_disable_all.json
    │   ├── sie_preset_enable_all.json
    │   ├── soe_preset_disable_all.json
    │   └── soe_preset_enable_all.json
    └── test.sh
├── .clang-format
├── .clang-tidy
├── .github
    ├── FUNDING.yml
    ├── ISSUE_TEMPLATE
    │   └── bug_report.yml
    ├── dependabot.yaml
    └── workflows
    │   ├── CI.yaml
    │   ├── artifact-pr-comment.yaml
    │   ├── deploy-help.yaml
    │   ├── flatpak-update.yaml
    │   └── translation-templates.yaml
├── .gitignore
├── CHANGELOG.md
├── COMMUNITY_PRESETS_GUIDELINES.md
├── LICENSE
├── PKGBUILD
├── PKGBUILD_AUR
├── README.md
├── data
    ├── com.github.wwmm.easyeffects-symbolic.svg
    ├── com.github.wwmm.easyeffects.Devel.svg
    ├── com.github.wwmm.easyeffects.Source.svg
    ├── com.github.wwmm.easyeffects.desktop.in
    ├── com.github.wwmm.easyeffects.metainfo.xml.in
    ├── com.github.wwmm.easyeffects.service.in
    ├── com.github.wwmm.easyeffects.svg
    ├── easyeffects.gresource.xml
    ├── icons
    │   └── scalable
    │   │   └── emblems
    │   │       ├── credits.txt
    │   │       ├── ee-applications-multimedia-symbolic.svg
    │   │       ├── ee-arrow-down-symbolic.svg
    │   │       ├── ee-arrows-right-symbolic.svg
    │   │       ├── ee-bypass-symbolic.svg
    │   │       ├── ee-double-vertical-lines-symbolic.svg
    │   │       ├── ee-drag-handle-symbolic.svg
    │   │       └── ee-spectrum-symbolic.svg
    ├── meson.build
    ├── presets
    │   ├── gstreamer_ballad.json
    │   ├── gstreamer_classic.json
    │   ├── gstreamer_club.json
    │   ├── gstreamer_dance.json
    │   ├── gstreamer_more_bass.json
    │   ├── gstreamer_more_bass_and_treble.json
    │   ├── gstreamer_party.json
    │   ├── gstreamer_pop.json
    │   ├── gstreamer_reggae.json
    │   ├── gstreamer_rock.json
    │   ├── gstreamer_ska.json
    │   ├── gstreamer_soft.json
    │   ├── gstreamer_techno.json
    │   └── ziyad_perfecteq.json
    ├── schemas
    │   ├── com.github.wwmm.easyeffects.autogain.gschema.xml
    │   ├── com.github.wwmm.easyeffects.bassenhancer.gschema.xml
    │   ├── com.github.wwmm.easyeffects.bassloudness.gschema.xml
    │   ├── com.github.wwmm.easyeffects.compressor.gschema.xml
    │   ├── com.github.wwmm.easyeffects.convolver.gschema.xml
    │   ├── com.github.wwmm.easyeffects.crossfeed.gschema.xml
    │   ├── com.github.wwmm.easyeffects.crystalizer.gschema.xml
    │   ├── com.github.wwmm.easyeffects.deepfilternet.gschema.xml
    │   ├── com.github.wwmm.easyeffects.deesser.gschema.xml
    │   ├── com.github.wwmm.easyeffects.delay.gschema.xml
    │   ├── com.github.wwmm.easyeffects.echo_canceller.gschema.xml
    │   ├── com.github.wwmm.easyeffects.equalizer.channel.gschema.xml
    │   ├── com.github.wwmm.easyeffects.equalizer.gschema.xml
    │   ├── com.github.wwmm.easyeffects.exciter.gschema.xml
    │   ├── com.github.wwmm.easyeffects.expander.gschema.xml
    │   ├── com.github.wwmm.easyeffects.filter.gschema.xml
    │   ├── com.github.wwmm.easyeffects.gate.gschema.xml
    │   ├── com.github.wwmm.easyeffects.gschema.xml
    │   ├── com.github.wwmm.easyeffects.levelmeter.gschema.xml
    │   ├── com.github.wwmm.easyeffects.libportal.gschema.xml
    │   ├── com.github.wwmm.easyeffects.limiter.gschema.xml
    │   ├── com.github.wwmm.easyeffects.loudness.gschema.xml
    │   ├── com.github.wwmm.easyeffects.maximizer.gschema.xml
    │   ├── com.github.wwmm.easyeffects.multibandcompressor.gschema.xml
    │   ├── com.github.wwmm.easyeffects.multibandgate.gschema.xml
    │   ├── com.github.wwmm.easyeffects.outputlevel.gschema.xml
    │   ├── com.github.wwmm.easyeffects.pitch.gschema.xml
    │   ├── com.github.wwmm.easyeffects.reverb.gschema.xml
    │   ├── com.github.wwmm.easyeffects.rnnoise.gschema.xml
    │   ├── com.github.wwmm.easyeffects.spectrum.gschema.xml
    │   ├── com.github.wwmm.easyeffects.speex.gschema.xml
    │   ├── com.github.wwmm.easyeffects.stereotools.gschema.xml
    │   ├── com.github.wwmm.easyeffects.streaminputs.gschema.xml
    │   └── com.github.wwmm.easyeffects.streamoutputs.gschema.xml
    └── ui
    │   ├── app_info.ui
    │   ├── application_window.ui
    │   ├── apps_box.ui
    │   ├── autogain.ui
    │   ├── autoload_row.ui
    │   ├── bass_enhancer.ui
    │   ├── bass_loudness.ui
    │   ├── blocklist_menu.ui
    │   ├── chart.ui
    │   ├── compressor.ui
    │   ├── convolver.ui
    │   ├── convolver_menu_combine.ui
    │   ├── convolver_menu_impulses.ui
    │   ├── crossfeed.ui
    │   ├── crystalizer.ui
    │   ├── crystalizer_band.ui
    │   ├── custom.css
    │   ├── deepfilternet.ui
    │   ├── deesser.ui
    │   ├── delay.ui
    │   ├── echo_canceller.ui
    │   ├── effects_box.ui
    │   ├── equalizer.ui
    │   ├── equalizer_band.ui
    │   ├── exciter.ui
    │   ├── expander.ui
    │   ├── factory_clients_listview.ui
    │   ├── factory_input_device_dropdown.ui
    │   ├── factory_modules_listview.ui
    │   ├── factory_node_dropdown.ui
    │   ├── factory_output_device_dropdown.ui
    │   ├── factory_presets_dropdown.ui
    │   ├── factory_rnnoise_listview.ui
    │   ├── filter.ui
    │   ├── gate.ui
    │   ├── level_meter.ui
    │   ├── limiter.ui
    │   ├── loudness.ui
    │   ├── maximizer.ui
    │   ├── multiband_compressor.ui
    │   ├── multiband_compressor_band.ui
    │   ├── multiband_gate.ui
    │   ├── multiband_gate_band.ui
    │   ├── pipe_manager_box.ui
    │   ├── pitch.ui
    │   ├── plugin_row.ui
    │   ├── plugins_box.ui
    │   ├── plugins_menu.ui
    │   ├── preferences_general.ui
    │   ├── preferences_spectrum.ui
    │   ├── preferences_window.ui
    │   ├── preset_community_row.ui
    │   ├── preset_row.ui
    │   ├── presets_menu.ui
    │   ├── reverb.ui
    │   ├── rnnoise.ui
    │   ├── shortcuts.ui
    │   ├── speex.ui
    │   └── stereo_tools.ui
├── debian
    ├── changelog
    ├── control
    ├── copyright
    ├── rules
    ├── source
    │   └── format
    └── watch
├── easyeffects.code-workspace
├── help
    ├── C
    │   ├── advancedinfo.page
    │   ├── autogain.page
    │   ├── bassenhancer.page
    │   ├── bassloudness.page
    │   ├── blocklist.page
    │   ├── compressor.page
    │   ├── convolver.page
    │   ├── crossfeed.page
    │   ├── crystalizer.page
    │   ├── deepfilternet.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
    │   ├── speex.page
    │   ├── stereotools.page
    │   ├── testsignals.page
    │   └── userpresets.page
    └── meson.build
├── images
    ├── appdata-screenshot-01.png
    ├── appdata-screenshot-02.png
    ├── appdata-screenshot-03.png
    ├── appdata-screenshot-04.png
    ├── appdata-screenshot-05.png
    ├── convolver.png
    ├── easyeffects-dark-screenshot-1.png
    ├── easyeffects-dark-screenshot-2.png
    ├── easyeffects-dark-screenshot-3.png
    ├── easyeffects-light-screenshot-1.png
    ├── easyeffects-light-screenshot-2.png
    ├── easyeffects-light-screenshot-3.png
    ├── easyeffects_players.png
    ├── easyeffects_plugins.png
    └── master_screenshot_test.png
├── include
    ├── app_info.hpp
    ├── application.hpp
    ├── application_ui.hpp
    ├── apps_box.hpp
    ├── autogain.hpp
    ├── autogain_preset.hpp
    ├── autogain_ui.hpp
    ├── bass_enhancer.hpp
    ├── bass_enhancer_preset.hpp
    ├── bass_enhancer_ui.hpp
    ├── bass_loudness.hpp
    ├── bass_loudness_preset.hpp
    ├── bass_loudness_ui.hpp
    ├── blocklist_menu.hpp
    ├── chart.hpp
    ├── client_info_holder.hpp
    ├── compressor.hpp
    ├── compressor_preset.hpp
    ├── compressor_ui.hpp
    ├── convolver.hpp
    ├── convolver_menu_combine.hpp
    ├── convolver_menu_impulses.hpp
    ├── convolver_preset.hpp
    ├── convolver_ui.hpp
    ├── convolver_ui_common.hpp
    ├── crossfeed.hpp
    ├── crossfeed_preset.hpp
    ├── crossfeed_ui.hpp
    ├── crystalizer.hpp
    ├── crystalizer_preset.hpp
    ├── crystalizer_ui.hpp
    ├── deepfilternet.hpp
    ├── deepfilternet_preset.hpp
    ├── deepfilternet_ui.hpp
    ├── deesser.hpp
    ├── deesser_preset.hpp
    ├── deesser_ui.hpp
    ├── delay.hpp
    ├── delay_preset.hpp
    ├── delay_ui.hpp
    ├── echo_canceller.hpp
    ├── echo_canceller_preset.hpp
    ├── echo_canceller_ui.hpp
    ├── effects_base.hpp
    ├── effects_box.hpp
    ├── equalizer.hpp
    ├── equalizer_band_box.hpp
    ├── equalizer_preset.hpp
    ├── equalizer_ui.hpp
    ├── exciter.hpp
    ├── exciter_preset.hpp
    ├── exciter_ui.hpp
    ├── expander.hpp
    ├── expander_preset.hpp
    ├── expander_ui.hpp
    ├── filter.hpp
    ├── filter_preset.hpp
    ├── filter_ui.hpp
    ├── fir_filter_bandpass.hpp
    ├── fir_filter_base.hpp
    ├── fir_filter_highpass.hpp
    ├── fir_filter_lowpass.hpp
    ├── gate.hpp
    ├── gate_preset.hpp
    ├── gate_ui.hpp
    ├── ladspa_wrapper.hpp
    ├── level_meter.hpp
    ├── level_meter_preset.hpp
    ├── level_meter_ui.hpp
    ├── libportal.hpp
    ├── limiter.hpp
    ├── limiter_preset.hpp
    ├── limiter_ui.hpp
    ├── loudness.hpp
    ├── loudness_preset.hpp
    ├── loudness_ui.hpp
    ├── lv2_wrapper.hpp
    ├── maximizer.hpp
    ├── maximizer_preset.hpp
    ├── maximizer_ui.hpp
    ├── module_info_holder.hpp
    ├── multiband_compressor.hpp
    ├── multiband_compressor_band_box.hpp
    ├── multiband_compressor_preset.hpp
    ├── multiband_compressor_ui.hpp
    ├── multiband_gate.hpp
    ├── multiband_gate_band_box.hpp
    ├── multiband_gate_preset.hpp
    ├── multiband_gate_ui.hpp
    ├── node_info_holder.hpp
    ├── output_level.hpp
    ├── pipe_manager.hpp
    ├── pipe_manager_box.hpp
    ├── pipe_objects.hpp
    ├── pipeline_type.hpp
    ├── pitch.hpp
    ├── pitch_preset.hpp
    ├── pitch_ui.hpp
    ├── plugin_base.hpp
    ├── plugin_preset_base.hpp
    ├── plugins_box.hpp
    ├── plugins_menu.hpp
    ├── preferences_general.hpp
    ├── preferences_spectrum.hpp
    ├── preferences_window.hpp
    ├── preset_type.hpp
    ├── presets_autoloading_holder.hpp
    ├── presets_manager.hpp
    ├── presets_menu.hpp
    ├── resampler.hpp
    ├── reverb.hpp
    ├── reverb_preset.hpp
    ├── reverb_ui.hpp
    ├── rnnoise.hpp
    ├── rnnoise_preset.hpp
    ├── rnnoise_ui.hpp
    ├── spectrum.hpp
    ├── speex.hpp
    ├── speex_preset.hpp
    ├── speex_ui.hpp
    ├── stereo_tools.hpp
    ├── stereo_tools_preset.hpp
    ├── stereo_tools_ui.hpp
    ├── stream_input_effects.hpp
    ├── stream_output_effects.hpp
    ├── string_literal_wrapper.hpp
    ├── tags_app.hpp
    ├── tags_equalizer.hpp
    ├── tags_multiband_compressor.hpp
    ├── tags_multiband_gate.hpp
    ├── tags_pipewire.hpp
    ├── tags_plugin_name.hpp
    ├── tags_resources.hpp
    ├── tags_schema.hpp
    ├── test_signals.hpp
    ├── ui_helpers.hpp
    └── util.hpp
├── meson.build
├── meson_options.txt
├── po
    ├── LINGUAS
    ├── POTFILES.in
    ├── af.po
    ├── ar.po
    ├── bg.po
    ├── ca.po
    ├── cs.po
    ├── da.po
    ├── de.po
    ├── easyeffects.pot
    ├── es.po
    ├── es_CO.po
    ├── es_MX.po
    ├── es_VE.po
    ├── eu.po
    ├── fr.po
    ├── ga.po
    ├── gl.po
    ├── hr.po
    ├── hu.po
    ├── id_ID.po
    ├── it_IT.po
    ├── ja.po
    ├── ka.po
    ├── km.po
    ├── ko.po
    ├── meson.build
    ├── nb_NO.po
    ├── news
    │   ├── LINGUAS
    │   ├── POTFILES.in
    │   ├── af.po
    │   ├── ar.po
    │   ├── cs.po
    │   ├── da.po
    │   ├── de.po
    │   ├── easyeffects-news.pot
    │   ├── es.po
    │   ├── es_CO.po
    │   ├── es_MX.po
    │   ├── es_VE.po
    │   ├── eu.po
    │   ├── fi.po
    │   ├── fr_FR.po
    │   ├── ga.po
    │   ├── gl.po
    │   ├── hi.po
    │   ├── hr.po
    │   ├── hu.po
    │   ├── id_ID.po
    │   ├── it_IT.po
    │   ├── ja.po
    │   ├── km.po
    │   ├── ko.po
    │   ├── meson.build
    │   ├── nb_NO.po
    │   ├── nl.po
    │   ├── nn.po
    │   ├── pl.po
    │   ├── pt.po
    │   ├── pt_BR.po
    │   ├── ro.po
    │   ├── ru.po
    │   ├── sk.po
    │   ├── sv.po
    │   ├── ta.po
    │   ├── th.po
    │   ├── tr.po
    │   ├── uk.po
    │   ├── zh_CN.po
    │   └── zh_Hant.po
    ├── nl.po
    ├── nn.po
    ├── pl.po
    ├── pt.po
    ├── pt_BR.po
    ├── ro.po
    ├── ru.po
    ├── sk.po
    ├── sv.po
    ├── ta.po
    ├── th.po
    ├── tr.po
    ├── uk.po
    ├── zh_CN.po
    └── zh_Hant.po
├── src
    ├── app_info.cpp
    ├── application.cpp
    ├── application_ui.cpp
    ├── apps_box.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_combine.cpp
    ├── convolver_menu_impulses.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
    ├── deepfilternet.cpp
    ├── deepfilternet_preset.cpp
    ├── deepfilternet_ui.cpp
    ├── deesser.cpp
    ├── deesser_preset.cpp
    ├── deesser_ui.cpp
    ├── delay.cpp
    ├── delay_preset.cpp
    ├── delay_ui.cpp
    ├── easyeffects.cpp
    ├── echo_canceller.cpp
    ├── echo_canceller_preset.cpp
    ├── echo_canceller_ui.cpp
    ├── effects_base.cpp
    ├── effects_box.cpp
    ├── equalizer.cpp
    ├── equalizer_band_box.cpp
    ├── equalizer_preset.cpp
    ├── equalizer_ui.cpp
    ├── exciter.cpp
    ├── exciter_preset.cpp
    ├── exciter_ui.cpp
    ├── expander.cpp
    ├── expander_preset.cpp
    ├── expander_ui.cpp
    ├── filter.cpp
    ├── filter_preset.cpp
    ├── filter_ui.cpp
    ├── fir_filter_bandpass.cpp
    ├── fir_filter_base.cpp
    ├── fir_filter_highpass.cpp
    ├── fir_filter_lowpass.cpp
    ├── gate.cpp
    ├── gate_preset.cpp
    ├── gate_ui.cpp
    ├── ladspa_wrapper.cpp
    ├── level_meter.cpp
    ├── level_meter_preset.cpp
    ├── level_meter_ui.cpp
    ├── libportal.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
    ├── meson.build
    ├── 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_band_box.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
    ├── plugin_preset_base.cpp
    ├── plugins_box.cpp
    ├── plugins_menu.cpp
    ├── preferences_general.cpp
    ├── preferences_spectrum.cpp
    ├── preferences_window.cpp
    ├── presets_autoloading_holder.cpp
    ├── presets_manager.cpp
    ├── presets_menu.cpp
    ├── resampler.cpp
    ├── reverb.cpp
    ├── reverb_preset.cpp
    ├── reverb_ui.cpp
    ├── rnnoise.cpp
    ├── rnnoise_preset.cpp
    ├── rnnoise_ui.cpp
    ├── spectrum.cpp
    ├── speex.cpp
    ├── speex_preset.cpp
    ├── speex_ui.cpp
    ├── stereo_tools.cpp
    ├── stereo_tools_preset.cpp
    ├── stereo_tools_ui.cpp
    ├── stream_input_effects.cpp
    ├── stream_output_effects.cpp
    ├── tags_plugin_name.cpp
    ├── test_signals.cpp
    ├── ui_helpers.cpp
    └── util.cpp
└── util
    ├── NEWS.yaml
    ├── autobuild.sh
    ├── changes_since_last_release.sh
    ├── clang-tidy.sh
    ├── crystalizer.py
    ├── environmental_variables.sh
    ├── flatpak
        ├── com.github.wwmm.easyeffects.Devel.json
        ├── easyeffects-modules.json
        ├── patch
        │   ├── bs2b
        │   │   └── 001-fix-automake-dist-lzma.patch
        │   └── zita-convolver
        │   │   └── 0001-Fix-makefile.patch
        └── shared-modules
        │   └── linux-audio
        │       ├── fftw3f.json
        │       ├── ladspa.json
        │       ├── lilv.json
        │       └── lv2.json
    ├── news-release-template.yaml
    ├── run-clang-tidy.py
    ├── sanitizer.supp
    ├── sanitizer.txt
    ├── test.wav
    ├── update-release-files.sh
    ├── update_translation_templates.sh
    └── valgrind.txt


/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: wwmm
2 | liberapay: wwmm
3 | patreon: wellingtonwallace
4 | custom: https://www.paypal.com/donate?hosted_button_id=RK723F4EKH2UE
5 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.yml:
--------------------------------------------------------------------------------
 1 | name: Bug Report
 2 | description: Report an EasyEffects bug
 3 | body:
 4 | - type: input
 5 |   attributes:
 6 |     label: EasyEffects Version
 7 |     placeholder: EasyEffects Settings > About EasyEffects
 8 |   validations:
 9 |     required: true
10 | - type: dropdown
11 |   attributes:
12 |     label: What package are you using?
13 |     options:
14 |       - Arch (easyeffects)
15 |       - AUR (easyeffects-git)
16 |       - Fedora
17 |       - Flatpak (Flathub)
18 |       - Flatpak Nightly (Flathub-beta)
19 |       - Gentoo
20 |       - NixOS
21 |       - openSUSE
22 |       - Other (specify below)
23 |   validations:
24 |     required: true
25 | - type: input
26 |   attributes:
27 |     label: Distribution
28 |     placeholder: "e.g. Arch Linux, Fedora 35 or Ubuntu 20.04"
29 |   validations:
30 |     required: true
31 | - type: textarea
32 |   attributes:
33 |     label: Describe the bug
34 |     description: A clear description of the bug you've experienced.
35 |   validations:
36 |     required: true
37 | - type: textarea
38 |   attributes:
39 |     label: Expected Behavior
40 |     description: A clear and concise description of what you expected to happen.
41 | - type: textarea
42 |   attributes:
43 |     label: Debug Log
44 |     description: If relevant, please add a log by launching with `G_MESSAGES_DEBUG=easyeffects`
45 |     value: "<details><summary>Debug Log</summary><br/>  
46 |     
47 |     
48 |            ```  
49 |            
50 |            Paste your log here  
51 |            
52 |            ```  
53 |            
54 |            </details>"
55 | - type: textarea
56 |   attributes:
57 |     label: Additional Information
58 |     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.
59 | 


--------------------------------------------------------------------------------
/.github/dependabot.yaml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 |   - package-ecosystem: "github-actions"
4 |     directory: "/"
5 |     schedule:
6 |       interval: "daily"
7 | 


--------------------------------------------------------------------------------
/.github/workflows/deploy-help.yaml:
--------------------------------------------------------------------------------
 1 | name: Deploy help
 2 | 
 3 | on:
 4 |   # Runs on every push to a tag not containing a /
 5 |   push:
 6 |     tags:
 7 |       - "*"
 8 |   # Allows you to run this workflow manually from the Actions tab
 9 |   workflow_dispatch:
10 | 
11 | permissions:
12 |   contents: read
13 |   pages: write
14 |   id-token: write
15 | 
16 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
17 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
18 | concurrency:
19 |   group: "pages"
20 |   cancel-in-progress: false
21 | 
22 | jobs:
23 |   deploy-help:
24 |     name: Deploy help
25 |     environment:
26 |       name: github-pages
27 |       url: ${{ steps.deployment.outputs.page_url }}
28 |     runs-on: ubuntu-22.04
29 |     steps:
30 |       - name: Checkout
31 |         uses: actions/checkout@v4.2.2
32 | 
33 |       - name: Setup Pages
34 |         uses: actions/configure-pages@v5.0.0
35 | 
36 |       - name: Build html help pages
37 |         run: |
38 |           sudo apt-get update
39 |           sudo apt-get upgrade -y
40 |           sudo apt-get install -y yelp-tools
41 |           mkdir help/dist-html
42 |           yelp-build html -o help/dist-html help/C
43 | 
44 |       - name: Upload artifact
45 |         uses: actions/upload-pages-artifact@v3.0.1
46 |         with:
47 |           path: help/dist-html
48 | 
49 |       - name: Deploy to GitHub Pages
50 |         id: deployment
51 |         uses: actions/deploy-pages@v4.0.5
52 | 


--------------------------------------------------------------------------------
/.github/workflows/flatpak-update.yaml:
--------------------------------------------------------------------------------
 1 | name: Flatpak dependency updates
 2 | on:
 3 |   schedule: # for scheduling to work this file must be in the default branch
 4 |   - cron: "0 0 * * *" # run every day
 5 |   workflow_dispatch: # can be manually dispatched under GitHub's "Actions" tab 
 6 | 
 7 | jobs:
 8 |   flatpak-external-data-checker:
 9 |     runs-on: ubuntu-22.04
10 | 
11 |     steps:
12 |       - uses: actions/checkout@v4.2.2
13 |         with:
14 |           # we can't push changes to a fork via a shallow update, we need to clone the full repo
15 |           fetch-depth: 0
16 |           # by default when persisting credentials the local git config will use the workflow provided GITHUB_TOKEN, not our own GITHUB_TOKEN env var for the container
17 |           # we must not use the provided GITHUB_TOKEN, as it will fail to push to the fork since the provided GITHUB_TOKEN is only for the repository where the workflow is running 
18 |           persist-credentials: false
19 | 
20 |       - uses: docker://ghcr.io/flathub/flatpak-external-data-checker:latest
21 |         env:
22 |           GIT_AUTHOR_NAME: EasyEffects Bot
23 |           GIT_COMMITTER_NAME: EasyEffects Bot
24 |           # email sets "EasyEffects Bot" user as commit author
25 |           GIT_AUTHOR_EMAIL: 110548574+easyeffects-bot@users.noreply.github.com
26 |           GIT_COMMITTER_EMAIL: 110548574+easyeffects-bot@users.noreply.github.com
27 |           EMAIL: 110548574+easyeffects-bot@users.noreply.github.com
28 |           GITHUB_TOKEN: ${{ secrets.EASYEFFECTS_BOT }}
29 |         with:
30 |           entrypoint: /bin/bash
31 |           args: -c "git config --global --add safe.directory /github/workspace && cd /github/workspace && /app/flatpak-external-data-checker --update --always-fork util/flatpak/com.github.wwmm.easyeffects.Devel.json"
32 | 


--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
 1 | __pycache__
 2 | _build
 3 | build
 4 | build-dir
 5 | locale
 6 | gschemas.compiled
 7 | obj-*-linux-gnu
 8 | .vscode
 9 | node_modules
10 | package-lock.json
11 | compile_commands.json
12 | .clangd
13 | .cache
14 | 
15 | # Compiled python modules.
16 | *.pyc
17 | 
18 | # binary language files
19 | *.mo
20 | 
21 | # patches
22 | *.patch
23 | 
24 | \.python-version
25 | 
26 | # exclude debian building logs and other junk
27 | debian/*
28 | !debian/changelog
29 | !debian/changelog.tpl
30 | !debian/compat
31 | !debian/control
32 | !debian/copyright
33 | !debian/docs
34 | !debian/pycompat
35 | !debian/rules
36 | !debian/source/format
37 | !debian/build-ppa.sh
38 | !debian/*.install
39 | !debian/*lintian-overrides
40 | !debian/watch
41 | !debian/patches
42 | !debian/patches/*.patch
43 | !debian/source
44 | 
45 | /build-ppa.sh
46 | 
47 | # Dolphin file manager creates the file .directory to save some folder-specific settings
48 | *.directory
49 | 
50 | *-build-deps*.deb
51 | 
52 | .build-tools.cson
53 | 
54 | ppastats
55 | .autobuild
56 | 
57 | # exclude flatpak build directories
58 | build-dir*
59 | util/flatpak/repo
60 | .flatpak
61 | .flatpak-builder
62 | 
63 | # explictly include flatpak patch/shared-modules directory which includes usually ignored patch files
64 | !util/flatpak/patch/**/*.patch
65 | !util/flatpak/shared-modules/linux-audio/**/*.patch
66 | 


--------------------------------------------------------------------------------
/PKGBUILD_AUR:
--------------------------------------------------------------------------------
 1 | # Maintainer: robertfoster
 2 | # Contributor: Bleuzen <supgesu@gmail.com>
 3 | # Contributor: Filipe Laíns (FFY00) <lains@archlinux.org>
 4 | # Contributor: Wellington <wellingtonwallace@gmail.com>
 5 | 
 6 | pkgname=easyeffects-git
 7 | pkgver=7.0.4.r136.gce892ece
 8 | pkgrel=1
 9 | pkgdesc='Audio Effects for Pipewire applications'
10 | arch=(x86_64 i686 arm armv6h armv7h aarch64)
11 | url='https://github.com/wwmm/easyeffects'
12 | license=('GPL3')
13 | depends=('fftw' 'fmt' 'gsl' 'gtk4' 'libadwaita' 'libbs2b' 'libebur128' 'libsamplerate' 'libsigc++-3.0' 'libsndfile'
14 |   'lilv' 'lv2' 'nlohmann-json' 'pipewire' 'rnnoise' 'soundtouch' 'speexdsp' 'tbb' 'zita-convolver')
15 | makedepends=('appstream-glib' 'git' 'itstool' 'meson' 'ladspa')
16 | optdepends=('calf: limiter, exciter, bass enhancer and others'
17 |   'lsp-plugins: equalizer, compressor, delay, loudness'
18 |   'zam-plugins: maximizer'
19 |   'mda.lv2: bass loudness'
20 |   'yelp: in-app help'
21 |   'libdeep_filter_ladspa: noise remover')
22 | conflicts=("${pkgname%%-git}")
23 | provides=("${pkgname%%-git}")
24 | source=("${pkgname%%-git}::git+${url}")
25 | sha512sums=('SKIP')
26 | 
27 | pkgver() {
28 |   cd "${pkgname%%-git}"
29 |   printf "%s" "$(git describe --long | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g')"
30 | }
31 | 
32 | build() {
33 |   arch-meson "${pkgname%%-git}" build
34 |   meson compile -C build
35 | }
36 | 
37 | package() {
38 |   DESTDIR="${pkgdir}" meson install -C build
39 | }
40 | 


--------------------------------------------------------------------------------
/data/com.github.wwmm.easyeffects-symbolic.svg:
--------------------------------------------------------------------------------
 1 | <svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
 2 |     <g class="ColorScheme-Text" fill="currentColor">
 3 |         <rect id="rect1" x="7.5" y="2" width="1" height="12" ry=".5"/>
 4 |         <rect id="rect2" x="12" y="4" width="1" height="8" ry=".5"/>
 5 |         <rect id="rect3" x="3" y="4" width="1" height="8" ry=".5"/>
 6 |         <circle id="circle1" cx="8" cy="5" r="1.5"/>
 7 |         <circle id="circle2" cx="12.5" cy="9" r="1.5"/>
 8 |         <circle id="circle3" cx="3.5" cy="7.5" r="1.5"/>
 9 |     </g>
10 |     <style type="text/css" id="current-color-scheme">
11 |         .ColorScheme-Text {
12 |             color: #232629;
13 |         }
14 |     </style>
15 | </svg>
16 | 


--------------------------------------------------------------------------------
/data/com.github.wwmm.easyeffects.desktop.in:
--------------------------------------------------------------------------------
 1 | [Desktop Entry]
 2 | # Translators: This is a variable for the application name, don't translate!
 3 | Name=@APP_NAME@
 4 | GenericName=Equalizer, Compressor and Other Audio Effects
 5 | Comment=Audio Effects for PipeWire Applications
 6 | Keywords=limiter;compressor;reverberation;equalizer;autovolume;
 7 | Categories=GTK;AudioVideo;Audio;
 8 | Exec=easyeffects
 9 | Icon=@APP_ID@
10 | StartupNotify=true
11 | DBusActivatable=true
12 | X-GNOME-UsesNotifications=true
13 | Terminal=false
14 | Type=Application
15 | 


--------------------------------------------------------------------------------
/data/com.github.wwmm.easyeffects.service.in:
--------------------------------------------------------------------------------
1 | [D-BUS Service]
2 | Name=@APP_ID@
3 | Exec=@BIN_DIR@/easyeffects --gapplication-service
4 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/credits.txt:
--------------------------------------------------------------------------------
 1 | - Icons I have made:
 2 | 
 3 | ee-spectrum-symbolic
 4 | 
 5 | - Icons I did not make:
 6 | 
 7 | ee-square-symbolic is the icon "media-playback-stop-symbolic" from the Adwaita package
 8 | ee-plugins-symbolic is the icon "application-x-addon-symbolic" from the Adwaita package
 9 | ee-drag-handle-symbolic is the icon "list-drag-handle-symbolic" from the Adwaita package
10 | ee-arrows-right-symbolic is the icon "media-playlist-consecutive-symbolic" from the Adwaita package
11 | ee-bypass-symbolic is the icon "system-log-out-symbolic" from the Adwaita package
12 | ee-applications-multimedia-symbolic is the icon "applications-multimedia-symbolic" from the Adwaita package
13 | ee-arrow-down-symbolic is made by SVG Repo from https://www.svgrepo.com/svg/85713/arrow-down (CC0 license)
14 | ee-double-vertical-lines-symbolic.svg is made by SVG Repo from https://www.svgrepo.com/svg/175958/parallel-lines (CC0 license)
15 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/ee-applications-multimedia-symbolic.svg:
--------------------------------------------------------------------------------
1 | <svg height="15.996094" viewBox="0 0 15.972656 15.996094" width="15.972656" xmlns="http://www.w3.org/2000/svg"><path d="m 1.96875 -0.00390625 s -0.96875 1.00000025 -0.96875 2.00000025 v 12 c 0 1.007812 -1 2 -1 2 h 1 s 0.421875 -0.425782 0.71875 -1 h 1 c -0.296875 0.574218 -0.71875 1 -0.71875 1 h 1 s 1 -1.019532 1 -2 v -2 h 1 v -1 h -1 v -5 h 8 v 1 h 3 v -5 c 0 -1 0.96875 -2.00000025 0.96875 -2.00000025 h -3 s -0.96875 1.00000025 -0.96875 2.00000025 v 3 h -8 v -3 c 0 -1 0.96875 -2.00000025 0.96875 -2.00000025 z m 0.3125 1.00000025 h 1 c -0.152344 0.304687 -0.28125 0.652344 -0.28125 1 h -1 c 0 -0.347656 0.128906 -0.695313 0.28125 -1 z m 11 0 h 1 c -0.152344 0.304687 -0.28125 0.652344 -0.28125 1 h -1 c 0 -0.347656 0.128906 -0.695313 0.28125 -1 z m -11.28125 2 h 1 v 1 h -1 z m 11 0 h 1 v 1 h -1 z m -11 2 h 1 v 1 h -1 z m 11 0 h 1 v 1 h -1 z m -11 2 h 1 v 1 h -1 z m 7 1 v 4.28125 c -0.292969 -0.171875 -0.636719 -0.28125 -1 -0.28125 c -1.105469 0 -2 0.894531 -2 2 c 0 1.105468 0.894531 2 2 2 s 2 -0.894532 2 -2 v -5 h 4 v 3.28125 c -0.292969 -0.171875 -0.636719 -0.28125 -1 -0.28125 c -1.105469 0 -2 0.894531 -2 2 c 0 1.105468 0.894531 2 2 2 s 2 -0.894532 2 -2 v -6 z m -7 1 h 1 v 1 h -1 z m 0 2 h 1 v 1 h -1 z m 0 2 h 1 v 1 h -1 z m 0 0" fill="#2e3436"/></svg>
2 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/ee-arrow-down-symbolic.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 466.678 466.678"><path d="M411.631,240.58L240.538,463.132c-1.714,2.234-4.386,3.546-7.196,3.546c-2.825,0-5.482-1.312-7.196-3.546L55.038,240.58 c-1.253-1.638-1.882-3.582-1.882-5.539c0-1.921,0.605-3.848,1.835-5.467c2.444-3.257,6.783-4.472,10.578-2.979l113.3,44.757 L178.856,9.079C178.868,4.061,182.923,0,187.947,0h90.774c5.024,0,9.079,4.061,9.091,9.079l-0.012,262.273l113.298-44.763 c3.8-1.492,8.139-0.278,10.592,2.985C414.149,232.837,414.138,237.341,411.631,240.58z" fill="#2e3436"/></svg>
2 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/ee-arrows-right-symbolic.svg:
--------------------------------------------------------------------------------
1 | <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"><path d="m 12 1 v 2 h -12 v 2 h 12 v 2 h 1 v -0.007812 c 0.265625 0.003906 0.519531 -0.101563 0.707031 -0.285157 l 2 -2 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 l -2 -2 c -0.1875 -0.183594 -0.441406 -0.289063 -0.707031 -0.285157 v -0.007812 z m 0 8 v 2 h -12 v 2 h 12 v 2 h 1 v -0.007812 c 0.265625 0.003906 0.519531 -0.101563 0.707031 -0.285157 l 2 -2 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 l -2 -2 c -0.1875 -0.183594 -0.441406 -0.289063 -0.707031 -0.285157 v -0.007812 z m 0 0" fill="#2e3436"/></svg>
2 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/ee-bypass-symbolic.svg:
--------------------------------------------------------------------------------
1 | <svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"><path d="m 13 5 v 0.003906 c 0.265625 0 0.519531 0.105469 0.707031 0.289063 l 2 2 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 l -2 2 c -0.1875 0.183594 -0.441406 0.289063 -0.707031 0.285157 v 0.007812 h -1 v -2 h -5 c -0.550781 0 -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 h 5 v -2 z m 0 0"/><path d="m 9.179688 1.097656 c -2.394532 -0.40625 -4.910157 0.453125 -6.546876 2.398438 c -2.175781 2.597656 -2.175781 6.40625 0 9 c 2.179688 2.597656 5.929688 3.257812 8.863282 1.5625 c 0.230468 -0.132813 0.398437 -0.351563 0.46875 -0.605469 c 0.066406 -0.257813 0.03125 -0.53125 -0.101563 -0.761719 c -0.277343 -0.476562 -0.886719 -0.640625 -1.367187 -0.363281 c -2.105469 1.214844 -4.765625 0.75 -6.328125 -1.117187 c -1.5625 -1.863282 -1.5625 -4.5625 0 -6.429688 c 1.5625 -1.863281 4.222656 -2.332031 6.328125 -1.113281 c 0.480468 0.273437 1.089844 0.113281 1.367187 -0.367188 c 0.132813 -0.226562 0.167969 -0.5 0.101563 -0.757812 c -0.070313 -0.257813 -0.238282 -0.476563 -0.46875 -0.609375 c -0.730469 -0.421875 -1.515625 -0.699219 -2.316406 -0.835938 z m 0 0"/></svg>
2 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/ee-double-vertical-lines-symbolic.svg:
--------------------------------------------------------------------------------
1 | <svg height="16" width="16" viewBox="0 0 15.602 15.602" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M10.155,0h2.961c0.191,0,0.352,0.161,0.352,0.354v14.893c0,0.195-0.16,0.355-0.352,0.355h-2.961 c-0.191,0-0.355-0.16-0.355-0.355V0.354C9.8,0.161,9.964,0,10.155,0z"/><path d="M2.488,0h2.963c0.191,0,0.35,0.161,0.35,0.354v14.893c0,0.195-0.158,0.355-0.35,0.355H2.488 c-0.196,0-0.354-0.161-0.354-0.356V0.354C2.134,0.161,2.292,0,2.488,0z" fill="#2e3436"/></svg>
3 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/ee-drag-handle-symbolic.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M4.494 0a1.5 1.5 0 00-1.5 1.5 1.5 1.5 0 001.5 1.5 1.5 1.5 0 001.5-1.5 1.5 1.5 0 00-1.5-1.5zm6 0a1.5 1.5 0 00-1.5 1.5 1.5 1.5 0 001.5 1.5 1.5 1.5 0 001.5-1.5 1.5 1.5 0 00-1.5-1.5zm-6 6a1.5 1.5 0 00-1.5 1.5 1.5 1.5 0 001.5 1.5 1.5 1.5 0 001.5-1.5 1.5 1.5 0 00-1.5-1.5zm6 0a1.5 1.5 0 00-1.5 1.5 1.5 1.5 0 001.5 1.5 1.5 1.5 0 001.5-1.5 1.5 1.5 0 00-1.5-1.5zm-6 6a1.5 1.5 0 00-1.5 1.5 1.5 1.5 0 001.5 1.5 1.5 1.5 0 001.5-1.5 1.5 1.5 0 00-1.5-1.5zm6 0a1.5 1.5 0 00-1.5 1.5 1.5 1.5 0 001.5 1.5 1.5 1.5 0 001.5-1.5 1.5 1.5 0 00-1.5-1.5z" fill="#2e3436"/></svg>
2 | 


--------------------------------------------------------------------------------
/data/icons/scalable/emblems/ee-spectrum-symbolic.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M 0.02696778,7.9590838 H 4.0269678 V 16.02239 H 0.02696778 Z" fill="#474747"/><path d="m 5.9385067,0.03045187 h 4 V 16.04011 h -4 z" fill="#474747"/><path d="m 12.025571,5.1441802 h 4 V 16.050258 h -4 z" fill="#474747"/></svg>
2 | 


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.autogain.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <enum id="com.github.wwmm.easyeffects.autogain.reference.enum">
 4 |         <value nick="Momentary" value="0" />
 5 |         <value nick="Shortterm" value="1" />
 6 |         <value nick="Integrated" value="2" />
 7 |         <value nick="Geometric Mean (MSI)" value="3" />
 8 |         <value nick="Geometric Mean (MS)" value="4" />
 9 |         <value nick="Geometric Mean (MI)" value="5" />
10 |         <value nick="Geometric Mean (SI)" value="6" />
11 |     </enum>
12 |     <schema id="com.github.wwmm.easyeffects.autogain">
13 |         <key name="bypass" type="b">
14 |             <default>false</default>
15 |         </key>
16 |         <key name="input-gain" type="d">
17 |             <range min="-36" max="36" />
18 |             <default>0</default>
19 |         </key>
20 |         <key name="output-gain" type="d">
21 |             <range min="-36" max="36" />
22 |             <default>0</default>
23 |         </key>
24 |         <key name="target" type="d">
25 |             <range min="-100" max="0" />
26 |             <default>-23</default>
27 |         </key>
28 |         <key name="reset-history" type="b">
29 |             <default>false</default>
30 |         </key>
31 |         <key name="reference" enum="com.github.wwmm.easyeffects.autogain.reference.enum">
32 |             <default>"Geometric Mean (MSI)"</default>
33 |         </key>
34 |         <key name="maximum-history" type="i">
35 |             <range min="6" max="3600" />
36 |             <default>15</default>
37 |         </key>
38 |         <key name="silence-threshold" type="d">
39 |             <range min="-100" max="0" />
40 |             <default>-70</default>
41 |         </key>
42 |     </schema>
43 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.bassenhancer.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.bassenhancer">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="amount" type="d">
16 |             <range min="-100" max="36" />
17 |             <default>0</default>
18 |         </key>
19 |         <key name="harmonics" type="d">
20 |             <range min="0.1" max="10" />
21 |             <default>8.5</default>
22 |         </key>
23 |         <key name="scope" type="d">
24 |             <range min="10" max="250" />
25 |             <default>100</default>
26 |         </key>
27 |         <key name="floor" type="d">
28 |             <range min="10" max="120" />
29 |             <default>20</default>
30 |         </key>
31 |         <key name="blend" type="d">
32 |             <range min="-10" max="10" />
33 |             <default>0</default>
34 |         </key>
35 |         <key name="floor-active" type="b">
36 |             <default>false</default>
37 |         </key>
38 |         <key name="listen" type="b">
39 |             <default>false</default>
40 |         </key>
41 |     </schema>
42 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.bassloudness.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.bassloudness">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="loudness" type="d">
16 |             <range min="-100" max="0" />
17 |             <default>-3.1</default>
18 |         </key>
19 |         <key name="output" type="d">
20 |             <range min="-100" max="0" />
21 |             <default>-6</default>
22 |         </key>
23 |         <key name="link" type="d">
24 |             <range min="-100" max="0" />
25 |             <default>-9.1</default>
26 |         </key>
27 |         <key name="listen" type="b">
28 |             <default>false</default>
29 |         </key>
30 |     </schema>
31 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.convolver.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.convolver">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="kernel-name" type="s">
16 |             <default>""</default>
17 |         </key>
18 |         <key name="ir-width" type="i">
19 |             <range min="0" max="200" />
20 |             <default>100</default>
21 |         </key>
22 |         <key name="autogain" type="b">
23 |             <default>true</default>
24 |         </key>
25 |     </schema>
26 | </schemalist>
27 | 


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.crossfeed.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.crossfeed">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="fcut" type="i">
16 |             <range min="300" max="2000" />
17 |             <default>700</default>
18 |         </key>
19 |         <key name="feed" type="d">
20 |             <range min="1" max="15" />
21 |             <default>4.5</default>
22 |         </key>
23 |     </schema>
24 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.deepfilternet.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.deepfilternet">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 | 
16 |         <key name="attenuation-limit" type="d">
17 |             <range min="0" max="100" />
18 |             <default>100</default>
19 |         </key>
20 |         <key name="min-processing-threshold" type="d">
21 |             <range min="-15" max="35" />
22 |             <default>-10</default>
23 |         </key>
24 |         <key name="max-erb-processing-threshold" type="d">
25 |             <range min="-15" max="35" />
26 |             <default>30</default>
27 |         </key>
28 |         <key name="max-df-processing-threshold" type="d">
29 |             <range min="-15" max="35" />
30 |             <default>20</default>
31 |         </key>
32 |         <key name="min-processing-buffer" type="i">
33 |             <range min="0" max="10" />
34 |             <default>0</default>
35 |         </key>
36 |         <key name="post-filter-beta" type="d">
37 |             <range min="0" max="0.05" />
38 |             <default>0.02</default>
39 |         </key>
40 |     </schema>
41 | </schemalist>
42 | 


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.delay.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.delay">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="dry-l" type="d">
16 |             <range min="-100" max="20" />
17 |             <default>-100</default>
18 |         </key>
19 |         <key name="dry-r" type="d">
20 |             <range min="-100" max="20" />
21 |             <default>-100</default>
22 |         </key>
23 |         <key name="wet-l" type="d">
24 |             <range min="-100" max="20" />
25 |             <default>0</default>
26 |         </key>
27 |         <key name="wet-r" type="d">
28 |             <range min="-100" max="20" />
29 |             <default>0</default>
30 |         </key>
31 |         <key name="time-l" type="d">
32 |             <range min="0" max="1000" />
33 |             <default>0</default>
34 |         </key>
35 |         <key name="time-r" type="d">
36 |             <range min="0" max="1000" />
37 |             <default>0</default>
38 |         </key>
39 |         <key name="invert-phase-l" type="b">
40 |             <default>false</default>
41 |         </key>
42 |         <key name="invert-phase-r" type="b">
43 |             <default>false</default>
44 |         </key>
45 |     </schema>
46 | </schemalist>
47 | 


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.echo_canceller.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.echocanceller">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="filter-length" type="i">
16 |             <range min="1" max="1000" />
17 |             <default>100</default>
18 |         </key>
19 |         <key name="residual-echo-suppression" type="i">
20 |             <range min="-100" max="-1" />
21 |             <default>-70</default>
22 |         </key>
23 |         <key name="near-end-suppression" type="i">
24 |             <range min="-100" max="-1" />
25 |             <default>-70</default>
26 |         </key>
27 |     </schema>
28 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.equalizer.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <enum id="com.github.wwmm.easyeffects.equalizer.mode.enum">
 4 |         <value nick="IIR" value="0" />
 5 |         <value nick="FIR" value="1" />
 6 |         <value nick="FFT" value="2" />
 7 |         <value nick="SPM" value="3" />
 8 |     </enum>
 9 |     <schema id="com.github.wwmm.easyeffects.equalizer">
10 |         <key name="bypass" type="b">
11 |             <default>false</default>
12 |         </key>
13 |         <key name="num-bands" type="i">
14 |             <range min="1" max="32" />
15 |             <default>32</default>
16 |         </key>
17 |         <key name="mode" enum="com.github.wwmm.easyeffects.equalizer.mode.enum">
18 |             <default>"IIR"</default>
19 |         </key>
20 |         <key name="input-gain" type="d">
21 |             <range min="-36" max="36" />
22 |             <default>0</default>
23 |         </key>
24 |         <key name="output-gain" type="d">
25 |             <range min="-36" max="36" />
26 |             <default>0</default>
27 |         </key>
28 |         <key name="split-channels" type="b">
29 |             <default>false</default>
30 |         </key>
31 |         <key name="balance" type="d">
32 |             <range min="-100" max="100" />
33 |             <default>0</default>
34 |         </key>
35 |         <key name="pitch-left" type="d">
36 |             <range min="-120" max="120" />
37 |             <default>0</default>
38 |         </key>
39 |         <key name="pitch-right" type="d">
40 |             <range min="-120" max="120" />
41 |             <default>0</default>
42 |         </key>
43 |     </schema>
44 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.exciter.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.exciter">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="amount" type="d">
16 |             <range min="-100" max="36" />
17 |             <default>0</default>
18 |         </key>
19 |         <key name="harmonics" type="d">
20 |             <range min="0.1" max="10" />
21 |             <default>8.5</default>
22 |         </key>
23 |         <key name="scope" type="d">
24 |             <range min="2000" max="12000" />
25 |             <default>7500</default>
26 |         </key>
27 |         <key name="ceil" type="d">
28 |             <range min="10000" max="20000" />
29 |             <default>16000</default>
30 |         </key>
31 |         <key name="blend" type="d">
32 |             <range min="-10" max="10" />
33 |             <default>0</default>
34 |         </key>
35 |         <key name="ceil-active" type="b">
36 |             <default>false</default>
37 |         </key>
38 |         <key name="listen" type="b">
39 |             <default>false</default>
40 |         </key>
41 |     </schema>
42 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.levelmeter.gschema.xml:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="UTF-8"?>
2 | <schemalist>
3 |     <schema id="com.github.wwmm.easyeffects.levelmeter">
4 |         <key name="bypass" type="b">
5 |             <default>false</default>
6 |         </key>
7 |     </schema>
8 | </schemalist>
9 | 


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.libportal.gschema.xml:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="UTF-8"?>
2 | <schemalist>
3 |     <schema id="com.github.wwmm.easyeffects.libportal" path="/com/github/wwmm/easyeffects/libportal/">
4 |         <key name="enable-autostart" type="b">
5 |             <default>false</default>
6 |         </key>
7 |     </schema>
8 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.maximizer.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.maximizer">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="release" type="d">
16 |             <range min="1" max="100" />
17 |             <default>25</default>
18 |         </key>
19 |         <key name="threshold" type="d">
20 |             <range min="-30" max="0" />
21 |             <default>0</default>
22 |         </key>
23 |     </schema>
24 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.outputlevel.gschema.xml:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="UTF-8"?>
2 | <schemalist>
3 |     <schema id="com.github.wwmm.easyeffects.outputlevel">
4 |         <key name="state" type="b">
5 |             <default>false</default>
6 |         </key>
7 |     </schema>
8 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.rnnoise.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.rnnoise">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="model-name" type="s">
16 |             <default>""</default>
17 |         </key>
18 |         <key name="enable-vad" type="b">
19 |             <default>false</default>
20 |         </key>
21 |         <key name="vad-thres" type="d">
22 |             <range min="0" max="100" />
23 |             <default>50</default>
24 |         </key>
25 |         <key name="wet" type="d">
26 |             <range min="-100" max="20" />
27 |             <default>0.0</default>
28 |         </key>
29 |         <key name="release" type="d">
30 |             <range min="0" max="20000" />
31 |             <default>20.0</default>
32 |         </key>
33 |     </schema>
34 | </schemalist>
35 | 


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.speex.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.speex">
 4 |         <key name="bypass" type="b">
 5 |             <default>false</default>
 6 |         </key>
 7 |         <key name="input-gain" type="d">
 8 |             <range min="-36" max="36" />
 9 |             <default>0</default>
10 |         </key>
11 |         <key name="output-gain" type="d">
12 |             <range min="-36" max="36" />
13 |             <default>0</default>
14 |         </key>
15 |         <key name="enable-denoise" type="b">
16 |             <default>true</default>
17 |         </key>
18 |         <key name="noise-suppression" type="i">
19 |             <range min="-100" max="-1" />
20 |             <default>-70</default>
21 |         </key>
22 |         <key name="enable-agc" type="b">
23 |             <default>false</default>
24 |         </key>
25 |         <key name="enable-vad" type="b">
26 |             <default>false</default>
27 |         </key>
28 |         <key name="vad-probability-start" type="i">
29 |             <range min="0" max="100" />
30 |             <default>95</default>
31 |         </key>
32 |         <key name="vad-probability-continue" type="i">
33 |             <range min="0" max="100" />
34 |             <default>90</default>
35 |         </key>
36 |         <key name="enable-dereverb" type="b">
37 |             <default>false</default>
38 |         </key>
39 |     </schema>
40 | </schemalist>


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.streaminputs.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.streaminputs" path="/com/github/wwmm/easyeffects/streaminputs/">
 4 |         <key name="plugins" type="as">
 5 |             <default>[]</default>
 6 |         </key>
 7 |         <key name="use-default-input-device" type="b">
 8 |             <default>true</default>
 9 |         </key>
10 |         <key name="input-device" type="s">
11 |             <default>""</default>
12 |         </key>
13 |         <key name="latency" type="i">
14 |             <range min="1" max="10000000" />
15 |             <default>50</default>
16 |         </key>
17 |         <key name="blocklist" type="as">
18 |             <default>[]</default>
19 |         </key>
20 |         <key name="show-blocklisted-apps" type="b">
21 |             <default>false</default>
22 |         </key>
23 |         <key name="show-plugins-list" type="b">
24 |             <default>true</default>
25 |         </key>
26 |     </schema>
27 | </schemalist>
28 | 


--------------------------------------------------------------------------------
/data/schemas/com.github.wwmm.easyeffects.streamoutputs.gschema.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <schemalist>
 3 |     <schema id="com.github.wwmm.easyeffects.streamoutputs" path="/com/github/wwmm/easyeffects/streamoutputs/">
 4 |         <key name="plugins" type="as">
 5 |             <default>[]</default>
 6 |         </key>
 7 |         <key name="use-default-output-device" type="b">
 8 |             <default>true</default>
 9 |         </key>
10 |         <key name="output-device" type="s">
11 |             <default>""</default>
12 |         </key>
13 |         <key name="latency" type="i">
14 |             <range min="1" max="10000000" />
15 |             <default>50</default>
16 |         </key>
17 |         <key name="blocklist" type="as">
18 |             <default>[]</default>
19 |         </key>
20 |         <key name="show-blocklisted-apps" type="b">
21 |             <default>false</default>
22 |         </key>
23 |         <key name="show-plugins-list" type="b">
24 |             <default>true</default>
25 |         </key>
26 |     </schema>
27 | </schemalist>
28 | 


--------------------------------------------------------------------------------
/data/ui/apps_box.ui:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <interface domain="easyeffects">
 3 |     <template class="AppsBox" parent="GtkBox">
 4 |         <property name="orientation">vertical</property>
 5 |         <property name="hexpand">1</property>
 6 |         <property name="vexpand">1</property>
 7 |         <property name="spacing">6</property>
 8 |         <child>
 9 |             <object class="GtkOverlay" id="overlay">
10 |                 <child>
11 |                     <object class="GtkScrolledWindow">
12 |                         <child>
13 |                             <object class="GtkListView" id="listview">
14 |                                 <property name="hexpand">1</property>
15 |                                 <property name="vexpand">1</property>
16 |                                 <accessibility>
17 |                                     <property name="label" translatable="yes">Applications List</property>
18 |                                 </accessibility>
19 |                             </object>
20 |                         </child>
21 |                     </object>
22 |                 </child>
23 | 
24 |                 <child type="overlay">
25 |                     <object class="AdwStatusPage" id="overlay_empty_list">
26 |                         <property name="icon-name">ee-applications-multimedia-symbolic</property>
27 |                         <property name="title" translatable="yes">Empty List</property>
28 |                         <property name="description" translatable="yes">No Audio Application Available</property>
29 |                     </object>
30 |                 </child>
31 |             </object>
32 |         </child>
33 |     </template>
34 | </interface>


--------------------------------------------------------------------------------
/data/ui/chart.ui:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="UTF-8"?>
2 | <interface domain="easyeffects">
3 |     <template class="Chart" parent="GtkWidget">
4 |         <property name="hexpand">1</property>
5 |         <property name="height-request">100</property>
6 |     </template>
7 | </interface>


--------------------------------------------------------------------------------
/data/ui/custom.css:
--------------------------------------------------------------------------------
1 | .drag-listboxrow-icon {
2 |   background: white;
3 |   border: 1px solid black;
4 | }
5 | 


--------------------------------------------------------------------------------
/data/ui/factory_input_device_dropdown.ui:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <interface domain="easyeffects">
 3 |     <template class="GtkListItem">
 4 |         <property name="child">
 5 |             <object class="GtkBox">
 6 |                 <property name="spacing">3</property>
 7 |                 <child>
 8 |                     <object class="GtkImage">
 9 |                         <property name="halign">start</property>
10 |                         <property name="valign">center</property>
11 |                         <property name="icon-name">audio-input-microphone-symbolic</property>
12 |                     </object>
13 |                 </child>
14 | 
15 |                 <child>
16 |                     <object class="GtkLabel">
17 |                         <property name="ellipsize">end</property>
18 |                         <binding name="label">
19 |                             <lookup name="description" type="NodeInfoHolder">
20 |                                 <lookup name="item">GtkListItem</lookup>
21 |                             </lookup>
22 |                         </binding>
23 |                     </object>
24 |                 </child>
25 |             </object>
26 |         </property>
27 |     </template>
28 | </interface>
29 | 


--------------------------------------------------------------------------------
/data/ui/factory_node_dropdown.ui:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <interface domain="easyeffects">
 3 |     <template class="GtkListItem">
 4 |         <property name="child">
 5 |             <object class="GtkBox">
 6 |                 <property name="spacing">3</property>
 7 |                 <child>
 8 |                     <object class="GtkImage">
 9 |                         <property name="halign">start</property>
10 |                         <property name="valign">center</property>
11 |                         <binding name="icon-name">
12 |                             <lookup name="icon-name" type="NodeInfoHolder">
13 |                                 <lookup name="item">GtkListItem</lookup>
14 |                             </lookup>
15 |                         </binding>
16 |                     </object>
17 |                 </child>
18 | 
19 |                 <child>
20 |                     <object class="GtkLabel">
21 |                         <property name="ellipsize">end</property>
22 |                         <binding name="label">
23 |                             <lookup name="description" type="NodeInfoHolder">
24 |                                 <lookup name="item">GtkListItem</lookup>
25 |                             </lookup>
26 |                         </binding>
27 |                     </object>
28 |                 </child>
29 |             </object>
30 |         </property>
31 |     </template>
32 | </interface>
33 | 


--------------------------------------------------------------------------------
/data/ui/factory_output_device_dropdown.ui:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <interface domain="easyeffects">
 3 |     <template class="GtkListItem">
 4 |         <property name="child">
 5 |             <object class="GtkBox">
 6 |                 <property name="spacing">3</property>
 7 |                 <child>
 8 |                     <object class="GtkImage">
 9 |                         <property name="halign">start</property>
10 |                         <property name="valign">center</property>
11 |                         <property name="icon-name">audio-speakers-symbolic</property>
12 |                     </object>
13 |                 </child>
14 | 
15 |                 <child>
16 |                     <object class="GtkLabel">
17 |                         <property name="ellipsize">end</property>
18 |                         <binding name="label">
19 |                             <lookup name="description" type="NodeInfoHolder">
20 |                                 <lookup name="item">GtkListItem</lookup>
21 |                             </lookup>
22 |                         </binding>
23 |                     </object>
24 |                 </child>
25 |             </object>
26 |         </property>
27 |     </template>
28 | </interface>
29 | 


--------------------------------------------------------------------------------
/data/ui/factory_presets_dropdown.ui:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <interface domain="easyeffects">
 3 |     <template class="GtkListItem">
 4 |         <property name="child">
 5 |             <object class="GtkBox">
 6 |                 <property name="spacing">3</property>
 7 |                 <child>
 8 |                     <object class="GtkImage">
 9 |                         <property name="halign">start</property>
10 |                         <property name="valign">center</property>
11 |                         <property name="icon-name">emblem-system-symbolic</property>
12 |                     </object>
13 |                 </child>
14 | 
15 |                 <child>
16 |                     <object class="GtkLabel">
17 |                         <property name="ellipsize">end</property>
18 |                         <binding name="label">
19 |                             <lookup name="string" type="GtkStringObject">
20 |                                 <lookup name="item">GtkListItem</lookup>
21 |                             </lookup>
22 |                         </binding>
23 |                     </object>
24 |                 </child>
25 |             </object>
26 |         </property>
27 |     </template>
28 | </interface>
29 | 


--------------------------------------------------------------------------------
/data/ui/preferences_window.ui:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="UTF-8"?>
2 | <interface domain="easyeffects">
3 |     <template class="PreferencesWindow" parent="AdwPreferencesDialog"> </template>
4 | </interface>


--------------------------------------------------------------------------------
/debian/changelog:
--------------------------------------------------------------------------------
1 | easyeffects (6.2.5-1) unstable; urgency=medium
2 | 
3 |   * Version 6.2.5 upstream.
4 | 
5 |  -- Boyuan Yang <byang@debian.org>  Sat, 18 Jun 2022 19:16:31 -0400
6 | 


--------------------------------------------------------------------------------
/debian/control:
--------------------------------------------------------------------------------
 1 | Source: easyeffects
 2 | Section: sound
 3 | Priority: optional
 4 | Maintainer: Boyuan Yang <byang@debian.org>
 5 | Build-Depends:
 6 |  appstream-util,
 7 |  debhelper-compat (= 13),
 8 |  gettext,
 9 |  itstool,
10 |  libadwaita-1-dev,
11 |  libbs2b-dev,
12 |  libebur128-dev,
13 |  libfftw3-dev,
14 |  libfmt-dev,
15 |  libglib2.0-dev,
16 |  libgtk-4-dev,
17 |  liblilv-dev,
18 |  libpipewire-0.3-dev,
19 |  libsoundtouch-dev,
20 |  libsamplerate0-dev,
21 |  libsigc++-3.0-dev,
22 |  libsndfile-dev,
23 |  libspeexdsp-dev,
24 |  libtbb-dev,
25 |  libzita-convolver-dev,
26 |  lv2-dev,
27 |  meson,
28 |  nlohmann-json3-dev,
29 |  pkg-config,
30 |  ladspa-sdk,
31 | Standards-Version: 4.6.1
32 | Homepage: https://github.com/wwmm/easyeffects
33 | 
34 | Package: easyeffects
35 | Architecture: any
36 | Depends:
37 |  calf-plugins,
38 |  lsp-plugins-lv2 | lsp-plugins,
39 |  ${misc:Depends},
40 |  ${shlibs:Depends},
41 | Recommends:
42 |  mda-lv2,
43 |  zam-plugins,
44 |  libdeep_filter_ladspa,
45 | Description: Audio effects for PipeWire applications
46 |  Many sound effects for PipeWire input and output.
47 | 


--------------------------------------------------------------------------------
/debian/rules:
--------------------------------------------------------------------------------
1 | #!/usr/bin/make -f
2 | 
3 | %:
4 | 	dh $@
5 | 


--------------------------------------------------------------------------------
/debian/source/format:
--------------------------------------------------------------------------------
1 | 3.0 (quilt)
2 | 


--------------------------------------------------------------------------------
/debian/watch:
--------------------------------------------------------------------------------
1 | version=4
2 | opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*@ARCHIVE_EXT@)%@PACKAGE@-$1%" \
3 |  https://github.com/wwmm/easyeffects/tags \
4 |  (?:.*?/)?v?@ANY_VERSION@@ARCHIVE_EXT@
5 | 


--------------------------------------------------------------------------------
/help/C/advancedinfo.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="advancedinfo" style="2column">
 4 |     <info>
 5 |         <link type="guide" xref="index#ui" />
 6 |     </info>
 7 |     <title>Advanced Information</title>
 8 |     <p>Easy Effects audio processing is composed by three main stages. Each of them needs a specific audio format and sampling rate.</p>
 9 |     <p>In the bottom bar is reported the pipeline output sampling rate (in kHz) and the latency (in ms) introduced by the audio processing stage.</p>
10 |     <p>Every stream in applications list also reports its own latency and sampling rate, along with status and format.</p>
11 | </page>
12 | 


--------------------------------------------------------------------------------
/help/C/bassloudness.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="bassloudness">
 4 |     <info>
 5 |         <link type="guide" xref="index#plugins"/>
 6 |     </info>
 7 |     <title>Bass Loudness</title>
 8 |     <p>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".</p>
 9 |     <terms>
10 |         <item>
11 |             <title>
12 |                 <em style="strong" its:withinText="nested">Loudness</em>
13 |             </title>
14 |             <p>Source level relative to listening level (based on a 100 dB SPL maximum level).</p>
15 |         </item>
16 |         <item>
17 |             <title>
18 |                 <em style="strong" its:withinText="nested">Output</em>
19 |             </title>
20 |             <p>Change output level.</p>
21 |         </item>
22 |         <item>
23 |             <title>
24 |                 <em style="strong" its:withinText="nested">Link</em>
25 |             </title>
26 |             <p>Automatically adjusts Output to maintain a consistent tonal balance at all levels.</p>
27 |         </item>
28 |     </terms>
29 |     <section>
30 |         <title>References</title>
31 |         <list>
32 |             <item>
33 |                 <p>
34 |                     <link href="https://en.wikipedia.org/wiki/Equal-loudness_contour" its:translate="no">Wikipedia Equal-Loudness Contour</link>
35 |                 </p>
36 |             </item>
37 |             <item>
38 |                 <p>
39 |                     <link href="http://mda.smartelectronix.com/vst/help/loudness.htm" its:translate="no">MDA Loudness</link>
40 |                 </p>
41 |             </item>
42 |         </list>
43 |     </section>
44 | </page>
45 | 


--------------------------------------------------------------------------------
/help/C/blocklist.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="blocklist">
 4 |     <info>
 5 |         <link type="guide" xref="index#ui"/>
 6 |     </info>
 7 |     <title>Applications Excluded</title>
 8 |     <p>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.</p>
 9 |     <p>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.</p>
10 |     <p>A specific application in the Players/Recorders list can be quickly added to the Excluded Apps just clicking the "Exclude" checkbutton.</p>
11 | </page>
12 | 


--------------------------------------------------------------------------------
/help/C/crystalizer.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="crystalizer">
 4 |     <info>
 5 |         <link type="guide" xref="index#plugins"/>
 6 |     </info>
 7 |     <title>Crystalizer</title>
 8 |     <p>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.</p>
 9 |     <terms>
10 |         <item>
11 |             <title>
12 |                 <em style="strong" its:withinText="nested">Intensities</em>
13 |             </title>
14 |             <p>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.</p>
15 |         </item>
16 |         <item>
17 |             <title>
18 |                 <em style="strong" its:withinText="nested">Bypass</em>
19 |             </title>
20 |             <p>When active the audio signal passing through the selected band is not modified.</p>
21 |         </item>
22 |         <item>
23 |             <title>
24 |                 <em style="strong" its:withinText="nested">Mute</em>
25 |             </title>
26 |             <p>Mutes the selected band.</p>
27 |         </item>
28 |     </terms>
29 |     <section>
30 |         <title>References</title>
31 |         <list>
32 |             <item>
33 |                 <p>
34 |                     <link href="https://en.wikipedia.org/wiki/Dynamic_range" its:translate="no">Wikipedia Dynamic Range</link>
35 |                 </p>
36 |             </item>
37 |         </list>
38 |     </section>
39 | </page>
40 | 


--------------------------------------------------------------------------------
/help/C/effectsorder.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="effectsorder" style="2column">
 4 |     <info>
 5 |         <link type="guide" xref="index#ui"/>
 6 |     </info>
 7 |     <title>Changing Effects Order</title>
 8 |     <p>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.</p>
 9 | </page>
10 | 


--------------------------------------------------------------------------------
/help/C/enableapp.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="enableapp" style="2column">
 4 |     <info>
 5 |         <link type="guide" xref="index#ui"/>
 6 |     </info>
 7 |     <title>Enable or Disable an Application</title>
 8 |     <p>The user can choose which applications have effects applied through the Enable checkbutton. "Process All Inputs/Outputs" option in <link xref="general" its:withinText="yes">General Settings</link> can be activated to always apply effects to whichever application.
 9 |     </p>
10 |     <p>Note that without the "Process All Inputs/Outputs" option the enabled state may not replicated for an application at the next session. This is because "Process All Inputs/Outputs" makes Easy Effects trying to move the stream to its virtual device every time a new application spawns (unless it is listed in the <link xref="blocklist" its:withinText="yes">Excluded Apps</link>). When Easy Effects is not running, the app stream may be redirected to another destination by Pipewire, any third party audio manager or the app itself. This leads Easy Effects to not receive the stream at the next startup if "Process All Inputs/Outputs" option is not active.</p>
11 | </page>
12 | 


--------------------------------------------------------------------------------
/help/C/rnnoise.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="rnnoise">
 4 |     <info>
 5 |         <link type="guide" xref="index#plugins" />
 6 |     </info>
 7 |     <title>Noise Reduction</title>
 8 |     <p>The Noise Reduction is a process aimed to attenuate the disturbing noise from a signal.</p>
 9 |     <p>Easy Effects 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.</p>
10 |     <p>Standard RNNoise Model is used and custom models can be imported to perform different types of noise reduction.</p>
11 |     <section>
12 |         <title>References</title>
13 |         <list>
14 |             <item>
15 |                 <p>
16 |                     <link href="https://en.wikipedia.org/wiki/Noise_reduction" its:translate="no">Wikipedia Noise Reduction</link>
17 |                 </p>
18 |             </item>
19 |             <item>
20 |                 <p>
21 |                     <link href="https://en.wikipedia.org/wiki/Recurrent_neural_network" its:translate="no">Wikipedia Recurrent Neural Network</link>
22 |                 </p>
23 |             </item>
24 |             <item>
25 |                 <p>
26 |                     <link href="https://jmvalin.ca/demo/rnnoise/" its:translate="no">Jean-Marc Valin - RNNoise: Learning Noise Suppression</link>
27 |                 </p>
28 |             </item>
29 |         </list>
30 |     </section>
31 | </page>
32 | 


--------------------------------------------------------------------------------
/help/C/saturated.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="saturated" style="2column">
 4 |     <info>
 5 |         <link type="guide" xref="index#ui"/>
 6 |     </info>
 7 |     <title>Saturation Warning</title>
 8 |     <p>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 <link xref="limiter" its:withinText="yes">Limiter</link> or the <link xref="maximizer" its:withinText="yes">Maximizer</link> plugin.</p>
 9 | </page>
10 | 


--------------------------------------------------------------------------------
/help/C/settingsmenu.page:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="UTF-8"?>
2 | <page xmlns="http://projectmallard.org/1.0/"
3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="settingsmenu" style="2column">
4 |     <info>
5 |         <link type="guide" xref="index#ui"/>
6 |     </info>
7 |     <title>Settings Menu</title>
8 | </page>
9 | 


--------------------------------------------------------------------------------
/help/C/testsignals.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="testsignals">
 4 |     <info>
 5 |         <link type="guide" xref="index#calibration"/>
 6 |     </info>
 7 |     <title>Test Signal</title>
 8 |     <p>A specific signal can be used to test the frequency response of the speakers.</p>
 9 |     <terms>
10 |         <item>
11 |             <title>
12 |                 <em style="strong" its:withinText="nested">Enable</em>
13 |             </title>
14 |             <p>Enable or disable the test signal.</p>
15 |         </item>
16 |         <item>
17 |             <title>
18 |                 <em style="strong" its:withinText="nested">Channel</em>
19 |             </title>
20 |             <p>Choose if apply the test signal to left or right channel only, or both.</p>
21 |         </item>
22 |         <item>
23 |             <title>
24 |                 <em style="strong" its:withinText="nested">Signal</em>
25 |             </title>
26 |             <p>The type of the signal: sine wave or white noise.</p>
27 |         </item>
28 |         <item>
29 |             <title>
30 |                 <em style="strong" its:withinText="nested">Frequency</em>
31 |             </title>
32 |             <p>The frequency of the sine wave.</p>
33 |         </item>
34 |     </terms>
35 | </page>
36 | 


--------------------------------------------------------------------------------
/help/C/userpresets.page:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <page xmlns="http://projectmallard.org/1.0/"
 3 |     xmlns:its="http://www.w3.org/2005/11/its" type="guide" id="userpresets" style="2column">
 4 |     <info>
 5 |         <link type="guide" xref="index#ui"/>
 6 |     </info>
 7 |     <title>Creating and Importing User Presets</title>
 8 |     <p>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 Easy Effects. 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.</p>
 9 |     <p>A specific Preset can be autoloaded when an input or output device is added to the system. Just open the <link xref="pipewire" its:withinText="yes">PipeWire</link> tab, click on "Presets Autoloading", select the desired Preset and the device to associate from the two comboboxes, then click the add button.</p>
10 | </page>
11 | 


--------------------------------------------------------------------------------
/help/meson.build:
--------------------------------------------------------------------------------
 1 | itstool = find_program('itstool', required: true)
 2 | 
 3 | if not itstool.found()
 4 |   error('itstool not found.')
 5 | endif
 6 | 
 7 | help_pages = [
 8 |   'advancedinfo.page',
 9 |   'autogain.page',
10 |   'bassenhancer.page',
11 |   'bassloudness.page',
12 |   'blocklist.page',
13 |   'compressor.page',
14 |   'convolver.page',
15 |   'crossfeed.page',
16 |   'crystalizer.page',
17 |   'deesser.page',
18 |   'delay.page',
19 |   'deepfilternet.page',
20 |   'echocanceller.page',
21 |   'effectsorder.page',
22 |   'enableapp.page',
23 |   'equalizer.page',
24 |   'exciter.page',
25 |   'filter.page',
26 |   'gate.page',
27 |   'general.page',
28 |   'guide_1.page',
29 |   'index.page',
30 |   'limiter.page',
31 |   'loudness.page',
32 |   'maximizer.page',
33 |   'multibandcompressor.page',
34 |   'multibandgate.page',
35 |   'pipewire.page',
36 |   'pitch.page',
37 |   'reverb.page',
38 |   'rnnoise.page',
39 |   'saturated.page',
40 |   'settingsmenu.page',
41 |   'spectrum.page',
42 |   'speex.page',
43 |   'stereotools.page',
44 |   'testsignals.page',
45 |   'userpresets.page'
46 | ]
47 | 
48 | gnome_mod.yelp(meson.project_name(),
49 |   sources: help_pages
50 | )
51 | 


--------------------------------------------------------------------------------
/images/appdata-screenshot-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/appdata-screenshot-01.png


--------------------------------------------------------------------------------
/images/appdata-screenshot-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/appdata-screenshot-02.png


--------------------------------------------------------------------------------
/images/appdata-screenshot-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/appdata-screenshot-03.png


--------------------------------------------------------------------------------
/images/appdata-screenshot-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/appdata-screenshot-04.png


--------------------------------------------------------------------------------
/images/appdata-screenshot-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/appdata-screenshot-05.png


--------------------------------------------------------------------------------
/images/convolver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/convolver.png


--------------------------------------------------------------------------------
/images/easyeffects-dark-screenshot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects-dark-screenshot-1.png


--------------------------------------------------------------------------------
/images/easyeffects-dark-screenshot-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects-dark-screenshot-2.png


--------------------------------------------------------------------------------
/images/easyeffects-dark-screenshot-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects-dark-screenshot-3.png


--------------------------------------------------------------------------------
/images/easyeffects-light-screenshot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects-light-screenshot-1.png


--------------------------------------------------------------------------------
/images/easyeffects-light-screenshot-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects-light-screenshot-2.png


--------------------------------------------------------------------------------
/images/easyeffects-light-screenshot-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects-light-screenshot-3.png


--------------------------------------------------------------------------------
/images/easyeffects_players.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects_players.png


--------------------------------------------------------------------------------
/images/easyeffects_plugins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/easyeffects_plugins.png


--------------------------------------------------------------------------------
/images/master_screenshot_test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/images/master_screenshot_test.png


--------------------------------------------------------------------------------
/include/app_info.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <STTypes.h>
23 | #include <adwaita.h>
24 | #include <fmt/core.h>
25 | #include <gio/gio.h>
26 | #include <glib-object.h>
27 | #include <glibconfig.h>
28 | #include <gtk/gtkbox.h>
29 | #include <gtk/gtkicontheme.h>
30 | #include <unordered_map>
31 | #include "application.hpp"
32 | #include "pipe_objects.hpp"
33 | 
34 | namespace ui::app_info {
35 | 
36 | G_BEGIN_DECLS
37 | 
38 | #define EE_TYPE_APP_INFO (app_info_get_type())
39 | 
40 | G_DECLARE_FINAL_TYPE(AppInfo, app_info, EE, APP_INFO, GtkBox)
41 | 
42 | G_END_DECLS
43 | 
44 | auto create() -> AppInfo*;
45 | 
46 | void setup(AppInfo* self,
47 |            app::Application* application,
48 |            GSettings* settings,
49 |            GtkIconTheme* icon_theme,
50 |            std::unordered_map<uint, bool>& enabled_app_list);
51 | 
52 | void update(AppInfo* self, NodeInfo node_info);
53 | 
54 | }  // namespace ui::app_info
55 | 


--------------------------------------------------------------------------------
/include/application_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <gio/gio.h>
24 | #include <glib-object.h>
25 | #include <glibconfig.h>
26 | 
27 | namespace ui::application_window {
28 | 
29 | G_BEGIN_DECLS
30 | 
31 | #define EE_TYPE_APPLICATION_WINDOW (application_window_get_type())
32 | 
33 | G_DECLARE_FINAL_TYPE(ApplicationWindow, application_window, EE, APP_WINDOW, AdwApplicationWindow)
34 | 
35 | G_END_DECLS
36 | 
37 | auto create(GApplication* gapp) -> ApplicationWindow*;
38 | 
39 | }  // namespace ui::application_window
40 | 


--------------------------------------------------------------------------------
/include/apps_box.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <gtk/gtkicontheme.h>
27 | #include "application.hpp"
28 | #include "pipeline_type.hpp"
29 | 
30 | namespace ui::apps_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_APPS_BOX (apps_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(AppsBox, apps_box, EE, APPS_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> AppsBox*;
41 | 
42 | void setup(AppsBox* self, app::Application* application, PipelineType pipeline_type, GtkIconTheme* icon_theme);
43 | 
44 | }  // namespace ui::apps_box
45 | 


--------------------------------------------------------------------------------
/include/autogain_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class AutoGainPreset : public PluginPresetBase {
27 |  public:
28 |   explicit AutoGainPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/autogain_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "autogain.hpp"
29 | 
30 | namespace ui::autogain_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_AUTOGAIN_BOX (autogain_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(AutogainBox, autogain_box, EE, AUTOGAIN_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> AutogainBox*;
41 | 
42 | void setup(AutogainBox* self, std::shared_ptr<AutoGain> autogain, const std::string& schema_path);
43 | 
44 | }  // namespace ui::autogain_box
45 | 


--------------------------------------------------------------------------------
/include/bass_enhancer_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class BassEnhancerPreset : public PluginPresetBase {
27 |  public:
28 |   explicit BassEnhancerPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/bass_enhancer_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "bass_enhancer.hpp"
29 | 
30 | namespace ui::bass_enhancer_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_BASS_ENHANCER_BOX (bass_enhancer_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(BassEnhancerBox, bass_enhancer_box, EE, BASS_ENHANCER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> BassEnhancerBox*;
41 | 
42 | void setup(BassEnhancerBox* self, std::shared_ptr<BassEnhancer> bass_enhancer, const std::string& schema_path);
43 | 
44 | }  // namespace ui::bass_enhancer_box
45 | 


--------------------------------------------------------------------------------
/include/bass_loudness.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <span>
23 | #include <string>
24 | #include "pipe_manager.hpp"
25 | #include "plugin_base.hpp"
26 | 
27 | class BassLoudness : public PluginBase {
28 |  public:
29 |   BassLoudness(const std::string& tag,
30 |                const std::string& schema,
31 |                const std::string& schema_path,
32 |                PipeManager* pipe_manager,
33 |                PipelineType pipe_type);
34 |   BassLoudness(const BassLoudness&) = delete;
35 |   auto operator=(const BassLoudness&) -> BassLoudness& = delete;
36 |   BassLoudness(const BassLoudness&&) = delete;
37 |   auto operator=(const BassLoudness&&) -> BassLoudness& = delete;
38 |   ~BassLoudness() override;
39 | 
40 |   void setup() override;
41 | 
42 |   void process(std::span<float>& left_in,
43 |                std::span<float>& right_in,
44 |                std::span<float>& left_out,
45 |                std::span<float>& right_out) override;
46 | 
47 |   auto get_latency_seconds() -> float override;
48 | 
49 |  private:
50 | };
51 | 


--------------------------------------------------------------------------------
/include/bass_loudness_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class BassLoudnessPreset : public PluginPresetBase {
27 |  public:
28 |   explicit BassLoudnessPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/bass_loudness_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "bass_loudness.hpp"
29 | 
30 | namespace ui::bass_loudness_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_BASS_LOUDNESS_BOX (bass_loudness_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(BassLoudnessBox, bass_loudness_box, EE, BASS_LOUDNESS_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> BassLoudnessBox*;
41 | 
42 | void setup(BassLoudnessBox* self, std::shared_ptr<BassLoudness> bass_loudness, const std::string& schema_path);
43 | 
44 | }  // namespace ui::bass_loudness_box
45 | 


--------------------------------------------------------------------------------
/include/blocklist_menu.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkpopover.h>
26 | #include "application.hpp"
27 | #include "pipeline_type.hpp"
28 | 
29 | namespace ui::blocklist_menu {
30 | 
31 | G_BEGIN_DECLS
32 | 
33 | #define EE_TYPE_BLOCKLIST_MENU (blocklist_menu_get_type())
34 | 
35 | G_DECLARE_FINAL_TYPE(BlocklistMenu, blocklist_menu, EE, BLOCKLIST_MENU, GtkPopover)
36 | 
37 | G_END_DECLS
38 | 
39 | auto create() -> BlocklistMenu*;
40 | 
41 | void setup(BlocklistMenu* self, app::Application* application, PipelineType pipeline_type);
42 | 
43 | }  // namespace ui::blocklist_menu
44 | 


--------------------------------------------------------------------------------
/include/client_info_holder.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <glib-object.h>
23 | #include <glibconfig.h>
24 | #include <sigc++/signal.h>
25 | #include "pipe_objects.hpp"
26 | 
27 | namespace ui::holders {
28 | 
29 | G_BEGIN_DECLS
30 | 
31 | #define EE_TYPE_CLIENT_INFO_HOLDER (client_info_holder_get_type())
32 | 
33 | G_DECLARE_FINAL_TYPE(ClientInfoHolder, client_info_holder, EE, CLIENT_INFO_HOLDER, GObject)
34 | 
35 | G_END_DECLS
36 | 
37 | struct _ClientInfoHolder {
38 |   GObject parent_instance;
39 | 
40 |   ClientInfo* info;
41 | 
42 |   sigc::signal<void(const ClientInfo)> info_updated;
43 | };
44 | 
45 | auto create(const ClientInfo& info) -> ClientInfoHolder*;
46 | 
47 | }  // namespace ui::holders
48 | 


--------------------------------------------------------------------------------
/include/compressor_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class CompressorPreset : public PluginPresetBase {
27 |  public:
28 |   explicit CompressorPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/compressor_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "compressor.hpp"
29 | #include "pipe_manager.hpp"
30 | 
31 | namespace ui::compressor_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_COMPRESSOR_BOX (compressor_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(CompressorBox, compressor_box, EE, COMPRESSOR_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> CompressorBox*;
42 | 
43 | void setup(CompressorBox* self,
44 |            std::shared_ptr<Compressor> compressor,
45 |            const std::string& schema_path,
46 |            PipeManager* pm);
47 | 
48 | }  // namespace ui::compressor_box
49 | 


--------------------------------------------------------------------------------
/include/convolver_menu_combine.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <glib-object.h>
23 | #include <glibconfig.h>
24 | #include <gtk/gtk.h>
25 | #include <string>
26 | 
27 | namespace ui::convolver_menu_combine {
28 | 
29 | G_BEGIN_DECLS
30 | 
31 | #define EE_TYPE_CONVOLVER_MENU_COMBINE (convolver_menu_combine_get_type())
32 | 
33 | G_DECLARE_FINAL_TYPE(ConvolverMenuCombine, convolver_menu_combine, EE, CONVOLVER_MENU_COMBINE, GtkPopover)
34 | 
35 | G_END_DECLS
36 | 
37 | auto create() -> ConvolverMenuCombine*;
38 | 
39 | void append_to_string_list(ConvolverMenuCombine* self, const std::string& irs_filename);
40 | 
41 | void remove_from_string_list(ConvolverMenuCombine* self, const std::string& irs_filename);
42 | 
43 | }  // namespace ui::convolver_menu_combine
44 | 


--------------------------------------------------------------------------------
/include/convolver_menu_impulses.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkpopover.h>
26 | #include <sndfile.hh>
27 | #include <string>
28 | #include "application.hpp"
29 | 
30 | namespace ui::convolver_menu_impulses {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_CONVOLVER_MENU_IMPULSES (convolver_menu_impulses_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(ConvolverMenuImpulses, convolver_menu_impulses, EE, CONVOLVER_MENU_IMPULSES, GtkPopover)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> ConvolverMenuImpulses*;
41 | 
42 | void setup(ConvolverMenuImpulses* self,
43 |            const std::string& schema_path,
44 |            app::Application* application,
45 |            std::shared_ptr<Convolver> convolver);
46 | 
47 | void append_to_string_list(ConvolverMenuImpulses* self, const std::string& irs_filename);
48 | 
49 | void remove_from_string_list(ConvolverMenuImpulses* self, const std::string& irs_filename);
50 | 
51 | }  // namespace ui::convolver_menu_impulses
52 | 


--------------------------------------------------------------------------------
/include/convolver_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class ConvolverPreset : public PluginPresetBase {
27 |  public:
28 |   explicit ConvolverPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/convolver_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "application.hpp"
29 | #include "convolver.hpp"
30 | 
31 | namespace ui::convolver_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_CONVOLVER_BOX (convolver_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(ConvolverBox, convolver_box, EE, CONVOLVER_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> ConvolverBox*;
42 | 
43 | void setup(ConvolverBox* self,
44 |            std::shared_ptr<Convolver> convolver,
45 |            const std::string& schema_path,
46 |            app::Application* application);
47 | 
48 | }  // namespace ui::convolver_box
49 | 


--------------------------------------------------------------------------------
/include/convolver_ui_common.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <filesystem>
23 | #include <string>
24 | #include <tuple>
25 | #include <vector>
26 | 
27 | namespace ui::convolver {
28 | 
29 | auto read_kernel(std::filesystem::path irs_dir, const std::string& irs_ext, const std::string& file_name)
30 |     -> std::tuple<int, std::vector<float>, std::vector<float>>;
31 | 
32 | }
33 | 


--------------------------------------------------------------------------------
/include/crossfeed_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class CrossfeedPreset : public PluginPresetBase {
27 |  public:
28 |   explicit CrossfeedPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/crossfeed_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "crossfeed.hpp"
29 | 
30 | namespace ui::crossfeed_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_CROSSFEED_BOX (crossfeed_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(CrossfeedBox, crossfeed_box, EE, CROSSFEED_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> CrossfeedBox*;
41 | 
42 | void setup(CrossfeedBox* self, std::shared_ptr<Crossfeed> crossfeed, const std::string& schema_path);
43 | 
44 | }  // namespace ui::crossfeed_box
45 | 


--------------------------------------------------------------------------------
/include/crystalizer_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class CrystalizerPreset : public PluginPresetBase {
27 |  public:
28 |   explicit CrystalizerPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/crystalizer_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "crystalizer.hpp"
29 | 
30 | namespace ui::crystalizer_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_CRYSTALIZER_BOX (crystalizer_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(CrystalizerBox, crystalizer_box, EE, CRYSTALIZER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> CrystalizerBox*;
41 | 
42 | void setup(CrystalizerBox* self, std::shared_ptr<Crystalizer> crystalizer, const std::string& schema_path);
43 | 
44 | }  // namespace ui::crystalizer_box
45 | 


--------------------------------------------------------------------------------
/include/deepfilternet_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2023 Torge Matthies
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class DeepFilterNetPreset : public PluginPresetBase {
27 |  public:
28 |   explicit DeepFilterNetPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/deepfilternet_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2023 Torge Matthies
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "deepfilternet.hpp"
29 | 
30 | namespace ui::deepfilternet_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_DEEPFILTERNET_BOX (deepfilternet_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(DeepFilterNetBox, deepfilternet_box, EE, DEEPFILTERNET_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> DeepFilterNetBox*;
41 | 
42 | void setup(DeepFilterNetBox* self, std::shared_ptr<DeepFilterNet> deepfilternet, const std::string& schema_path);
43 | 
44 | }  // namespace ui::deepfilternet_box
45 | 


--------------------------------------------------------------------------------
/include/deesser_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class DeesserPreset : public PluginPresetBase {
27 |  public:
28 |   explicit DeesserPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/deesser_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "deesser.hpp"
29 | 
30 | namespace ui::deesser_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_DEESSER_BOX (deesser_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(DeesserBox, deesser_box, EE, DEESSER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> DeesserBox*;
41 | 
42 | void setup(DeesserBox* self, std::shared_ptr<Deesser> deesser, const std::string& schema_path);
43 | 
44 | }  // namespace ui::deesser_box
45 | 


--------------------------------------------------------------------------------
/include/delay.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <sys/types.h>
23 | #include <span>
24 | #include <string>
25 | #include "pipe_manager.hpp"
26 | #include "plugin_base.hpp"
27 | 
28 | class Delay : public PluginBase {
29 |  public:
30 |   Delay(const std::string& tag,
31 |         const std::string& schema,
32 |         const std::string& schema_path,
33 |         PipeManager* pipe_manager,
34 |         PipelineType pipe_type);
35 |   Delay(const Delay&) = delete;
36 |   auto operator=(const Delay&) -> Delay& = delete;
37 |   Delay(const Delay&&) = delete;
38 |   auto operator=(const Delay&&) -> Delay& = delete;
39 |   ~Delay() override;
40 | 
41 |   void setup() override;
42 | 
43 |   void process(std::span<float>& left_in,
44 |                std::span<float>& right_in,
45 |                std::span<float>& left_out,
46 |                std::span<float>& right_out) override;
47 | 
48 |   auto get_latency_seconds() -> float override;
49 | 
50 |  private:
51 |   uint latency_n_frames = 0U;
52 | };
53 | 


--------------------------------------------------------------------------------
/include/delay_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class DelayPreset : public PluginPresetBase {
27 |  public:
28 |   explicit DelayPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/delay_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "delay.hpp"
29 | 
30 | namespace ui::delay_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_DELAY_BOX (delay_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(DelayBox, delay_box, EE, DELAY_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> DelayBox*;
41 | 
42 | void setup(DelayBox* self, std::shared_ptr<Delay> delay, const std::string& schema_path);
43 | 
44 | }  // namespace ui::delay_box
45 | 


--------------------------------------------------------------------------------
/include/echo_canceller_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class EchoCancellerPreset : public PluginPresetBase {
27 |  public:
28 |   explicit EchoCancellerPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/echo_canceller_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "echo_canceller.hpp"
29 | 
30 | namespace ui::echo_canceller_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_ECHO_CANCELLER_BOX (echo_canceller_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(EchoCancellerBox, echo_canceller_box, EE, ECHO_CANCELLER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> EchoCancellerBox*;
41 | 
42 | void setup(EchoCancellerBox* self, std::shared_ptr<EchoCanceller> echo_canceller, const std::string& schema_path);
43 | 
44 | }  // namespace ui::echo_canceller_box
45 | 


--------------------------------------------------------------------------------
/include/effects_box.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gsl/gsl_spline.h>
26 | #include <gtk/gtkbox.h>
27 | #include <gtk/gtkicontheme.h>
28 | #include "application.hpp"
29 | #include "pipeline_type.hpp"
30 | 
31 | namespace ui::effects_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_EFFECTS_BOX (effects_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(EffectsBox, effects_box, EE, EFFECTS_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> EffectsBox*;
42 | 
43 | void setup(EffectsBox* self, app::Application* application, PipelineType pipeline_type, GtkIconTheme* icon_theme);
44 | 
45 | }  // namespace ui::effects_box
46 | 


--------------------------------------------------------------------------------
/include/equalizer_band_box.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <gio/gio.h>
24 | #include <glib-object.h>
25 | #include <glibconfig.h>
26 | #include <gtk/gtkbox.h>
27 | 
28 | namespace ui::equalizer_band_box {
29 | 
30 | G_BEGIN_DECLS
31 | 
32 | #define EE_TYPE_EQUALIZER_BAND_BOX (equalizer_band_box_get_type())
33 | 
34 | G_DECLARE_FINAL_TYPE(EqualizerBandBox, equalizer_band_box, EE, EQUALIZER_BAND_BOX, GtkBox)
35 | 
36 | G_END_DECLS
37 | 
38 | auto create() -> EqualizerBandBox*;
39 | 
40 | void setup(EqualizerBandBox* self, GSettings* settings);
41 | 
42 | void bind(EqualizerBandBox* self, int index);
43 | 
44 | }  // namespace ui::equalizer_band_box
45 | 


--------------------------------------------------------------------------------
/include/equalizer_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "application.hpp"
29 | #include "equalizer.hpp"
30 | 
31 | namespace ui::equalizer_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_EQUALIZER_BOX (equalizer_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(EqualizerBox, equalizer_box, EE, EQUALIZER_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> EqualizerBox*;
42 | 
43 | void setup(EqualizerBox* self,
44 |            std::shared_ptr<Equalizer> equalizer,
45 |            const std::string& schema_path,
46 |            app::Application* application);
47 | 
48 | }  // namespace ui::equalizer_box
49 | 


--------------------------------------------------------------------------------
/include/exciter_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class ExciterPreset : public PluginPresetBase {
27 |  public:
28 |   explicit ExciterPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/exciter_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "exciter.hpp"
29 | 
30 | namespace ui::exciter_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_EXCITER_BOX (exciter_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(ExciterBox, exciter_box, EE, EXCITER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> ExciterBox*;
41 | 
42 | void setup(ExciterBox* self, std::shared_ptr<Exciter> exciter, const std::string& schema_path);
43 | 
44 | }  // namespace ui::exciter_box
45 | 


--------------------------------------------------------------------------------
/include/expander_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class ExpanderPreset : public PluginPresetBase {
27 |  public:
28 |   explicit ExpanderPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/expander_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "expander.hpp"
29 | #include "pipe_manager.hpp"
30 | 
31 | namespace ui::expander_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_EXPANDER_BOX (expander_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(ExpanderBox, expander_box, EE, EXPANDER_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> ExpanderBox*;
42 | 
43 | void setup(ExpanderBox* self, std::shared_ptr<Expander> expander, const std::string& schema_path, PipeManager* pm);
44 | 
45 | }  // namespace ui::expander_box
46 | 


--------------------------------------------------------------------------------
/include/filter.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <span>
23 | #include <string>
24 | #include "pipe_manager.hpp"
25 | #include "plugin_base.hpp"
26 | 
27 | class Filter : public PluginBase {
28 |  public:
29 |   Filter(const std::string& tag,
30 |          const std::string& schema,
31 |          const std::string& schema_path,
32 |          PipeManager* pipe_manager,
33 |          PipelineType pipe_type);
34 |   Filter(const Filter&) = delete;
35 |   auto operator=(const Filter&) -> Filter& = delete;
36 |   Filter(const Filter&&) = delete;
37 |   auto operator=(const Filter&&) -> Filter& = delete;
38 |   ~Filter() override;
39 | 
40 |   void setup() override;
41 | 
42 |   void process(std::span<float>& left_in,
43 |                std::span<float>& right_in,
44 |                std::span<float>& left_out,
45 |                std::span<float>& right_out) override;
46 | 
47 |   auto get_latency_seconds() -> float override;
48 | 
49 |  private:
50 | };
51 | 


--------------------------------------------------------------------------------
/include/filter_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class FilterPreset : public PluginPresetBase {
27 |  public:
28 |   explicit FilterPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/filter_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "filter.hpp"
29 | 
30 | namespace ui::filter_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_FILTER_BOX (filter_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(FilterBox, filter_box, EE, FILTER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> FilterBox*;
41 | 
42 | void setup(FilterBox* self, std::shared_ptr<Filter> filter, const std::string& schema_path);
43 | 
44 | }  // namespace ui::filter_box
45 | 


--------------------------------------------------------------------------------
/include/fir_filter_bandpass.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <string>
23 | #include "fir_filter_base.hpp"
24 | 
25 | class FirFilterBandpass : public FirFilterBase {
26 |  public:
27 |   FirFilterBandpass(std::string tag);
28 |   FirFilterBandpass(const FirFilterBandpass&) = delete;
29 |   auto operator=(const FirFilterBandpass&) -> FirFilterBandpass& = delete;
30 |   FirFilterBandpass(const FirFilterBandpass&&) = delete;
31 |   auto operator=(const FirFilterBandpass&&) -> FirFilterBandpass& = delete;
32 |   ~FirFilterBandpass() override;
33 | 
34 |   void setup() override;
35 | };
36 | 


--------------------------------------------------------------------------------
/include/fir_filter_highpass.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <string>
23 | #include "fir_filter_base.hpp"
24 | 
25 | class FirFilterHighpass : public FirFilterBase {
26 |  public:
27 |   FirFilterHighpass(std::string tag);
28 |   FirFilterHighpass(const FirFilterHighpass&) = delete;
29 |   auto operator=(const FirFilterHighpass&) -> FirFilterHighpass& = delete;
30 |   FirFilterHighpass(const FirFilterHighpass&&) = delete;
31 |   auto operator=(const FirFilterHighpass&&) -> FirFilterHighpass& = delete;
32 |   ~FirFilterHighpass() override;
33 | 
34 |   void setup() override;
35 | };
36 | 


--------------------------------------------------------------------------------
/include/fir_filter_lowpass.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <string>
23 | #include "fir_filter_base.hpp"
24 | 
25 | class FirFilterLowpass : public FirFilterBase {
26 |  public:
27 |   FirFilterLowpass(std::string tag);
28 |   FirFilterLowpass(const FirFilterLowpass&) = delete;
29 |   auto operator=(const FirFilterLowpass&) -> FirFilterLowpass& = delete;
30 |   FirFilterLowpass(const FirFilterLowpass&&) = delete;
31 |   auto operator=(const FirFilterLowpass&&) -> FirFilterLowpass& = delete;
32 |   ~FirFilterLowpass() override;
33 | 
34 |   void setup() override;
35 | };
36 | 


--------------------------------------------------------------------------------
/include/gate_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class GatePreset : public PluginPresetBase {
27 |  public:
28 |   explicit GatePreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/gate_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "gate.hpp"
29 | #include "pipe_manager.hpp"
30 | 
31 | namespace ui::gate_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_GATE_BOX (gate_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(GateBox, gate_box, EE, GATE_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> GateBox*;
42 | 
43 | void setup(GateBox* self, std::shared_ptr<Gate> gate, const std::string& schema_path, PipeManager* pm);
44 | 
45 | }  // namespace ui::gate_box
46 | 


--------------------------------------------------------------------------------
/include/level_meter_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class LevelMeterPreset : public PluginPresetBase {
27 |  public:
28 |   explicit LevelMeterPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/level_meter_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "level_meter.hpp"
29 | 
30 | namespace ui::level_meter_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_LEVEL_METER_BOX (level_meter_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(LevelMeterBox, level_meter_box, EE, LEVEL_METER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> LevelMeterBox*;
41 | 
42 | void setup(LevelMeterBox* self, std::shared_ptr<LevelMeter> level_meter, const std::string& schema_path);
43 | 
44 | }  // namespace ui::level_meter_box
45 | 


--------------------------------------------------------------------------------
/include/libportal.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <gtk/gtk.h>
23 | #include "libportal-gtk4/portal-gtk4.h"
24 | #include "libportal/portal.h"
25 | 
26 | namespace libportal {
27 | 
28 | void init(GtkSwitch* g_enable_autostart, GtkSwitch* g_shutdown_on_window_close);
29 | 
30 | }  // namespace libportal
31 | 


--------------------------------------------------------------------------------
/include/limiter_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class LimiterPreset : public PluginPresetBase {
27 |  public:
28 |   explicit LimiterPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/limiter_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "limiter.hpp"
29 | #include "pipe_manager.hpp"
30 | 
31 | namespace ui::limiter_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_LIMITER_BOX (limiter_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(LimiterBox, limiter_box, EE, LIMITER_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> LimiterBox*;
42 | 
43 | void setup(LimiterBox* self, std::shared_ptr<Limiter> limiter, const std::string& schema_path, PipeManager* pm);
44 | 
45 | }  // namespace ui::limiter_box
46 | 


--------------------------------------------------------------------------------
/include/loudness.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <sys/types.h>
23 | #include <span>
24 | #include <string>
25 | #include "pipe_manager.hpp"
26 | #include "plugin_base.hpp"
27 | 
28 | class Loudness : public PluginBase {
29 |  public:
30 |   Loudness(const std::string& tag,
31 |            const std::string& schema,
32 |            const std::string& schema_path,
33 |            PipeManager* pipe_manager,
34 |            PipelineType pipe_type);
35 |   Loudness(const Loudness&) = delete;
36 |   auto operator=(const Loudness&) -> Loudness& = delete;
37 |   Loudness(const Loudness&&) = delete;
38 |   auto operator=(const Loudness&&) -> Loudness& = delete;
39 |   ~Loudness() override;
40 | 
41 |   void setup() override;
42 | 
43 |   void process(std::span<float>& left_in,
44 |                std::span<float>& right_in,
45 |                std::span<float>& left_out,
46 |                std::span<float>& right_out) override;
47 | 
48 |   auto get_latency_seconds() -> float override;
49 | 
50 |  private:
51 |   uint latency_n_frames = 0U;
52 | };
53 | 


--------------------------------------------------------------------------------
/include/loudness_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class LoudnessPreset : public PluginPresetBase {
27 |  public:
28 |   explicit LoudnessPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/loudness_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "loudness.hpp"
29 | 
30 | namespace ui::loudness_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_LOUDNESS_BOX (loudness_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(LoudnessBox, loudness_box, EE, LOUDNESS_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> LoudnessBox*;
41 | 
42 | void setup(LoudnessBox* self, std::shared_ptr<Loudness> loudness, const std::string& schema_path);
43 | 
44 | }  // namespace ui::loudness_box
45 | 


--------------------------------------------------------------------------------
/include/maximizer_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class MaximizerPreset : public PluginPresetBase {
27 |  public:
28 |   explicit MaximizerPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/maximizer_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "maximizer.hpp"
29 | 
30 | namespace ui::maximizer_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_MAXIMIZER_BOX (maximizer_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(MaximizerBox, maximizer_box, EE, MAXIMIZER_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> MaximizerBox*;
41 | 
42 | void setup(MaximizerBox* self, std::shared_ptr<Maximizer> maximizer, const std::string& schema_path);
43 | 
44 | }  // namespace ui::maximizer_box
45 | 


--------------------------------------------------------------------------------
/include/module_info_holder.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <glib-object.h>
23 | #include <glibconfig.h>
24 | #include <gobject/gobject.h>
25 | #include <gtk/gtk.h>
26 | #include <sigc++/signal.h>
27 | #include "pipe_objects.hpp"
28 | 
29 | namespace ui::holders {
30 | 
31 | G_BEGIN_DECLS
32 | 
33 | #define EE_TYPE_MODULE_INFO_HOLDER (module_info_holder_get_type())
34 | 
35 | G_DECLARE_FINAL_TYPE(ModuleInfoHolder, module_info_holder, EE, MODULE_INFO_HOLDER, GObject)
36 | 
37 | G_END_DECLS
38 | 
39 | struct _ModuleInfoHolder {
40 |   GObject parent_instance;
41 | 
42 |   ModuleInfo* info;
43 | 
44 |   sigc::signal<void(const ModuleInfo)> info_updated;
45 | };
46 | 
47 | auto create(const ModuleInfo& info) -> ModuleInfoHolder*;
48 | 
49 | }  // namespace ui::holders
50 | 


--------------------------------------------------------------------------------
/include/multiband_compressor_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <sys/types.h>
23 | #include <nlohmann/json_fwd.hpp>
24 | #include "plugin_preset_base.hpp"
25 | #include "preset_type.hpp"
26 | #include "tags_multiband_compressor.hpp"
27 | 
28 | class MultibandCompressorPreset : public PluginPresetBase {
29 |  public:
30 |   explicit MultibandCompressorPreset(PresetType preset_type, const int& index = 0);
31 | 
32 |  private:
33 |   static constexpr uint n_bands = tags::multiband_compressor::n_bands;
34 | 
35 |   void save(nlohmann::json& json) override;
36 | 
37 |   void load(const nlohmann::json& json) override;
38 | };
39 | 


--------------------------------------------------------------------------------
/include/multiband_compressor_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "multiband_compressor.hpp"
29 | #include "pipe_manager.hpp"
30 | 
31 | namespace ui::multiband_compressor_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_MULTIBAND_COMPRESSOR_BOX (multiband_compressor_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(MultibandCompressorBox, multiband_compressor_box, EE, MULTIBAND_COMPRESSOR_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> MultibandCompressorBox*;
42 | 
43 | void setup(MultibandCompressorBox* self,
44 |            std::shared_ptr<MultibandCompressor> multiband_compressor,
45 |            const std::string& schema_path,
46 |            PipeManager* pm);
47 | 
48 | }  // namespace ui::multiband_compressor_box
49 | 


--------------------------------------------------------------------------------
/include/multiband_gate_band_box.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <gio/gio.h>
24 | #include <glib-object.h>
25 | #include <glibconfig.h>
26 | #include <gtk/gtkbox.h>
27 | 
28 | namespace ui::multiband_gate_band_box {
29 | 
30 | G_BEGIN_DECLS
31 | 
32 | #define EE_TYPE_MULTIBAND_GATE_BAND_BOX (multiband_gate_band_box_get_type())
33 | 
34 | G_DECLARE_FINAL_TYPE(MultibandGateBandBox, multiband_gate_band_box, EE, MULTIBAND_GATE_BAND_BOX, GtkBox)
35 | 
36 | G_END_DECLS
37 | 
38 | auto create() -> MultibandGateBandBox*;
39 | 
40 | void setup(MultibandGateBandBox* self, GSettings* settings, int index);
41 | 
42 | void set_end_label(MultibandGateBandBox* self, const float& value);
43 | 
44 | void set_envelope_label(MultibandGateBandBox* self, const float& value);
45 | 
46 | void set_curve_label(MultibandGateBandBox* self, const float& value);
47 | 
48 | void set_gain_label(MultibandGateBandBox* self, const float& value);
49 | 
50 | }  // namespace ui::multiband_gate_band_box
51 | 


--------------------------------------------------------------------------------
/include/multiband_gate_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <sys/types.h>
23 | #include <nlohmann/json_fwd.hpp>
24 | #include "plugin_preset_base.hpp"
25 | #include "preset_type.hpp"
26 | #include "tags_multiband_gate.hpp"
27 | 
28 | class MultibandGatePreset : public PluginPresetBase {
29 |  public:
30 |   explicit MultibandGatePreset(PresetType preset_type, const int& index = 0);
31 | 
32 |  private:
33 |   static constexpr uint n_bands = tags::multiband_gate::n_bands;
34 | 
35 |   void save(nlohmann::json& json) override;
36 | 
37 |   void load(const nlohmann::json& json) override;
38 | };
39 | 


--------------------------------------------------------------------------------
/include/multiband_gate_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "multiband_gate.hpp"
29 | #include "pipe_manager.hpp"
30 | 
31 | namespace ui::multiband_gate_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_MULTIBAND_GATE_BOX (multiband_gate_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(MultibandGateBox, multiband_gate_box, EE, MULTIBAND_GATE_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> MultibandGateBox*;
42 | 
43 | void setup(MultibandGateBox* self,
44 |            std::shared_ptr<MultibandGate> multiband_gate,
45 |            const std::string& schema_path,
46 |            PipeManager* pm);
47 | 
48 | }  // namespace ui::multiband_gate_box
49 | 


--------------------------------------------------------------------------------
/include/node_info_holder.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <glib-object.h>
23 | #include <glibconfig.h>
24 | #include <gobject/gobject.h>
25 | #include <gtk/gtk.h>
26 | #include <sigc++/signal.h>
27 | #include <string>
28 | #include "pipe_objects.hpp"
29 | 
30 | namespace ui::holders {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_NODE_INFO_HOLDER (node_info_holder_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(NodeInfoHolder, node_info_holder, EE, NODE_INFO_HOLDER, GObject)
37 | 
38 | G_END_DECLS
39 | 
40 | struct _NodeInfoHolder {
41 |   GObject parent_instance;
42 | 
43 |   NodeInfo* info;
44 | 
45 |   std::string icon_name;  // The name of the icon that will represent the node when we show it in a list
46 | 
47 |   sigc::signal<void(const NodeInfo)> info_updated;
48 | };
49 | 
50 | auto create(const NodeInfo& info) -> NodeInfoHolder*;
51 | 
52 | }  // namespace ui::holders
53 | 


--------------------------------------------------------------------------------
/include/output_level.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <span>
23 | #include <string>
24 | #include "pipe_manager.hpp"
25 | #include "plugin_base.hpp"
26 | 
27 | class OutputLevel : public PluginBase {
28 |  public:
29 |   OutputLevel(const std::string& tag,
30 |               const std::string& schema,
31 |               const std::string& schema_path,
32 |               PipeManager* pipe_manager,
33 |               PipelineType pipe_type);
34 |   OutputLevel(const OutputLevel&) = delete;
35 |   auto operator=(const OutputLevel&) -> OutputLevel& = delete;
36 |   OutputLevel(const OutputLevel&&) = delete;
37 |   auto operator=(const OutputLevel&&) -> OutputLevel& = delete;
38 |   ~OutputLevel() override;
39 | 
40 |   void setup() override;
41 | 
42 |   void process(std::span<float>& left_in,
43 |                std::span<float>& right_in,
44 |                std::span<float>& left_out,
45 |                std::span<float>& right_out) override;
46 | 
47 |   auto get_latency_seconds() -> float override;
48 | };
49 | 


--------------------------------------------------------------------------------
/include/pipe_manager_box.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include "application.hpp"
27 | 
28 | namespace ui::pipe_manager_box {
29 | 
30 | G_BEGIN_DECLS
31 | 
32 | #define EE_TYPE_PIPE_MANAGER_BOX (pipe_manager_box_get_type())
33 | 
34 | G_DECLARE_FINAL_TYPE(PipeManagerBox, pipe_manager_box, EE, PIPE_MANAGER_BOX, GtkBox)
35 | 
36 | G_END_DECLS
37 | 
38 | auto create() -> PipeManagerBox*;
39 | 
40 | void setup(PipeManagerBox* self, app::Application* application);
41 | 
42 | }  // namespace ui::pipe_manager_box
43 | 


--------------------------------------------------------------------------------
/include/pipeline_type.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | enum class PipelineType { input, output };
23 | 


--------------------------------------------------------------------------------
/include/pitch_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class PitchPreset : public PluginPresetBase {
27 |  public:
28 |   explicit PitchPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/pitch_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "pitch.hpp"
29 | 
30 | namespace ui::pitch_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_PITCH_BOX (pitch_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(PitchBox, pitch_box, EE, PITCH_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> PitchBox*;
41 | 
42 | void setup(PitchBox* self, std::shared_ptr<Pitch> pitch, const std::string& schema_path);
43 | 
44 | }  // namespace ui::pitch_box
45 | 


--------------------------------------------------------------------------------
/include/plugins_box.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <glib-object.h>
23 | #include <glibconfig.h>
24 | #include <gtk/gtk.h>
25 | #include "application.hpp"
26 | #include "pipeline_type.hpp"
27 | 
28 | namespace ui::plugins_box {
29 | 
30 | G_BEGIN_DECLS
31 | 
32 | #define EE_TYPE_PLUGINS_BOX (plugins_box_get_type())
33 | 
34 | G_DECLARE_FINAL_TYPE(PluginsBox, plugins_box, EE, PLUGINS_BOX, GtkBox)
35 | 
36 | G_END_DECLS
37 | 
38 | auto create() -> PluginsBox*;
39 | 
40 | void setup(PluginsBox* self, app::Application* application, PipelineType pipeline_type);
41 | 
42 | }  // namespace ui::plugins_box
43 | 


--------------------------------------------------------------------------------
/include/plugins_menu.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkpopover.h>
26 | #include "application.hpp"
27 | #include "pipeline_type.hpp"
28 | 
29 | namespace ui::plugins_menu {
30 | 
31 | G_BEGIN_DECLS
32 | 
33 | #define EE_TYPE_PLUGINS_MENU (plugins_menu_get_type())
34 | 
35 | G_DECLARE_FINAL_TYPE(PluginsMenu, plugins_menu, EE, PLUGINS_MENU, GtkPopover)
36 | 
37 | G_END_DECLS
38 | 
39 | auto create() -> PluginsMenu*;
40 | 
41 | void setup(PluginsMenu* self, app::Application* application, PipelineType pipeline_type);
42 | 
43 | }  // namespace ui::plugins_menu
44 | 


--------------------------------------------------------------------------------
/include/preferences_general.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | 
26 | #ifdef ENABLE_LIBPORTAL
27 | #include "libportal.hpp"
28 | #endif
29 | 
30 | namespace ui::preferences::general {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_PREFERENCES_GENERAL (preferences_general_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(PreferencesGeneral, preferences_general, EE, PREFERENCES_GENERAL, AdwPreferencesPage)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> PreferencesGeneral*;
41 | 
42 | }  // namespace ui::preferences::general
43 | 


--------------------------------------------------------------------------------
/include/preferences_spectrum.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | 
26 | namespace ui::preferences::spectrum {
27 | 
28 | G_BEGIN_DECLS
29 | 
30 | #define EE_TYPE_PREFERENCES_SPECTRUM (preferences_spectrum_get_type())
31 | 
32 | G_DECLARE_FINAL_TYPE(PreferencesSpectrum, preferences_spectrum, EE, PREFERENCES_SPECTRUM, AdwPreferencesPage)
33 | 
34 | G_END_DECLS
35 | 
36 | auto create() -> PreferencesSpectrum*;
37 | 
38 | }  // namespace ui::preferences::spectrum
39 | 


--------------------------------------------------------------------------------
/include/preferences_window.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | 
26 | namespace ui::preferences::window {
27 | 
28 | G_BEGIN_DECLS
29 | 
30 | #define EE_TYPE_PREFERENCES_WINDOW (preferences_window_get_type())
31 | 
32 | G_DECLARE_FINAL_TYPE(PreferencesWindow, preferences_window, EE, PREFERENCES_WINDOW, AdwPreferencesDialog)
33 | 
34 | G_END_DECLS
35 | 
36 | auto create() -> PreferencesWindow*;
37 | 
38 | }  // namespace ui::preferences::window
39 | 


--------------------------------------------------------------------------------
/include/preset_type.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | enum class PresetType { input, output };
23 | 


--------------------------------------------------------------------------------
/include/presets_autoloading_holder.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <glib-object.h>
23 | #include <glibconfig.h>
24 | #include <string>
25 | 
26 | namespace ui::holders {
27 | 
28 | G_BEGIN_DECLS
29 | 
30 | #define EE_TYPE_PRESETS_AUTOLOADING_HOLDER (presets_autoloading_holder_get_type())
31 | 
32 | G_DECLARE_FINAL_TYPE(PresetsAutoloadingHolder, presets_autoloading_holder, EE, PRESETS_AUTOLOADING_HOLDER, GObject)
33 | 
34 | G_END_DECLS
35 | 
36 | struct PresetsAutoLoadingData {
37 |  public:
38 |   std::string device, device_description, device_profile, preset_name;
39 | };
40 | 
41 | struct _PresetsAutoloadingHolder {
42 |   GObject parent_instance;
43 | 
44 |   PresetsAutoLoadingData* data;
45 | };
46 | 
47 | auto create(const std::string& device,
48 |             const std::string& device_description,
49 |             const std::string& device_profile,
50 |             const std::string& preset_name) -> PresetsAutoloadingHolder*;
51 | 
52 | }  // namespace ui::holders
53 | 


--------------------------------------------------------------------------------
/include/presets_menu.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkpopover.h>
26 | #include "application.hpp"
27 | #include "preset_type.hpp"
28 | 
29 | namespace ui::presets_menu {
30 | 
31 | G_BEGIN_DECLS
32 | 
33 | #define EE_TYPE_PRESETS_MENU (presets_menu_get_type())
34 | 
35 | G_DECLARE_FINAL_TYPE(PresetsMenu, presets_menu, EE, PRESETS_MENU, GtkPopover)
36 | 
37 | G_END_DECLS
38 | 
39 | auto create() -> PresetsMenu*;
40 | 
41 | void setup(PresetsMenu* self, app::Application* application, PresetType preset_type);
42 | 
43 | }  // namespace ui::presets_menu
44 | 


--------------------------------------------------------------------------------
/include/reverb.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <span>
23 | #include <string>
24 | #include "pipe_manager.hpp"
25 | #include "plugin_base.hpp"
26 | 
27 | class Reverb : public PluginBase {
28 |  public:
29 |   Reverb(const std::string& tag,
30 |          const std::string& schema,
31 |          const std::string& schema_path,
32 |          PipeManager* pipe_manager,
33 |          PipelineType pipe_type);
34 |   Reverb(const Reverb&) = delete;
35 |   auto operator=(const Reverb&) -> Reverb& = delete;
36 |   Reverb(const Reverb&&) = delete;
37 |   auto operator=(const Reverb&&) -> Reverb& = delete;
38 |   ~Reverb() override;
39 | 
40 |   void setup() override;
41 | 
42 |   void process(std::span<float>& left_in,
43 |                std::span<float>& right_in,
44 |                std::span<float>& left_out,
45 |                std::span<float>& right_out) override;
46 | 
47 |   auto get_latency_seconds() -> float override;
48 | 
49 |  private:
50 | };
51 | 


--------------------------------------------------------------------------------
/include/reverb_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class ReverbPreset : public PluginPresetBase {
27 |  public:
28 |   explicit ReverbPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/reverb_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "reverb.hpp"
29 | 
30 | namespace ui::reverb_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_REVERB_BOX (reverb_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(ReverbBox, reverb_box, EE, REVERB_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> ReverbBox*;
41 | 
42 | void setup(ReverbBox* self, std::shared_ptr<Reverb> reverb, const std::string& schema_path);
43 | 
44 | }  // namespace ui::reverb_box
45 | 


--------------------------------------------------------------------------------
/include/rnnoise_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class RNNoisePreset : public PluginPresetBase {
27 |  public:
28 |   explicit RNNoisePreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/rnnoise_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "application.hpp"
29 | #include "rnnoise.hpp"
30 | 
31 | namespace ui::rnnoise_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_RNNOISE_BOX (rnnoise_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(RNNoiseBox, rnnoise_box, EE, RNNOISE_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> RNNoiseBox*;
42 | 
43 | void setup(RNNoiseBox* self,
44 |            std::shared_ptr<RNNoise> rnnoise,
45 |            const std::string& schema_path,
46 |            app::Application* application);
47 | 
48 | }  // namespace ui::rnnoise_box
49 | 


--------------------------------------------------------------------------------
/include/speex_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class SpeexPreset : public PluginPresetBase {
27 |  public:
28 |   explicit SpeexPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/speex_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "application.hpp"
29 | #include "speex.hpp"
30 | 
31 | namespace ui::speex_box {
32 | 
33 | G_BEGIN_DECLS
34 | 
35 | #define EE_TYPE_SPEEX_BOX (speex_box_get_type())
36 | 
37 | G_DECLARE_FINAL_TYPE(SpeexBox, speex_box, EE, SPEEX_BOX, GtkBox)
38 | 
39 | G_END_DECLS
40 | 
41 | auto create() -> SpeexBox*;
42 | 
43 | void setup(SpeexBox* self, std::shared_ptr<Speex> speex, const std::string& schema_path, app::Application* application);
44 | 
45 | }  // namespace ui::speex_box
46 | 


--------------------------------------------------------------------------------
/include/stereo_tools_preset.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <nlohmann/json_fwd.hpp>
23 | #include "plugin_preset_base.hpp"
24 | #include "preset_type.hpp"
25 | 
26 | class StereoToolsPreset : public PluginPresetBase {
27 |  public:
28 |   explicit StereoToolsPreset(PresetType preset_type, const int& index = 0);
29 | 
30 |  private:
31 |   void save(nlohmann::json& json) override;
32 | 
33 |   void load(const nlohmann::json& json) override;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/stereo_tools_ui.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <adwaita.h>
23 | #include <glib-object.h>
24 | #include <glibconfig.h>
25 | #include <gtk/gtkbox.h>
26 | #include <memory>
27 | #include <string>
28 | #include "stereo_tools.hpp"
29 | 
30 | namespace ui::stereo_tools_box {
31 | 
32 | G_BEGIN_DECLS
33 | 
34 | #define EE_TYPE_STEREO_TOOLS_BOX (stereo_tools_box_get_type())
35 | 
36 | G_DECLARE_FINAL_TYPE(StereoToolsBox, stereo_tools_box, EE, STEREO_TOOLS_BOX, GtkBox)
37 | 
38 | G_END_DECLS
39 | 
40 | auto create() -> StereoToolsBox*;
41 | 
42 | void setup(StereoToolsBox* self, std::shared_ptr<StereoTools> stereo_tools, const std::string& schema_path);
43 | 
44 | }  // namespace ui::stereo_tools_box
45 | 


--------------------------------------------------------------------------------
/include/stream_input_effects.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include "effects_base.hpp"
23 | #include "pipe_manager.hpp"
24 | #include "pipe_objects.hpp"
25 | 
26 | class StreamInputEffects : public EffectsBase {
27 |  public:
28 |   StreamInputEffects(PipeManager* pipe_manager);
29 |   StreamInputEffects(const StreamInputEffects&) = delete;
30 |   auto operator=(const StreamInputEffects&) -> StreamInputEffects& = delete;
31 |   StreamInputEffects(const StreamInputEffects&&) = delete;
32 |   auto operator=(const StreamInputEffects&&) -> StreamInputEffects& = delete;
33 |   ~StreamInputEffects() override;
34 | 
35 |   void set_bypass(const bool& state);
36 | 
37 |   void set_listen_to_mic(const bool& state);
38 | 
39 |  private:
40 |   bool bypass = false;
41 | 
42 |   void connect_filters(const bool& bypass = false);
43 | 
44 |   void disconnect_filters();
45 | 
46 |   auto apps_want_to_play() -> bool;
47 | 
48 |   void on_app_added(NodeInfo node_info);
49 | 
50 |   void on_link_changed(LinkInfo link_info);
51 | };
52 | 


--------------------------------------------------------------------------------
/include/stream_output_effects.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include "effects_base.hpp"
23 | #include "pipe_manager.hpp"
24 | #include "pipe_objects.hpp"
25 | 
26 | class StreamOutputEffects : public EffectsBase {
27 |  public:
28 |   StreamOutputEffects(PipeManager* pipe_manager);
29 |   StreamOutputEffects(const StreamOutputEffects&) = delete;
30 |   auto operator=(const StreamOutputEffects&) -> StreamOutputEffects& = delete;
31 |   StreamOutputEffects(const StreamOutputEffects&&) = delete;
32 |   auto operator=(const StreamOutputEffects&&) -> StreamOutputEffects& = delete;
33 |   ~StreamOutputEffects() override;
34 | 
35 |   void set_bypass(const bool& state);
36 | 
37 |  private:
38 |   bool bypass = false;
39 | 
40 |   void connect_filters(const bool& bypass = false);
41 | 
42 |   void disconnect_filters();
43 | 
44 |   auto apps_want_to_play() -> bool;
45 | 
46 |   void on_app_added(NodeInfo node_info);
47 | };
48 | 


--------------------------------------------------------------------------------
/include/string_literal_wrapper.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include <array>
23 | #include <cstddef>
24 | 
25 | template <size_t N>
26 | struct StringLiteralWrapper {
27 |   // NOLINTNEXTLINE(hicpp-explicit-conversions)
28 |   constexpr StringLiteralWrapper(const char (&str)[N]) : msg(std::to_array(str)) {}
29 | 
30 |   // NOLINTNEXTLINE(hicpp-explicit-conversions)
31 |   constexpr StringLiteralWrapper(std::array<char, N> arr) : msg(arr) {}
32 | 
33 |   std::array<char, N> msg;
34 | };
35 | 


--------------------------------------------------------------------------------
/include/tags_app.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | namespace tags::app {
23 | 
24 | inline constexpr auto minimum_pw_version = "0.3.44";
25 | 
26 | inline constexpr auto id = "com.github.wwmm.easyeffects";
27 | 
28 | inline constexpr auto path = "/com/github/wwmm/easyeffects";
29 | 
30 | inline constexpr auto path_stream_inputs = "/com/github/wwmm/easyeffects/streaminputs/";
31 | 
32 | inline constexpr auto path_stream_outputs = "/com/github/wwmm/easyeffects/streamoutputs/";
33 | 
34 | }  // namespace tags::app
35 | 


--------------------------------------------------------------------------------
/include/tags_pipewire.hpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #pragma once
21 | 
22 | namespace tags::pipewire {
23 | 
24 | inline constexpr auto ee_source_name = "easyeffects_source";
25 | 
26 | inline constexpr auto ee_sink_name = "easyeffects_sink";
27 | 
28 | }  // namespace tags::pipewire
29 | 
30 | namespace tags::pipewire::media_class {
31 | 
32 | inline constexpr auto device = "Audio/Device";
33 | 
34 | inline constexpr auto sink = "Audio/Sink";
35 | 
36 | inline constexpr auto source = "Audio/Source";
37 | 
38 | inline constexpr auto virtual_source = "Audio/Source/Virtual";
39 | 
40 | inline constexpr auto input_stream = "Stream/Input/Audio";
41 | 
42 | inline constexpr auto output_stream = "Stream/Output/Audio";
43 | 
44 | }  // namespace tags::pipewire::media_class
45 | 
46 | namespace tags::pipewire::media_role {
47 | 
48 | inline constexpr auto dsp = "DSP";
49 | 
50 | }  // namespace tags::pipewire::media_role
51 | 


--------------------------------------------------------------------------------
/meson_options.txt:
--------------------------------------------------------------------------------
 1 | option(
 2 |   'devel',
 3 |   description: 'Whether to use development build mode, with .Devel appended to the application ID. For Flatpak builds, user data for development builds is stored separately from stable builds.',
 4 |   type: 'boolean',
 5 |   value: false
 6 | )
 7 | 
 8 | option(
 9 |   'enable-mold',
10 |   description: 'Use the mold linker for speed, so mold must be installed. Option exists to allow easily enabling mold for Flatpak builds in GNOME Builder since CC_LD and CXX_LD cannot be reasonably used due to: https://gitlab.gnome.org/GNOME/gnome-builder/-/issues/1168',
11 |   type: 'boolean',
12 |   value: false
13 | )
14 | 
15 | option(
16 |   'enable-libportal',
17 |   description: 'Whether to use libportal to handle autostart files.',
18 |   type: 'boolean',
19 |   value: false
20 | )
21 | 
22 | option(
23 |   'enable-rnnoise',
24 |   description: 'Whether to use RRNNoise for noise cancellation.',
25 |   type: 'boolean',
26 |   value: true
27 | )
28 | 
29 | option(
30 |   'enable-libcpp-workarounds',
31 |   description: 'Whether to enable code paths need for compilation on libc++.',
32 |   type: 'boolean',
33 |   value: false
34 | )
35 | 


--------------------------------------------------------------------------------
/po/LINGUAS:
--------------------------------------------------------------------------------
 1 | cs
 2 | de
 3 | fr
 4 | gl
 5 | hr
 6 | id_ID
 7 | it_IT
 8 | nl
 9 | pl
10 | pt_BR
11 | ru
12 | sk
13 | sv
14 | da
15 | nb_NO
16 | es_MX
17 | es_CO
18 | tr
19 | zh_CN
20 | ro
21 | es_VE
22 | ja
23 | ko
24 | es
25 | km
26 | af
27 | th
28 | bg
29 | ka
30 | uk
31 | eu
32 | nn
33 | ca
34 | zh_Hant
35 | hu
36 | ar
37 | ga
38 | pt
39 | ta
40 | 


--------------------------------------------------------------------------------
/po/meson.build:
--------------------------------------------------------------------------------
1 | i18n_mod.gettext(meson.project_name(),
2 |   preset: 'glib'
3 | )
4 | 
5 | subdir('news')
6 | 


--------------------------------------------------------------------------------
/po/news/LINGUAS:
--------------------------------------------------------------------------------
 1 | cs
 2 | de
 3 | fr_FR
 4 | gl
 5 | hr
 6 | id_ID
 7 | it_IT
 8 | nl
 9 | pl
10 | pt_BR
11 | ru
12 | sk
13 | sv
14 | da
15 | nb_NO
16 | es_MX
17 | es_CO
18 | tr
19 | zh_CN
20 | ro
21 | es_VE
22 | ja
23 | ko
24 | es
25 | km
26 | af
27 | th


--------------------------------------------------------------------------------
/po/news/POTFILES.in:
--------------------------------------------------------------------------------
1 | data/com.github.wwmm.easyeffects.metainfo.xml.in


--------------------------------------------------------------------------------
/po/news/meson.build:
--------------------------------------------------------------------------------
1 | i18n_mod.gettext(meson.project_name() + '-news',
2 |   preset: 'glib'
3 | )


--------------------------------------------------------------------------------
/src/fir_filter_highpass.cpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #include "fir_filter_highpass.hpp"
21 | #include <algorithm>
22 | #include <string>
23 | #include <utility>
24 | #include "fir_filter_base.hpp"
25 | 
26 | FirFilterHighpass::FirFilterHighpass(std::string tag) : FirFilterBase(std::move(tag)) {}
27 | 
28 | FirFilterHighpass::~FirFilterHighpass() = default;
29 | 
30 | void FirFilterHighpass::setup() {
31 |   kernel = create_lowpass_kernel(min_frequency, transition_band);
32 | 
33 |   std::ranges::for_each(kernel, [](auto& v) { v *= -1.0F; });
34 | 
35 |   kernel[(kernel.size() - 1U) / 2U] += 1.0F;
36 | 
37 |   delay = 0.5F * static_cast<float>(kernel.size() - 1U) / static_cast<float>(rate);
38 | 
39 |   setup_zita();
40 | }
41 | 


--------------------------------------------------------------------------------
/src/fir_filter_lowpass.cpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #include "fir_filter_lowpass.hpp"
21 | #include <string>
22 | #include <utility>
23 | #include "fir_filter_base.hpp"
24 | 
25 | FirFilterLowpass::FirFilterLowpass(std::string tag) : FirFilterBase(std::move(tag)) {}
26 | 
27 | FirFilterLowpass::~FirFilterLowpass() = default;
28 | 
29 | void FirFilterLowpass::setup() {
30 |   kernel = create_lowpass_kernel(max_frequency, transition_band);
31 | 
32 |   delay = 0.5F * static_cast<float>(kernel.size() - 1U) / static_cast<float>(rate);
33 | 
34 |   setup_zita();
35 | }
36 | 


--------------------------------------------------------------------------------
/src/resampler.cpp:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  Copyright © 2017-2025 Wellington Wallace
 3 |  *
 4 |  *  This file is part of Easy Effects.
 5 |  *
 6 |  *  Easy Effects is free software: you can redistribute it and/or modify
 7 |  *  it under the terms of the GNU General Public License as published by
 8 |  *  the Free Software Foundation, either version 3 of the License, or
 9 |  *  (at your option) any later version.
10 |  *
11 |  *  Easy Effects is distributed in the hope that it will be useful,
12 |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 |  *  GNU General Public License for more details.
15 |  *
16 |  *  You should have received a copy of the GNU General Public License
17 |  *  along with Easy Effects. If not, see <https://www.gnu.org/licenses/>.
18 |  */
19 | 
20 | #include "resampler.hpp"
21 | #include <samplerate.h>
22 | 
23 | Resampler::Resampler(const int& input_rate, const int& output_rate) : output(1, 0) {
24 |   resample_ratio = static_cast<double>(output_rate) / static_cast<double>(input_rate);
25 | 
26 |   src_state = src_new(SRC_SINC_FASTEST, 1, nullptr);
27 | }
28 | 
29 | Resampler::~Resampler() {
30 |   if (src_state != nullptr) {
31 |     src_delete(src_state);
32 |   }
33 | }
34 | 


--------------------------------------------------------------------------------
/util/changes_since_last_release.sh:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env bash
 2 | 
 3 | # using git log to view the changes that have been done since the tag given as argument
 4 | 
 5 | read -r -e -p "Write the last release version(example 6.2.6): " LAST_RELEASE
 6 | 
 7 | echo ""
 8 | echo "Changes done since $LAST_RELEASE:"
 9 | echo ""
10 | 
11 | git log v$LAST_RELEASE...HEAD --pretty=format:'%H %s'


--------------------------------------------------------------------------------
/util/clang-tidy.sh:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env bash
 2 | set -e
 3 | # write a custom script for ease of use, meson clang-tidy target can't do fixes, and also has somewhat broken threading
 4 | 
 5 | if ! meson introspect --projectinfo &> /dev/null; then
 6 |     echo "Error, meson introspect command failed, make sure you are in a meson build directory"
 7 |     exit 1
 8 | fi
 9 | 
10 | if [[ "$PWD" == "" ]]; then
11 |     echo "Error, \$PWD is empty"
12 |     exit 1
13 | fi
14 | 
15 | # save current dir and get repo dir
16 | # we need an absolute path without any .. in them otherwise these various layers of scripts get confused
17 | BUILD_DIR="$PWD"
18 | 
19 | cd ..
20 | REPO_DIR="$PWD"
21 | 
22 | # back to build dir
23 | cd "$BUILD_DIR"
24 | 
25 | # only scan c++ files in src, we don't want to scan the generated easyeffects-resources.c file
26 | # it is fine to use -fix everywhere, since it will still exit with error even if errors were all automatically fixed.
27 | # however we do not use -fix since it is safer to just manually fix things
28 | python3 ../util/run-clang-tidy.py -p . -config-file=../.clang-tidy "$REPO_DIR"/src/*.cpp
29 | 


--------------------------------------------------------------------------------
/util/crystalizer.py:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env python3
 2 | 
 3 | import numpy as np
 4 | import matplotlib.pyplot as plt
 5 | import scipy.io.wavfile as wavefile
 6 | 
 7 | rate, wave = wavefile.read('test.wav')
 8 | 
 9 | wave_y = wave[14000:15000]
10 | wave_x = np.arange(wave_y.size)
11 | 
12 | t = wave_x
13 | original = wave_y
14 | 
15 | standard = np.copy(original)
16 | deriv2 = np.zeros(original.size)
17 | 
18 | intensity = 2.0
19 | 
20 | # the boundaries are better handled in the plugin code
21 | 
22 | for n in range(original.size):
23 |     if n > 0 and n < original.size - 1:
24 |         deriv2[n] = original[n + 1] - 2 * original[n] + original[n - 1]
25 |     elif n == 0:
26 |         deriv2[0] = original[n + 1] - 2 * original[n] + original[n]
27 |     elif n == original.size - 1:
28 |         deriv2[n] = original[n] - 2 * original[n] + original[n - 1]
29 | 
30 | for n in range(standard.size):
31 |     standard[n] -= intensity * deriv2[n]
32 | 
33 | aggressive = np.copy(standard)
34 | 
35 | if intensity >= 1:
36 |     ndivs = 1000
37 |     gain = np.linspace(1, intensity, ndivs)
38 |     dv = 0.5 / ndivs
39 | 
40 |     for n in range(standard.size):
41 |         v = aggressive[n]
42 | 
43 |         idx = int(np.floor(np.fabs(v) / dv))
44 | 
45 |         if idx < 0:
46 |             idx = 0
47 |         elif idx > gain.size:
48 |             idx = gain.size - 1
49 | 
50 |         aggressive[n] = v * gain[idx]
51 | 
52 | 
53 | fig = plt.figure()
54 | 
55 | plt.plot(t, original, 'bo-', markersize=4, label='original')
56 | plt.plot(t, standard, 'ro-', markersize=4, label='standard')
57 | plt.plot(t, aggressive, 'go-', markersize=4, label='aggressive')
58 | 
59 | fig.legend()
60 | 
61 | plt.xlabel('Arbitrary Time', fontsize=18)
62 | plt.ylabel('Waveform', fontsize=18)
63 | plt.grid()
64 | 
65 | plt.show()
66 | 


--------------------------------------------------------------------------------
/util/environmental_variables.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | 
3 | export GSETTINGS_SCHEMA_DIR=../../data/schemas/
4 | export G_MESSAGES_DEBUG=easyeffects
5 | export ASAN_OPTIONS="detect_stack_use_after_return=1:check_initialization_order=1"
6 | export LSAN_OPTIONS="print_suppressions=true:suppressions=../../util/sanitizer.supp"
7 | 
8 | 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'
9 | 


--------------------------------------------------------------------------------
/util/flatpak/patch/bs2b/001-fix-automake-dist-lzma.patch:
--------------------------------------------------------------------------------
 1 | --- a/configure.ac
 2 | +++ b/configure.ac
 3 | @@ -4,8 +4,8 @@
 4 |  AC_PREREQ([2.63])
 5 |  AC_INIT([libbs2b], [3.1.0], [boris_mikhaylov@users.sourceforge.net])
 6 |  AC_CONFIG_AUX_DIR([build-aux])
 7 | -AM_INIT_AUTOMAKE([1.10.1 -Wall foreign subdir-objects
 8 | -                  dist-zip dist-bzip2 dist-lzma])
 9 | +AM_INIT_AUTOMAKE([1.11.2 -Wall foreign subdir-objects
10 | +                  dist-zip dist-bzip2 dist-xz])
11 |  AC_CONFIG_SRCDIR([src/bs2b.h])
12 |  
13 |  # Checks for programs.
14 | 


--------------------------------------------------------------------------------
/util/flatpak/patch/zita-convolver/0001-Fix-makefile.patch:
--------------------------------------------------------------------------------
 1 | From 5980950dbae82c6a03b38b8e66e07a8b29068a00 Mon Sep 17 00:00:00 2001
 2 | From: AsavarTzeth <asavartzeth@gmail.com>
 3 | Date: Thu, 19 Jul 2018 21:55:38 +0200
 4 | Subject: [PATCH] Fix makefile
 5 | 
 6 | - ldconfig should not be called by Makefile
 7 | - Add missing symlink for major version of lib
 8 | ---
 9 |  source/Makefile | 3 +--
10 |  1 file changed, 1 insertion(+), 2 deletions(-)
11 | 
12 | diff --git a/source/Makefile b/source/Makefile
13 | index 776c067..a15bea9 100644
14 | --- a/source/Makefile
15 | +++ b/source/Makefile
16 | @@ -34,7 +34,6 @@ VERSION = $(MAJVERS).$(MINVERS)
17 |  CPPFLAGS += -I. -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS
18 |  CPPFLAGS += -DENABLE_VECTOR_MODE 
19 |  CXXFLAGS += -fPIC -Wall -ffast-math -funroll-loops -O2
20 | -CXXFLAGS += -march=native
21 |  LDLFAGS += 
22 |  LDLIBS +=
23 |  
24 | @@ -56,8 +55,8 @@ install:	$(ZITA-CONVOLVER_MIN)
25 |  	install -d $(DESTDIR)$(LIBDIR)
26 |  	install -m 644 $(ZITA-CONVOLVER_H) $(DESTDIR)$(INCDIR)
27 |  	install -m 755 $(ZITA-CONVOLVER_MIN) $(DESTDIR)$(LIBDIR)
28 | -	ldconfig
29 |  	ln -sf $(ZITA-CONVOLVER_MIN) $(DESTDIR)$(LIBDIR)/$(ZITA-CONVOLVER_SO)
30 | +	ln -sf $(ZITA-CONVOLVER_MIN) $(DESTDIR)$(LIBDIR)/$(ZITA-CONVOLVER_MAJ)
31 |  
32 |  uninstall:
33 |  	rm -rf $(DESTDIR)$(INCDIR)/$(ZITA-CONVOLVER_H)
34 | 


--------------------------------------------------------------------------------
/util/flatpak/shared-modules/linux-audio/fftw3f.json:
--------------------------------------------------------------------------------
 1 | {
 2 |     "name": "fftw3f",
 3 |     "config-opts": [
 4 |         "--enable-threads",
 5 |         "--enable-shared",
 6 |         "--disable-static",
 7 |         "--enable-float"
 8 |     ],
 9 |     "build-options": {
10 |         "arch": {
11 |             "x86_64": {
12 |                 "config-opts": [
13 |                     "--enable-sse2",
14 |                     "--enable-avx",
15 |                     "--enable-avx-128-fma"
16 |                 ]
17 |             },
18 |             "aarch64": {
19 |                 "config-opts": [
20 |                     "--enable-neon"
21 |                 ]
22 |             }
23 |         }
24 |     },
25 |     "sources": [
26 |         {
27 |             "type": "archive",
28 |             "url": "https://www.fftw.org/fftw-3.3.10.tar.gz",
29 |             "sha256": "56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467"
30 |         }
31 |     ],
32 |     "cleanup": [
33 |         "/bin",
34 |         "/include",
35 |         "/lib/cmake",
36 |         "/lib/pkgconfig",
37 |         "/share/man",
38 |         "*.la",
39 |         "*.so"
40 |     ]
41 | }
42 | 


--------------------------------------------------------------------------------
/util/flatpak/shared-modules/linux-audio/ladspa.json:
--------------------------------------------------------------------------------
 1 | {
 2 |     "name": "ladspa",
 3 |     "no-autogen": true,
 4 |     "subdir": "src",
 5 |     "make-install-args": [
 6 |         "INSTALL_PLUGINS_DIR=/app/lib/ladspa",
 7 |         "INSTALL_INCLUDE_DIR=/app/include",
 8 |         "INSTALL_BINARY_DIR=/app/bin"
 9 |     ],
10 |     "sources": [
11 |         {
12 |             "type": "archive",
13 |             "url": "http://www.ladspa.org/download/ladspa_sdk_1.17.tgz",
14 |             "sha256": "27d24f279e4b81bd17ecbdcc38e4c42991bb388826c0b200067ce0eb59d3da5b"
15 |         }
16 |     ]
17 | }
18 | 


--------------------------------------------------------------------------------
/util/flatpak/shared-modules/linux-audio/lv2.json:
--------------------------------------------------------------------------------
 1 | 
 2 | {
 3 |     "name": "lv2",
 4 |     "buildsystem": "meson",
 5 |     "cleanup": [
 6 |         "/bin",
 7 |         "/include",
 8 |         "/lib/pkgconfig",
 9 |         "/share"
10 |     ],
11 |     "sources": [
12 |         {
13 |             "type": "archive",
14 |             "url": "https://lv2plug.in/spec/lv2-1.18.10.tar.xz",
15 |             "sha256": "78c51bcf21b54e58bb6329accbb4dae03b2ed79b520f9a01e734bd9de530953f"
16 |         }
17 |     ],
18 |     "post-install": [
19 |         "install -Dm644 -t $FLATPAK_DEST/share/licenses/lv2 ../COPYING",
20 |         "ln -sf lv2.pc $FLATPAK_DEST/lib/pkgconfig/lv2core.pc"
21 |     ]
22 | }


--------------------------------------------------------------------------------
/util/news-release-template.yaml:
--------------------------------------------------------------------------------
 1 | ---
 2 | Version: UNRELEASED_VERSION
 3 | Date: UNRELEASED_DATE
 4 | 
 5 | Description: 
 6 | - Features∶
 7 | - 
 8 | 
 9 | - Bug fixes∶
10 | - 
11 | 
12 | - Other notes∶
13 | - 
14 | 
15 | 


--------------------------------------------------------------------------------
/util/sanitizer.supp:
--------------------------------------------------------------------------------
1 | leak:libEGL_mesa*
2 | leak:libfontconfig*
3 | leak:libsigc*
4 | leak:libglib-2*


--------------------------------------------------------------------------------
/util/sanitizer.txt:
--------------------------------------------------------------------------------
1 | meson setup _build --prefix=/tmp/ee -Db_sanitize=address,undefined
2 | 
3 | G_SLICE=always-malloc G_DEBUG=gc-friendly ./easyeffects
4 | 
5 | export LSAN_OPTIONS="print_suppressions=false:suppressions=/path/to/blender-lsan-suppressions.txt"
6 | 


--------------------------------------------------------------------------------
/util/test.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wwmm/easyeffects/4307dbb82cb189a2e8bc2d1bb4efc532734d2e16/util/test.wav


--------------------------------------------------------------------------------
/util/update_translation_templates.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | 
3 | ninja easyeffects-pot
4 | ninja easyeffects-update-po
5 | ninja easyeffects-news-pot
6 | ninja easyeffects-news-update-po


--------------------------------------------------------------------------------
/util/valgrind.txt:
--------------------------------------------------------------------------------
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
2 | 


--------------------------------------------------------------------------------