├── AbstractAPOInfo.cpp ├── AbstractAPOInfo.h ├── Benchmark ├── Benchmark.cpp ├── Benchmark.vcxproj └── Benchmark.vcxproj.filters ├── Common.vcxproj ├── Common.vcxproj.filters ├── DeviceAPOInfo.cpp ├── DeviceAPOInfo.h ├── DeviceSelector ├── DeviceSelector.cpp ├── DeviceSelector.h ├── DeviceSelector.qrc ├── DeviceSelector.rc ├── DeviceSelector.ui ├── DeviceSelector.vcxproj ├── DeviceSelector.vcxproj.filters ├── DeviceTestDialog.cpp ├── DeviceTestDialog.h ├── DeviceTestDialog.ui ├── DeviceTestThread.cpp ├── DeviceTestThread.h ├── OpacityIconEngine.cpp ├── OpacityIconEngine.h ├── ReceiveThread.cpp ├── ReceiveThread.h ├── icons │ ├── circle-check.svg │ ├── circle-error.svg │ ├── circle-warning.svg │ ├── circle.svg │ └── preferences-system.ico ├── main.cpp ├── resource.h ├── stdafx.cpp ├── stdafx.h └── translations │ ├── DeviceSelector_de.ts │ └── DeviceSelector_en.ts ├── Editor ├── AnalysisPlotScene.cpp ├── AnalysisPlotScene.h ├── AnalysisPlotView.cpp ├── AnalysisPlotView.h ├── AnalysisThread.cpp ├── AnalysisThread.h ├── CustomStyle.cpp ├── CustomStyle.h ├── Editor.pro ├── Editor.qrc ├── Editor.rc ├── FilterTable.cpp ├── FilterTable.h ├── FilterTableMimeData.cpp ├── FilterTableMimeData.h ├── FilterTableRow.cpp ├── FilterTableRow.h ├── FilterTableRow.ui ├── FilterTemplate.cpp ├── FilterTemplate.h ├── IFilterGUI.cpp ├── IFilterGUI.h ├── IFilterGUIFactory.cpp ├── IFilterGUIFactory.h ├── Licenseheader.txt ├── MainWindow.cpp ├── MainWindow.h ├── MainWindow.ui ├── guis │ ├── BiQuadFilterGUI.cpp │ ├── BiQuadFilterGUI.h │ ├── BiQuadFilterGUI.ui │ ├── BiQuadFilterGUIFactory.cpp │ ├── BiQuadFilterGUIFactory.h │ ├── ChannelFilterGUI.cpp │ ├── ChannelFilterGUI.h │ ├── ChannelFilterGUI.ui │ ├── ChannelFilterGUIChannelItem.cpp │ ├── ChannelFilterGUIChannelItem.h │ ├── ChannelFilterGUIDialog.cpp │ ├── ChannelFilterGUIDialog.h │ ├── ChannelFilterGUIDialog.ui │ ├── ChannelFilterGUIFactory.cpp │ ├── ChannelFilterGUIFactory.h │ ├── ChannelFilterGUIScene.cpp │ ├── ChannelFilterGUIScene.h │ ├── CommentFilterGUI.cpp │ ├── CommentFilterGUI.h │ ├── CommentFilterGUI.ui │ ├── CommentFilterGUIFactory.cpp │ ├── CommentFilterGUIFactory.h │ ├── ConvolutionFilterGUI.cpp │ ├── ConvolutionFilterGUI.h │ ├── ConvolutionFilterGUI.ui │ ├── ConvolutionFilterGUIFactory.cpp │ ├── ConvolutionFilterGUIFactory.h │ ├── CopyFilterGUI.cpp │ ├── CopyFilterGUI.h │ ├── CopyFilterGUI.ui │ ├── CopyFilterGUIChannelItem.cpp │ ├── CopyFilterGUIChannelItem.h │ ├── CopyFilterGUIConnectionItem.cpp │ ├── CopyFilterGUIConnectionItem.h │ ├── CopyFilterGUIFactory.cpp │ ├── CopyFilterGUIFactory.h │ ├── CopyFilterGUIForm.cpp │ ├── CopyFilterGUIForm.h │ ├── CopyFilterGUIRow.cpp │ ├── CopyFilterGUIRow.h │ ├── CopyFilterGUIRow.ui │ ├── CopyFilterGUIScene.cpp │ ├── CopyFilterGUIScene.h │ ├── DelayFilterGUI.cpp │ ├── DelayFilterGUI.h │ ├── DelayFilterGUI.ui │ ├── DelayFilterGUIFactory.cpp │ ├── DelayFilterGUIFactory.h │ ├── DeviceFilterGUI.cpp │ ├── DeviceFilterGUI.h │ ├── DeviceFilterGUI.ui │ ├── DeviceFilterGUIDialog.cpp │ ├── DeviceFilterGUIDialog.h │ ├── DeviceFilterGUIDialog.ui │ ├── DeviceFilterGUIFactory.cpp │ ├── DeviceFilterGUIFactory.h │ ├── ExpressionFilterGUIFactory.cpp │ ├── ExpressionFilterGUIFactory.h │ ├── GraphicEQFilterGUI.cpp │ ├── GraphicEQFilterGUI.h │ ├── GraphicEQFilterGUI.ui │ ├── GraphicEQFilterGUIFactory.cpp │ ├── GraphicEQFilterGUIFactory.h │ ├── GraphicEQFilterGUIItem.cpp │ ├── GraphicEQFilterGUIItem.h │ ├── GraphicEQFilterGUIScene.cpp │ ├── GraphicEQFilterGUIScene.h │ ├── GraphicEQFilterGUIView.cpp │ ├── GraphicEQFilterGUIView.h │ ├── IncludeFilterGUI.cpp │ ├── IncludeFilterGUI.h │ ├── IncludeFilterGUI.ui │ ├── IncludeFilterGUIFactory.cpp │ ├── IncludeFilterGUIFactory.h │ ├── LoudnessCorrectionFilterGUI.cpp │ ├── LoudnessCorrectionFilterGUI.h │ ├── LoudnessCorrectionFilterGUI.ui │ ├── LoudnessCorrectionFilterGUIDialog.cpp │ ├── LoudnessCorrectionFilterGUIDialog.h │ ├── LoudnessCorrectionFilterGUIDialog.ui │ ├── LoudnessCorrectionFilterGUIFactory.cpp │ ├── LoudnessCorrectionFilterGUIFactory.h │ ├── PreampFilterGUI.cpp │ ├── PreampFilterGUI.h │ ├── PreampFilterGUI.ui │ ├── PreampFilterGUIFactory.cpp │ ├── PreampFilterGUIFactory.h │ ├── StageFilterGUI.cpp │ ├── StageFilterGUI.h │ ├── StageFilterGUI.ui │ ├── StageFilterGUIFactory.cpp │ ├── StageFilterGUIFactory.h │ ├── VSTPluginFilterGUI.cpp │ ├── VSTPluginFilterGUI.h │ ├── VSTPluginFilterGUI.ui │ ├── VSTPluginFilterGUIDialog.cpp │ ├── VSTPluginFilterGUIDialog.h │ ├── VSTPluginFilterGUIDialog.ui │ ├── VSTPluginFilterGUIFactory.cpp │ └── VSTPluginFilterGUIFactory.h ├── helpers │ ├── DisableWheelFilter.cpp │ ├── DisableWheelFilter.h │ ├── GUIChannelHelper.cpp │ ├── GUIChannelHelper.h │ ├── GUIHelper.cpp │ ├── GUIHelper.h │ ├── QtSndfileHandle.cpp │ └── QtSndfileHandle.h ├── icons │ ├── accessories-text-editor.ico │ ├── applications-graphics-rotated.ico │ ├── arrow_right.ico │ ├── arrow_right.svg │ ├── dark-mode │ │ ├── invert_response.svg │ │ ├── normalize_response.svg │ │ ├── reset_response.svg │ │ ├── toolbar-ext-h.svg │ │ └── toolbar-ext-v.svg │ ├── document-new.ico │ ├── document-open.ico │ ├── document-save-as.ico │ ├── document-save.ico │ ├── edit-copy.ico │ ├── edit-cut.ico │ ├── edit-delete.ico │ ├── edit-paste.ico │ ├── edit-select-all.ico │ ├── format-justify-fill-rotated.ico │ ├── go-up.ico │ ├── invert_response.svg │ ├── list-add-green.ico │ ├── list-remove-red.ico │ ├── normalize_response.svg │ ├── power_off.svg │ ├── power_on.svg │ ├── reset_response.svg │ ├── resize_corner.ico │ ├── resize_corner.svg │ └── resize_corner_20.svg ├── main.cpp ├── sounds │ └── pinkNoise.flac ├── stable.h ├── translations │ ├── Editor_de.qm │ ├── Editor_de.ts │ └── qtbase_de.qm └── widgets │ ├── ChannelGraphItem.cpp │ ├── ChannelGraphItem.h │ ├── ChannelGraphScene.cpp │ ├── ChannelGraphScene.h │ ├── CompactToolBar.cpp │ ├── CompactToolBar.h │ ├── EscapableLineEdit.cpp │ ├── EscapableLineEdit.h │ ├── ExponentialSpinBox.cpp │ ├── ExponentialSpinBox.h │ ├── FrequencyPlotHRuler.cpp │ ├── FrequencyPlotHRuler.h │ ├── FrequencyPlotItem.cpp │ ├── FrequencyPlotItem.h │ ├── FrequencyPlotScene.cpp │ ├── FrequencyPlotScene.h │ ├── FrequencyPlotVRuler.cpp │ ├── FrequencyPlotVRuler.h │ ├── FrequencyPlotView.cpp │ ├── FrequencyPlotView.h │ ├── MiddleClickTabBar.cpp │ ├── MiddleClickTabBar.h │ ├── MiddleClickTabWidget.cpp │ ├── MiddleClickTabWidget.h │ ├── ResizeCorner.cpp │ ├── ResizeCorner.h │ ├── ResizingLineEdit.cpp │ └── ResizingLineEdit.h ├── EqualizerAPO.licenseheader ├── EqualizerAPO.sln ├── EqualizerAPO ├── ClassFactory.cpp ├── ClassFactory.h ├── DllMain.cpp ├── EqualizerAPO-ARM64.rc ├── EqualizerAPO.cpp ├── EqualizerAPO.def ├── EqualizerAPO.h ├── EqualizerAPO.rc ├── EqualizerAPO.vcxproj ├── EqualizerAPO.vcxproj.filters ├── EqualizerAPO64.rc └── resource.h ├── FilterConfiguration.cpp ├── FilterConfiguration.h ├── FilterEngine.cpp ├── FilterEngine.h ├── IFilter.cpp ├── IFilter.h ├── IFilterFactory.h ├── License.txt ├── Release checklist.txt ├── Setup ├── Configuration reference (online).url ├── Configuration tutorial (online).url ├── Setup.nsi ├── Setup32.nsi ├── Setup64.nsi ├── SetupARM64.nsi ├── config │ ├── config.txt │ ├── demo.txt │ ├── example.txt │ ├── iir_lowpass.txt │ ├── multichannel.txt │ └── selective_delay.txt ├── lib32 │ ├── Qt6Core.dll │ ├── Qt6Gui.dll │ ├── Qt6Svg.dll │ ├── Qt6Widgets.dll │ ├── fftw3f.dll │ ├── msvcp140.dll │ ├── msvcp140_1.dll │ ├── msvcp140_2.dll │ ├── qt │ │ ├── iconengines │ │ │ └── qsvgicon.dll │ │ ├── imageformats │ │ │ ├── qico.dll │ │ │ └── qsvg.dll │ │ ├── platforms │ │ │ └── qwindows.dll │ │ └── styles │ │ │ └── qmodernwindowsstyle.dll │ ├── sndfile.dll │ └── vcruntime140.dll ├── lib64 │ ├── Qt6Core.dll │ ├── Qt6Gui.dll │ ├── Qt6Svg.dll │ ├── Qt6Widgets.dll │ ├── fftw3f.dll │ ├── msvcp140.dll │ ├── msvcp140_1.dll │ ├── msvcp140_2.dll │ ├── qt │ │ ├── iconengines │ │ │ └── qsvgicon.dll │ │ ├── imageformats │ │ │ ├── qico.dll │ │ │ └── qsvg.dll │ │ ├── platforms │ │ │ └── qwindows.dll │ │ └── styles │ │ │ └── qmodernwindowsstyle.dll │ ├── sndfile.dll │ ├── vcruntime140.dll │ └── vcruntime140_1.dll └── libARM64 │ ├── Qt6Core.dll │ ├── Qt6Gui.dll │ ├── Qt6Svg.dll │ ├── Qt6Widgets.dll │ ├── fftw3f.dll │ ├── msvcp140.dll │ ├── msvcp140_1.dll │ ├── msvcp140_2.dll │ ├── qt │ ├── iconengines │ │ └── qsvgicon.dll │ ├── imageformats │ │ ├── qico.dll │ │ └── qsvg.dll │ ├── platforms │ │ └── qwindows.dll │ └── styles │ │ └── qmodernwindowsstyle.dll │ ├── sndfile.dll │ ├── vcruntime140.dll │ └── vcruntime140_1.dll ├── VoicemeeterAPOInfo.cpp ├── VoicemeeterAPOInfo.h ├── VoicemeeterClient ├── VoicemeeterClient.cpp ├── VoicemeeterClient.h ├── VoicemeeterClient.rc ├── VoicemeeterClient.vcxproj ├── VoicemeeterClient.vcxproj.filters ├── VoicemeeterRemote.h └── resource.h ├── Wiki ├── Configuration reference.txt ├── Developer.txt ├── Documentation.txt ├── EnhancementsTab.png ├── NoEnhancementsTab.png ├── RoomEQWizard-thumb.png ├── RoomEQWizard.png ├── RoomEQWizard.xcf ├── Stages.odg ├── Stages.png ├── Stages.svg ├── Transfer function.odf ├── Transfer function.png ├── UseOriginalAPO.png └── UseOriginalAPO.xcf ├── build.bat ├── filters ├── BiQuad.cpp ├── BiQuad.h ├── BiQuadFilter.cpp ├── BiQuadFilter.h ├── BiQuadFilterFactory.cpp ├── BiQuadFilterFactory.h ├── ChannelFilter.cpp ├── ChannelFilter.h ├── ChannelFilterFactory.cpp ├── ChannelFilterFactory.h ├── ConvolutionFilter.cpp ├── ConvolutionFilter.h ├── ConvolutionFilterFactory.cpp ├── ConvolutionFilterFactory.h ├── CopyFilter.cpp ├── CopyFilter.h ├── CopyFilterFactory.cpp ├── CopyFilterFactory.h ├── DelayFilter.cpp ├── DelayFilter.h ├── DelayFilterFactory.cpp ├── DelayFilterFactory.h ├── DeviceFilterFactory.cpp ├── DeviceFilterFactory.h ├── ExpressionFilterFactory.cpp ├── ExpressionFilterFactory.h ├── GraphicEQFilter.cpp ├── GraphicEQFilter.h ├── GraphicEQFilterFactory.cpp ├── GraphicEQFilterFactory.h ├── IIRFilter.cpp ├── IIRFilter.h ├── IIRFilterFactory.cpp ├── IIRFilterFactory.h ├── IfFilterFactory.cpp ├── IfFilterFactory.h ├── IncludeFilterFactory.cpp ├── IncludeFilterFactory.h ├── PreampFilter.cpp ├── PreampFilter.h ├── PreampFilterFactory.cpp ├── PreampFilterFactory.h ├── StageFilterFactory.cpp ├── StageFilterFactory.h ├── VSTPluginFilter.cpp ├── VSTPluginFilter.h ├── VSTPluginFilterFactory.cpp ├── VSTPluginFilterFactory.h └── loudnessCorrection │ ├── LoudnessCorrectionFilter.cpp │ ├── LoudnessCorrectionFilter.h │ ├── LoudnessCorrectionFilterFactory.cpp │ ├── LoudnessCorrectionFilterFactory.h │ ├── ParameterArchive.h │ ├── VolumeController.cpp │ └── VolumeController.h ├── helpers ├── AbstractLibrary.cpp ├── AbstractLibrary.h ├── ChannelHelper.cpp ├── ChannelHelper.h ├── GainIterator.cpp ├── GainIterator.h ├── LogHelper.cpp ├── LogHelper.h ├── MemoryHelper.cpp ├── MemoryHelper.h ├── PrecisionTimer.h ├── RegistryHelper.cpp ├── RegistryHelper.h ├── ScopeGuard.h ├── ServiceHelper.cpp ├── ServiceHelper.h ├── StringHelper.cpp ├── StringHelper.h ├── UncaughtExceptions.h ├── VSTPluginInstance.cpp ├── VSTPluginInstance.h ├── VSTPluginLibrary.cpp ├── VSTPluginLibrary.h └── aeffectx.h ├── libHybridConv-0.1.1 ├── Makefile ├── hcTest.c ├── libHybridConv.c ├── libHybridConv.h ├── libHybridConv_eapo.cpp └── libHybridConv_eapo.h ├── parser ├── LogicalOperators.cpp ├── LogicalOperators.h ├── RegexFunctions.cpp ├── RegexFunctions.h ├── RegistryFunctions.cpp ├── RegistryFunctions.h ├── StringOperators.cpp └── StringOperators.h ├── reformat.bat ├── stdafx.cpp ├── stdafx.h ├── uncrustify.cfg └── version.h /AbstractAPOInfo.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "stdafx.h" 21 | #include "AbstractAPOInfo.h" 22 | 23 | AbstractAPOInfo::~AbstractAPOInfo() 24 | { 25 | } 26 | -------------------------------------------------------------------------------- /Benchmark/Benchmark.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | helpers 8 | 9 | 10 | 11 | 12 | 13 | helpers 14 | 15 | 16 | 17 | 18 | {8c70f87a-7d86-4826-bfa1-7a4c4ec5efec} 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /DeviceSelector/DeviceSelector.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | translations/qtbase_de.qm 4 | translations/DeviceSelector_de.qm 5 | icons/circle.svg 6 | icons/circle-check.svg 7 | icons/circle-error.svg 8 | icons/circle-warning.svg 9 | translations/DeviceSelector_en.qm 10 | icons/preferences-system.ico 11 | 12 | 13 | -------------------------------------------------------------------------------- /DeviceSelector/DeviceSelector.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/DeviceSelector/DeviceSelector.rc -------------------------------------------------------------------------------- /DeviceSelector/DeviceTestDialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include "ui_DeviceTestDialog.h" 8 | 9 | class DeviceTestDialog : public QDialog 10 | { 11 | Q_OBJECT 12 | 13 | public: 14 | DeviceTestDialog(QWidget* parent = nullptr); 15 | std::vector> filterDevices(const std::vector>& devices); 16 | void addDevices(std::vector>& devices, QTreeWidgetItem* parentNode); 17 | 18 | protected: 19 | __override void closeEvent(QCloseEvent* event); 20 | 21 | private: 22 | Ui::DeviceTestDialogClass ui; 23 | 24 | QHash itemMap; 25 | QIcon animatedIcon; 26 | OpacityIconEngine* animatedIconEngine; 27 | DeviceTestThread* thread = nullptr; 28 | 29 | void log(const QString& message); 30 | void logError(const QString& message); 31 | void showErrorDialog(const QString& message); 32 | void setItemStatus(const QString& guid, bool postMix, ItemStatusType statusType); 33 | void animateIcon(const QVariant& value); 34 | void onThreadFinished(); 35 | void onAbort(const QString& message, int code); 36 | }; 37 | -------------------------------------------------------------------------------- /DeviceSelector/OpacityIconEngine.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2024 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "stdafx.h" 21 | #include "OpacityIconEngine.h" 22 | 23 | OpacityIconEngine::OpacityIconEngine(const QIcon& icon) 24 | :icon(icon) 25 | { 26 | } 27 | 28 | void OpacityIconEngine::paint(QPainter* painter, const QRect& rect, QIcon::Mode mode, QIcon::State state) 29 | { 30 | painter->setOpacity(opacity); 31 | icon.paint(painter, rect, Qt::AlignCenter, mode, state); 32 | } 33 | 34 | OpacityIconEngine* OpacityIconEngine::clone() const 35 | { 36 | OpacityIconEngine* engine = new OpacityIconEngine(icon); 37 | engine->setOpacity(opacity); 38 | return engine; 39 | } 40 | 41 | void OpacityIconEngine::setOpacity(qreal opacity) 42 | { 43 | this->opacity = opacity; 44 | } 45 | -------------------------------------------------------------------------------- /DeviceSelector/OpacityIconEngine.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2024 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class OpacityIconEngine : public QIconEngine 25 | { 26 | public: 27 | OpacityIconEngine(const QIcon& icon); 28 | __override void paint(QPainter* painter, const QRect& rect, QIcon::Mode mode, QIcon::State state); 29 | __override OpacityIconEngine* clone() const; 30 | 31 | void setOpacity(qreal opacity); 32 | 33 | private: 34 | QIcon icon; 35 | qreal opacity = 0.5; 36 | }; 37 | -------------------------------------------------------------------------------- /DeviceSelector/icons/preferences-system.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/DeviceSelector/icons/preferences-system.ico -------------------------------------------------------------------------------- /DeviceSelector/stdafx.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2024 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "stdafx.h" 21 | -------------------------------------------------------------------------------- /DeviceSelector/stdafx.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2024 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | #define WIN32_LEAN_AND_MEAN 22 | #include 23 | #include "helpers/ScopeGuard.h" 24 | -------------------------------------------------------------------------------- /DeviceSelector/translations/DeviceSelector_en.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DeviceTestThread 6 | 7 | 8 | Check failed for %n device(s). 9 | 10 | Check failed for one device. 11 | Check failed for %n devices. 12 | 13 | 14 | 15 | 16 | Checks done. Problems were detected for %n device(s). 17 | 18 | Checks done. Problems were detected for one device. 19 | Checks done. Problems were detected for %n devices. 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Editor/AnalysisPlotScene.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | #include "AnalysisPlotScene.h" 22 | 23 | using namespace std; 24 | 25 | AnalysisPlotScene::AnalysisPlotScene(QObject* parent) 26 | : FrequencyPlotScene(parent) 27 | { 28 | } 29 | 30 | void AnalysisPlotScene::setFreqData(fftwf_complex* freqData, int frameCount, unsigned sampleRate) 31 | { 32 | nodes.clear(); 33 | for (int i = 0; i < frameCount / 2; i++) 34 | { 35 | float freq = (i * 1.0f / frameCount) * sampleRate; 36 | // GainIterator can't handle 0 Hz node 37 | if (freq == 0.0f) 38 | freq = 0.001f; 39 | float gain = sqrt(freqData[i][0] * freqData[i][0] + freqData[i][1] * freqData[i][1]); 40 | float dbGain = log10(gain) * 20; 41 | nodes.push_back(FilterNode(freq, dbGain)); 42 | } 43 | 44 | update(); 45 | } 46 | 47 | const vector& AnalysisPlotScene::getNodes() const 48 | { 49 | return nodes; 50 | } 51 | -------------------------------------------------------------------------------- /Editor/AnalysisPlotScene.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "Editor/widgets/FrequencyPlotScene.h" 26 | #include "helpers/GainIterator.h" 27 | 28 | class AnalysisPlotScene : public FrequencyPlotScene 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | AnalysisPlotScene(QObject* parent = 0); 34 | 35 | void setFreqData(fftwf_complex* freqData, int frameCount, unsigned sampleRate); 36 | 37 | const std::vector& getNodes() const; 38 | 39 | private: 40 | std::vector nodes; 41 | }; 42 | -------------------------------------------------------------------------------- /Editor/AnalysisPlotView.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/widgets/FrequencyPlotView.h" 23 | 24 | class AnalysisPlotView : public FrequencyPlotView 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | AnalysisPlotView(QWidget* parent = NULL); 30 | 31 | protected: 32 | void drawBackground(QPainter* painter, const QRectF& rect) override; 33 | }; 34 | -------------------------------------------------------------------------------- /Editor/CustomStyle.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2016 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class CustomStyle : public QProxyStyle 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | CustomStyle(QStyle* style); 30 | 31 | int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const override; 32 | QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override; 33 | }; 34 | -------------------------------------------------------------------------------- /Editor/Editor.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | translations/Editor_de.qm 4 | translations/qtbase_de.qm 5 | icons/document-open.ico 6 | icons/document-save.ico 7 | icons/accessories-text-editor.ico 8 | icons/applications-graphics-rotated.ico 9 | icons/document-new.ico 10 | icons/document-save-as.ico 11 | icons/edit-copy.ico 12 | icons/edit-cut.ico 13 | icons/edit-delete.ico 14 | icons/edit-paste.ico 15 | icons/format-justify-fill-rotated.ico 16 | icons/go-up.ico 17 | icons/list-add-green.ico 18 | icons/list-remove-red.ico 19 | icons/arrow_right.ico 20 | icons/resize_corner.ico 21 | sounds/pinkNoise.flac 22 | icons/edit-select-all.ico 23 | icons/power_off.svg 24 | icons/power_on.svg 25 | icons/dark-mode/invert_response.svg 26 | icons/dark-mode/normalize_response.svg 27 | icons/dark-mode/reset_response.svg 28 | icons/invert_response.svg 29 | icons/normalize_response.svg 30 | icons/reset_response.svg 31 | icons/dark-mode/toolbar-ext-h.svg 32 | icons/dark-mode/toolbar-ext-v.svg 33 | 34 | 35 | -------------------------------------------------------------------------------- /Editor/Editor.rc: -------------------------------------------------------------------------------- 1 | # if defined(UNDER_CE) 2 | # include 3 | # else 4 | # include 5 | # endif 6 | #include "../version.h" 7 | 8 | #define S2(x) #x 9 | #define S(x) S2(x) 10 | 11 | IDI_ICON1 ICON DISCARDABLE "icons\\accessories-text-editor.ico" 12 | 13 | VS_VERSION_INFO VERSIONINFO 14 | FILEVERSION MAJOR,MINOR,REVISION,0 15 | PRODUCTVERSION MAJOR,MINOR,REVISION,0 16 | FILEFLAGSMASK 0x3fL 17 | #ifdef _DEBUG 18 | FILEFLAGS VS_FF_DEBUG 19 | #else 20 | FILEFLAGS 0x0L 21 | #endif 22 | FILEOS VOS__WINDOWS32 23 | FILETYPE VFT_DLL 24 | FILESUBTYPE 0x0L 25 | BEGIN 26 | BLOCK "StringFileInfo" 27 | BEGIN 28 | BLOCK "040904b0" 29 | BEGIN 30 | VALUE "FileDescription", "Equalizer APO Configuration Editor\0" 31 | VALUE "FileVersion", S(MAJOR) "." S(MINOR) "." S(REVISION) ".0" 32 | VALUE "LegalCopyright", "Copyright (C) 2017\0" 33 | VALUE "OriginalFilename", "Editor.exe\0" 34 | VALUE "ProductName", "Equalizer APO Configuration Editor\0" 35 | VALUE "ProductVersion", S(MAJOR) "." S(MINOR) "." S(REVISION) ".0" 36 | END 37 | END 38 | BLOCK "VarFileInfo" 39 | BEGIN 40 | VALUE "Translation", 0x0409, 1200 41 | END 42 | END 43 | /* End of Version info */ 44 | 45 | -------------------------------------------------------------------------------- /Editor/FilterTableMimeData.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "FilterTableMimeData.h" 21 | 22 | FilterTableMimeData::FilterTableMimeData() 23 | { 24 | } 25 | 26 | QList FilterTableMimeData::getPrefsList() const 27 | { 28 | return prefsList; 29 | } 30 | 31 | void FilterTableMimeData::setPrefsList(const QList& value) 32 | { 33 | prefsList = value; 34 | } 35 | -------------------------------------------------------------------------------- /Editor/FilterTableMimeData.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class FilterTableMimeData : public QMimeData 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | FilterTableMimeData(); 30 | 31 | QList getPrefsList() const; 32 | void setPrefsList(const QList& value); 33 | 34 | private: 35 | QList prefsList; 36 | }; 37 | -------------------------------------------------------------------------------- /Editor/FilterTemplate.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "FilterTemplate.h" 21 | 22 | FilterTemplate::FilterTemplate(QString name, QString line, QStringList path) 23 | : name(name), line(line), path(path) 24 | { 25 | } 26 | 27 | QString FilterTemplate::getName() const 28 | { 29 | return name; 30 | } 31 | 32 | void FilterTemplate::setName(const QString& value) 33 | { 34 | name = value; 35 | } 36 | 37 | QString FilterTemplate::getLine() const 38 | { 39 | return line; 40 | } 41 | 42 | void FilterTemplate::setLine(const QString& value) 43 | { 44 | line = value; 45 | } 46 | 47 | QStringList FilterTemplate::getPath() const 48 | { 49 | return path; 50 | } 51 | 52 | void FilterTemplate::setPath(const QStringList& value) 53 | { 54 | path = value; 55 | } 56 | -------------------------------------------------------------------------------- /Editor/FilterTemplate.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | class FilterTemplate 23 | { 24 | public: 25 | FilterTemplate() {} 26 | FilterTemplate(QString name, QString line, QStringList path); 27 | 28 | QString getName() const; 29 | void setName(const QString& value); 30 | 31 | virtual QString getLine() const; 32 | void setLine(const QString& value); 33 | 34 | QStringList getPath() const; 35 | void setPath(const QStringList& value); 36 | 37 | private: 38 | QString name; 39 | QString line; 40 | QStringList path; 41 | }; 42 | 43 | Q_DECLARE_METATYPE(FilterTemplate) 44 | -------------------------------------------------------------------------------- /Editor/IFilterGUI.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "IFilterGUI.h" 21 | 22 | IFilterGUI::IFilterGUI(QWidget* parent) 23 | : QWidget(parent) 24 | { 25 | } 26 | 27 | IFilterGUI::~IFilterGUI() 28 | { 29 | } 30 | -------------------------------------------------------------------------------- /Editor/IFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | class IFilterGUI : public QWidget 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | IFilterGUI(QWidget* parent = 0); 33 | virtual ~IFilterGUI(); 34 | 35 | virtual void configureChannels(std::vector& channelNames) {} 36 | 37 | virtual void store(QString& command, QString& parameters) = 0; 38 | 39 | virtual void loadPreferences(const QVariantMap& prefs) {} 40 | virtual void storePreferences(QVariantMap& prefs) {} 41 | 42 | signals: 43 | void updateModel(); 44 | void updateChannels(); 45 | }; 46 | -------------------------------------------------------------------------------- /Editor/IFilterGUIFactory.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "IFilterGUIFactory.h" 21 | 22 | IFilterGUIFactory::~IFilterGUIFactory() 23 | { 24 | } 25 | -------------------------------------------------------------------------------- /Editor/IFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "FilterTemplate.h" 23 | #include "IFilterGUI.h" 24 | 25 | class FilterTable; 26 | 27 | class IFilterGUIFactory : public QObject 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | virtual ~IFilterGUIFactory(); 33 | 34 | virtual void initialize(FilterTable* filterTable) {} 35 | 36 | virtual QList createFilterTemplates() 37 | { 38 | return QList(); 39 | } 40 | 41 | virtual void startOfFile(const QString& configPath) {} 42 | virtual IFilterGUI* createFilterGUI(QString& command, QString& parameters) = 0; 43 | virtual IFilterGUI* decorateFilterGUI(IFilterGUI* gui) 44 | { 45 | return gui; 46 | } 47 | virtual void endOfFile(const QString& configPath) {} 48 | }; 49 | -------------------------------------------------------------------------------- /Editor/Licenseheader.txt: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) %YEAR% Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | -------------------------------------------------------------------------------- /Editor/guis/BiQuadFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class BiQuadFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | explicit BiQuadFilterGUIFactory(); 30 | 31 | QList createFilterTemplates() override; 32 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 33 | }; 34 | -------------------------------------------------------------------------------- /Editor/guis/ChannelFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | #include "ChannelFilterGUIScene.h" 24 | 25 | namespace Ui { 26 | class ChannelFilterGUI; 27 | } 28 | 29 | class ChannelFilterGUI : public IFilterGUI 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | explicit ChannelFilterGUI(const QString& parameters, int selectedChannelMask); 35 | ~ChannelFilterGUI(); 36 | void configureChannels(std::vector& channelNames) override; 37 | void store(QString& command, QString& parameters) override; 38 | 39 | private slots: 40 | void on_pushButton_clicked(); 41 | void updateSelectedChannels(); 42 | 43 | private: 44 | void refreshGui(); 45 | 46 | Ui::ChannelFilterGUI* ui; 47 | QStringList selectedChannels; 48 | int selectedChannelMask; 49 | std::vector channelNames; 50 | ChannelFilterGUIScene* scene; 51 | }; 52 | -------------------------------------------------------------------------------- /Editor/guis/ChannelFilterGUIChannelItem.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | 22 | #include "ChannelFilterGUIScene.h" 23 | #include "ChannelFilterGUIChannelItem.h" 24 | 25 | ChannelFilterGUIChannelItem::ChannelFilterGUIChannelItem(const QString& name) 26 | : ChannelGraphItem(name) 27 | { 28 | setFlag(ItemIsSelectable); 29 | } 30 | 31 | void ChannelFilterGUIChannelItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) 32 | { 33 | QColor color; 34 | 35 | if (isSelected()) 36 | { 37 | color = QColor(176, 229, 255); 38 | } 39 | else 40 | { 41 | painter->setPen(QColor(156, 156, 156)); 42 | color = QColor(204, 204, 204); 43 | } 44 | 45 | ChannelGraphItem::paint(painter, color); 46 | } 47 | -------------------------------------------------------------------------------- /Editor/guis/ChannelFilterGUIChannelItem.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/widgets/ChannelGraphItem.h" 23 | 24 | class ChannelFilterGUIChannelItem : public ChannelGraphItem 25 | { 26 | public: 27 | ChannelFilterGUIChannelItem(const QString& name); 28 | 29 | enum {Type = UserType + 2}; 30 | virtual int type() const 31 | { 32 | return Type; 33 | } 34 | 35 | void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override; 36 | }; 37 | -------------------------------------------------------------------------------- /Editor/guis/ChannelFilterGUIDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | namespace Ui { 26 | class ChannelFilterGUIDialog; 27 | } 28 | 29 | class ChannelFilterGUIDialog : public QDialog 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | explicit ChannelFilterGUIDialog(QWidget* parent, QStringList selectedChannels, int selectedChannelMask, const std::vector& channelNames); 35 | ~ChannelFilterGUIDialog(); 36 | 37 | QStringList getSelectedChannels() const; 38 | 39 | private slots: 40 | void on_addButton_clicked(); 41 | 42 | void on_removeButton_clicked(); 43 | 44 | void on_allChannelsCheckBox_toggled(bool checked); 45 | 46 | private: 47 | Ui::ChannelFilterGUIDialog* ui; 48 | QList checkBoxes; 49 | }; 50 | -------------------------------------------------------------------------------- /Editor/guis/ChannelFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "DeviceAPOInfo.h" 23 | #include "Editor/IFilterGUIFactory.h" 24 | 25 | class ChannelFilterGUIFactory : public IFilterGUIFactory 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | ChannelFilterGUIFactory(); 31 | 32 | void initialize(FilterTable* filterTable) override; 33 | 34 | QList createFilterTemplates() override; 35 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 36 | 37 | private: 38 | FilterTable* filterTable; 39 | }; 40 | -------------------------------------------------------------------------------- /Editor/guis/ChannelFilterGUIScene.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "Editor/widgets/ChannelGraphScene.h" 26 | 27 | class ChannelFilterGUIScene : public ChannelGraphScene 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit ChannelFilterGUIScene(); 32 | 33 | void load(std::vector channelNames, QStringList selectedChannels); 34 | QStringList getSelectedChannels(); 35 | }; 36 | -------------------------------------------------------------------------------- /Editor/guis/CommentFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | 24 | namespace Ui { 25 | class CommentFilterGUI; 26 | } 27 | 28 | class CommentFilterGUI : public IFilterGUI 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | explicit CommentFilterGUI(IFilterGUI* child, bool isComment); 34 | ~CommentFilterGUI(); 35 | void configureChannels(std::vector& channelNames) override; 36 | void store(QString& command, QString& parameters) override; 37 | 38 | void loadPreferences(const QVariantMap& prefs) override; 39 | void storePreferences(QVariantMap& prefs) override; 40 | 41 | private slots: 42 | void on_actionPowerOn_toggled(bool checked); 43 | 44 | private: 45 | Ui::CommentFilterGUI* ui; 46 | IFilterGUI* child; 47 | }; 48 | -------------------------------------------------------------------------------- /Editor/guis/CommentFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class CommentFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | CommentFilterGUIFactory(); 30 | 31 | QList createFilterTemplates() override; 32 | 33 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 34 | IFilterGUI* decorateFilterGUI(IFilterGUI* gui) override; 35 | 36 | private: 37 | bool lastWasComment; 38 | }; 39 | -------------------------------------------------------------------------------- /Editor/guis/ConvolutionFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | 24 | namespace Ui { 25 | class ConvolutionFilterGUI; 26 | } 27 | 28 | class ConvolutionFilterGUI : public IFilterGUI 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | explicit ConvolutionFilterGUI(const QString& configPath, unsigned deviceSampleRate, const QString& path); 34 | ~ConvolutionFilterGUI(); 35 | 36 | void store(QString& command, QString& parameters) override; 37 | 38 | private slots: 39 | void on_selectFileToolButton_clicked(); 40 | 41 | void on_pathLineEdit_editingFinished(); 42 | 43 | private: 44 | void updateFileInfo(); 45 | 46 | Ui::ConvolutionFilterGUI* ui; 47 | QString configPath; 48 | unsigned deviceSampleRate; 49 | }; 50 | -------------------------------------------------------------------------------- /Editor/guis/ConvolutionFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class ConvolutionFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit ConvolutionFilterGUIFactory(); 29 | 30 | void initialize(FilterTable* filterTable) override; 31 | 32 | QList createFilterTemplates() override; 33 | 34 | void startOfFile(const QString& configPath) override; 35 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 36 | 37 | private: 38 | QString configPath; 39 | unsigned deviceSampleRate; 40 | }; 41 | -------------------------------------------------------------------------------- /Editor/guis/CopyFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "filters/CopyFilter.h" 23 | #include "Editor/IFilterGUI.h" 24 | #include "CopyFilterGUIScene.h" 25 | #include "Editor/FilterTable.h" 26 | 27 | namespace Ui { 28 | class CopyFilterGUI; 29 | } 30 | 31 | class CopyFilterGUI : public IFilterGUI 32 | { 33 | Q_OBJECT 34 | 35 | public: 36 | explicit CopyFilterGUI(CopyFilter* filter, FilterTable* filterTable); 37 | ~CopyFilterGUI(); 38 | 39 | void configureChannels(std::vector& channelNames) override; 40 | 41 | void store(QString& command, QString& parameters) override; 42 | 43 | void loadPreferences(const QVariantMap& prefs) override; 44 | void storePreferences(QVariantMap& prefs) override; 45 | 46 | private: 47 | Ui::CopyFilterGUI* ui; 48 | CopyFilterGUIScene* scene; 49 | 50 | std::vector inputChannelNames; 51 | }; 52 | -------------------------------------------------------------------------------- /Editor/guis/CopyFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class CopyFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | CopyFilterGUIFactory(); 30 | 31 | void initialize(FilterTable* filterTable) override; 32 | 33 | QList createFilterTemplates() override; 34 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 35 | 36 | private: 37 | FilterTable* filterTable; 38 | }; 39 | -------------------------------------------------------------------------------- /Editor/guis/CopyFilterGUIForm.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | #include "filters/CopyFilter.h" 27 | 28 | class CopyFilterGUIForm : public QWidget 29 | { 30 | Q_OBJECT 31 | public: 32 | explicit CopyFilterGUIForm(QWidget* parent = 0); 33 | 34 | void load(std::vector assignments); 35 | void setChannelNames(const std::vector& channelNames); 36 | std::vector buildAssignments(QWidget* pressedButton = NULL); 37 | 38 | signals: 39 | void updateModel(); 40 | void updateChannels(); 41 | 42 | private slots: 43 | void addSummand(); 44 | void remove(); 45 | void addAssignment(); 46 | 47 | private: 48 | QGridLayout* gridLayout = NULL; 49 | std::vector inputChannelNames; 50 | }; 51 | -------------------------------------------------------------------------------- /Editor/guis/CopyFilterGUIRow.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "filters/CopyFilter.h" 25 | 26 | namespace Ui { 27 | class CopyFilterGUIRow; 28 | } 29 | 30 | class CopyFilterGUIRow : public QWidget 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | explicit CopyFilterGUIRow(Assignment::Summand summand, std::vector channelNames, QWidget* parent = 0); 36 | ~CopyFilterGUIRow(); 37 | 38 | void setChannelNames(const std::vector& channelNames); 39 | Assignment::Summand buildSummand(); 40 | 41 | signals: 42 | void updateModel(); 43 | void updateChannels(); 44 | 45 | private slots: 46 | void on_modeComboBox_currentIndexChanged(int index); 47 | 48 | private: 49 | Ui::CopyFilterGUIRow* ui; 50 | }; 51 | -------------------------------------------------------------------------------- /Editor/guis/CopyFilterGUIScene.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "Editor/widgets/ChannelGraphScene.h" 26 | #include "filters/CopyFilter.h" 27 | 28 | class CopyFilterGUIScene : public ChannelGraphScene 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | void load(const std::vector& channelNames, std::vector assignments); 34 | std::vector buildAssignments(); 35 | 36 | signals: 37 | void updateModel(); 38 | void updateChannels(); 39 | 40 | protected: 41 | void keyPressEvent(QKeyEvent* event) override; 42 | 43 | private slots: 44 | void addOutputChannel(); 45 | void lineEditEditingFinished(); 46 | void lineEditEditingCanceled(); 47 | 48 | private: 49 | QGraphicsItem* lastOutputItem; 50 | QGraphicsProxyWidget* addProxyItem; 51 | }; 52 | -------------------------------------------------------------------------------- /Editor/guis/DelayFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | 24 | namespace Ui { 25 | class DelayFilterGUI; 26 | } 27 | 28 | class DelayFilterGUI : public IFilterGUI 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | explicit DelayFilterGUI(double delay, bool isMs); 34 | ~DelayFilterGUI(); 35 | 36 | void store(QString& command, QString& parameters) override; 37 | 38 | private slots: 39 | void on_unitComboBox_currentIndexChanged(int index); 40 | 41 | void on_delayDial_valueChanged(int value); 42 | 43 | void on_delaySpinBox_valueChanged(double value); 44 | 45 | private: 46 | Ui::DelayFilterGUI* ui; 47 | }; 48 | -------------------------------------------------------------------------------- /Editor/guis/DelayFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class DelayFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | explicit DelayFilterGUIFactory(); 30 | 31 | QList createFilterTemplates() override; 32 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override;; 33 | }; 34 | -------------------------------------------------------------------------------- /Editor/guis/DeviceFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | #include "DeviceFilterGUIFactory.h" 24 | 25 | namespace Ui { 26 | class DeviceFilterGUI; 27 | } 28 | 29 | class DeviceFilterGUI : public IFilterGUI 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | explicit DeviceFilterGUI(DeviceFilterGUIFactory* factory); 35 | ~DeviceFilterGUI(); 36 | void load(const QString& parameters); 37 | void store(QString& command, QString& parameters) override; 38 | 39 | private slots: 40 | void on_pushButton_clicked(); 41 | 42 | private: 43 | Ui::DeviceFilterGUI* ui; 44 | DeviceFilterGUIFactory* factory; 45 | QString pattern; 46 | }; 47 | -------------------------------------------------------------------------------- /Editor/guis/DeviceFilterGUIDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "DeviceFilterGUI.h" 25 | #include "DeviceFilterGUIFactory.h" 26 | 27 | namespace Ui { 28 | class DeviceFilterGUIDialog; 29 | } 30 | 31 | class DeviceFilterGUIDialog : public QDialog 32 | { 33 | Q_OBJECT 34 | 35 | public: 36 | explicit DeviceFilterGUIDialog(DeviceFilterGUI* gui, DeviceFilterGUIFactory* factory, const QString& pattern); 37 | ~DeviceFilterGUIDialog(); 38 | 39 | QString getPattern(); 40 | 41 | private slots: 42 | void on_allDevicesCheckBox_toggled(bool checked); 43 | 44 | void on_showOnlyInstalledCheckBox_toggled(bool checked); 45 | 46 | private: 47 | Ui::DeviceFilterGUIDialog* ui; 48 | }; 49 | 50 | Q_DECLARE_METATYPE(std::shared_ptr) 51 | -------------------------------------------------------------------------------- /Editor/guis/DeviceFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "DeviceAPOInfo.h" 23 | #include "Editor/IFilterGUIFactory.h" 24 | 25 | class DeviceFilterGUIFactory : public IFilterGUIFactory 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | DeviceFilterGUIFactory(); 31 | 32 | void initialize(FilterTable* filterTable) override; 33 | 34 | QList createFilterTemplates() override; 35 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 36 | 37 | const QList>& getDevices() const; 38 | 39 | private: 40 | QList> devices; 41 | }; 42 | -------------------------------------------------------------------------------- /Editor/guis/ExpressionFilterGUIFactory.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "ExpressionFilterGUIFactory.h" 21 | 22 | IFilterGUI* ExpressionFilterGUIFactory::createFilterGUI(QString& command, QString& parameters) 23 | { 24 | // do not create a gui if parameters contain expressions 25 | if (parameters.contains('`')) 26 | command = ""; 27 | 28 | return NULL; 29 | } 30 | -------------------------------------------------------------------------------- /Editor/guis/ExpressionFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class ExpressionFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | public: 27 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 28 | }; 29 | -------------------------------------------------------------------------------- /Editor/guis/GraphicEQFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class GraphicEQFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | GraphicEQFilterGUIFactory(); 30 | 31 | void initialize(FilterTable* filterTable) override; 32 | 33 | QList createFilterTemplates() override; 34 | 35 | void startOfFile(const QString& configPath) override; 36 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 37 | 38 | private: 39 | QString configPath; 40 | FilterTable* filterTable; 41 | }; 42 | -------------------------------------------------------------------------------- /Editor/guis/GraphicEQFilterGUIItem.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/widgets/FrequencyPlotItem.h" 23 | 24 | class GraphicEQFilterGUIItem : public FrequencyPlotItem 25 | { 26 | public: 27 | GraphicEQFilterGUIItem(int index, double hz, double db); 28 | 29 | enum {Type = UserType + 2}; 30 | virtual int type() const 31 | { 32 | return Type; 33 | } 34 | 35 | QRectF boundingRect() const override; 36 | QPainterPath shape() const override; 37 | void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override; 38 | 39 | int getIndex() const; 40 | void setIndex(int value); 41 | 42 | protected: 43 | QVariant itemChange(GraphicsItemChange change, const QVariant& value) override; 44 | 45 | private: 46 | int index; 47 | }; 48 | -------------------------------------------------------------------------------- /Editor/guis/GraphicEQFilterGUIView.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/widgets/FrequencyPlotView.h" 23 | 24 | class GraphicEQFilterGUIView : public FrequencyPlotView 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | explicit GraphicEQFilterGUIView(QWidget* parent = 0); 30 | 31 | protected: 32 | void drawBackground(QPainter* painter, const QRectF& rect) override; 33 | }; 34 | -------------------------------------------------------------------------------- /Editor/guis/IncludeFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | #include "Editor/FilterTable.h" 24 | 25 | namespace Ui { 26 | class IncludeFilterGUI; 27 | } 28 | 29 | class IncludeFilterGUI : public IFilterGUI 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | explicit IncludeFilterGUI(FilterTable* filterTable, const QString& path); 35 | ~IncludeFilterGUI(); 36 | 37 | void store(QString& command, QString& parameters) override; 38 | 39 | private slots: 40 | void on_selectFileToolButton_clicked(); 41 | void on_pathLineEdit_editingFinished(); 42 | void on_openFileToolButton_clicked(); 43 | 44 | private: 45 | void updateFileInfo(); 46 | 47 | Ui::IncludeFilterGUI* ui; 48 | FilterTable* filterTable; 49 | }; 50 | -------------------------------------------------------------------------------- /Editor/guis/IncludeFilterGUIFactory.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "IncludeFilterGUI.h" 21 | #include "IncludeFilterGUIFactory.h" 22 | 23 | IncludeFilterGUIFactory::IncludeFilterGUIFactory() 24 | { 25 | } 26 | 27 | void IncludeFilterGUIFactory::initialize(FilterTable* filterTable) 28 | { 29 | this->filterTable = filterTable; 30 | } 31 | 32 | QList IncludeFilterGUIFactory::createFilterTemplates() 33 | { 34 | QList list; 35 | list.append(FilterTemplate(tr("Include (Include configuration file)"), "Include:", QStringList(tr("Control")))); 36 | return list; 37 | } 38 | 39 | IFilterGUI* IncludeFilterGUIFactory::createFilterGUI(QString& command, QString& parameters) 40 | { 41 | IncludeFilterGUI* result = NULL; 42 | 43 | if (command == "Include") 44 | { 45 | result = new IncludeFilterGUI(filterTable, parameters.trimmed()); 46 | } 47 | 48 | return result; 49 | } 50 | -------------------------------------------------------------------------------- /Editor/guis/IncludeFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class IncludeFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit IncludeFilterGUIFactory(); 29 | 30 | void initialize(FilterTable* filterTable) override; 31 | 32 | QList createFilterTemplates() override; 33 | 34 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 35 | 36 | private: 37 | FilterTable* filterTable; 38 | }; 39 | -------------------------------------------------------------------------------- /Editor/guis/LoudnessCorrectionFilterGUIDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | namespace Ui { 26 | class LoudnessCorrectionFilterGUIDialog; 27 | } 28 | 29 | class LoudnessCorrectionFilterGUIDialog : public QDialog 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | explicit LoudnessCorrectionFilterGUIDialog(QWidget* parent = 0); 35 | ~LoudnessCorrectionFilterGUIDialog(); 36 | 37 | int getMeasuredLevel(); 38 | 39 | private slots: 40 | void on_playButton_clicked(); 41 | void on_stopButton_clicked(); 42 | 43 | void on_leftRadioButton_toggled(bool checked); 44 | void on_rightRadioButton_toggled(bool checked); 45 | void on_bothRadioButton_toggled(bool checked); 46 | 47 | private: 48 | Ui::LoudnessCorrectionFilterGUIDialog* ui; 49 | QBuffer buffer; 50 | }; 51 | -------------------------------------------------------------------------------- /Editor/guis/LoudnessCorrectionFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include "Editor/IFilterGUIFactory.h" 24 | #include "Editor/FilterTable.h" 25 | #include "filters/loudnessCorrection/VolumeController.h" 26 | 27 | class LoudnessCorrectionFilterGUIFactory : public IFilterGUIFactory 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | explicit LoudnessCorrectionFilterGUIFactory(); 33 | ~LoudnessCorrectionFilterGUIFactory(); 34 | 35 | void initialize(FilterTable* filterTable) override; 36 | QList createFilterTemplates() override; 37 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 38 | 39 | private slots: 40 | void checkVolume(); 41 | 42 | private: 43 | FilterTable* filterTable; 44 | QTimer* timer = NULL; 45 | VolumeController* volumeController = NULL; 46 | float lastVolume = -1; 47 | }; 48 | -------------------------------------------------------------------------------- /Editor/guis/PreampFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | #include 24 | 25 | namespace Ui { 26 | class PreampFilterGUI; 27 | } 28 | 29 | class PreampFilterGUI : public IFilterGUI 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | PreampFilterGUI(double dbGain); 35 | ~PreampFilterGUI(); 36 | void store(QString& command, QString& parameters) override; 37 | 38 | private slots: 39 | void on_doubleSpinBox_valueChanged(double value); 40 | 41 | void on_dial_valueChanged(int value); 42 | 43 | private: 44 | Ui::PreampFilterGUI* ui; 45 | }; 46 | -------------------------------------------------------------------------------- /Editor/guis/PreampFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class PreampFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | QList createFilterTemplates() override; 30 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /Editor/guis/StageFilterGUI.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUI.h" 23 | 24 | namespace Ui { 25 | class StageFilterGUI; 26 | } 27 | 28 | class StageFilterGUI : public IFilterGUI 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | explicit StageFilterGUI(const QString& parameters); 34 | ~StageFilterGUI(); 35 | 36 | void store(QString& command, QString& parameters) override; 37 | 38 | private slots: 39 | void on_preMixCheckBox_toggled(bool checked); 40 | 41 | void on_postMixCheckBox_toggled(bool checked); 42 | 43 | void on_captureCheckBox_toggled(bool checked); 44 | 45 | private: 46 | Ui::StageFilterGUI* ui; 47 | }; 48 | -------------------------------------------------------------------------------- /Editor/guis/StageFilterGUIFactory.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "StageFilterGUI.h" 21 | #include "StageFilterGUIFactory.h" 22 | 23 | QList StageFilterGUIFactory::createFilterTemplates() 24 | { 25 | QList list; 26 | list.append(FilterTemplate(tr("Stage (Select processing stage)"), "Stage: post-mix", QStringList(tr("Control")))); 27 | return list; 28 | } 29 | 30 | IFilterGUI* StageFilterGUIFactory::createFilterGUI(QString& command, QString& parameters) 31 | { 32 | StageFilterGUI* result = NULL; 33 | 34 | if (command == "Stage") 35 | { 36 | result = new StageFilterGUI(parameters); 37 | } 38 | 39 | return result; 40 | } 41 | -------------------------------------------------------------------------------- /Editor/guis/StageFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "Editor/IFilterGUIFactory.h" 23 | 24 | class StageFilterGUIFactory : public IFilterGUIFactory 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | QList createFilterTemplates() override; 30 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /Editor/guis/VSTPluginFilterGUIDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | #include "helpers/VSTPluginInstance.h" 25 | 26 | namespace Ui { 27 | class VSTPluginFilterGUIDialog; 28 | } 29 | 30 | class VSTPluginFilterGUIDialog : public QDialog 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | explicit VSTPluginFilterGUIDialog(QWidget* parent, VSTPluginInstance* effect, bool autoApply); 36 | ~VSTPluginFilterGUIDialog(); 37 | 38 | QPushButton* getApplyButton(); 39 | QCheckBox* getAutoApplyCheckBox(); 40 | 41 | void onSizeWindow(int w, int h); 42 | 43 | private slots: 44 | void on_autoApplyCheckBox_clicked(bool checked); 45 | 46 | private: 47 | Ui::VSTPluginFilterGUIDialog* ui; 48 | VSTPluginInstance* effect; 49 | }; 50 | -------------------------------------------------------------------------------- /Editor/guis/VSTPluginFilterGUIFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | #pragma once 20 | 21 | #include "Editor/IFilterGUIFactory.h" 22 | 23 | class VSTPluginFilterGUIFactory : public IFilterGUIFactory 24 | { 25 | Q_OBJECT 26 | 27 | public: 28 | QList createFilterTemplates() override; 29 | IFilterGUI* createFilterGUI(QString& command, QString& parameters) override; 30 | }; 31 | -------------------------------------------------------------------------------- /Editor/helpers/DisableWheelFilter.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | 22 | #include "DisableWheelFilter.h" 23 | 24 | DisableWheelFilter::DisableWheelFilter(QObject* scrollTarget, QObject* parent) 25 | : QObject(parent), scrollTarget(scrollTarget) 26 | { 27 | } 28 | 29 | bool DisableWheelFilter::eventFilter(QObject* obj, QEvent* event) 30 | { 31 | if (event->type() == QEvent::Wheel) 32 | { 33 | QWidget* widget = qobject_cast(obj); 34 | if (widget == NULL || !widget->hasFocus()) 35 | { 36 | QApplication::sendEvent(scrollTarget, event); 37 | return true; 38 | } 39 | } 40 | 41 | return false; 42 | } 43 | -------------------------------------------------------------------------------- /Editor/helpers/DisableWheelFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class DisableWheelFilter : public QObject 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit DisableWheelFilter(QObject* scrollTarget, QObject* parent = 0); 29 | 30 | bool eventFilter(QObject* obj, QEvent* event) override; 31 | 32 | private: 33 | QObject* scrollTarget; 34 | }; 35 | -------------------------------------------------------------------------------- /Editor/helpers/GUIChannelHelper.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | class GUIChannelHelper : public QObject 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | static GUIChannelHelper* getInstance(); 31 | 32 | struct ChannelConfigurationInfo 33 | { 34 | int channelMask; 35 | QString name; 36 | }; 37 | 38 | const QList& getChannelConfigurationInfos() const; 39 | 40 | private: 41 | GUIChannelHelper(); 42 | static GUIChannelHelper* instance; 43 | 44 | QList channelConfigurationInfos; 45 | }; 46 | -------------------------------------------------------------------------------- /Editor/helpers/GUIHelper.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2016 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | 22 | #pragma once 23 | 24 | class GUIHelper 25 | { 26 | public: 27 | static QSize scale(QSize size); 28 | static int scale(double pixel); 29 | static double scaleZoom(double zoom); 30 | static double invScale(int pixel); 31 | static double invScaleZoom(double zoom); 32 | static bool isDarkMode(); 33 | }; 34 | -------------------------------------------------------------------------------- /Editor/helpers/QtSndfileHandle.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1 23 | #include 24 | #include 25 | 26 | class QtSndfileHandle : public SndfileHandle 27 | { 28 | public: 29 | QtSndfileHandle(QIODevice& device, int mode = SFM_READ, 30 | int format = 0, int channels = 0, int samplerate = 0); 31 | }; 32 | -------------------------------------------------------------------------------- /Editor/icons/accessories-text-editor.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/accessories-text-editor.ico -------------------------------------------------------------------------------- /Editor/icons/applications-graphics-rotated.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/applications-graphics-rotated.ico -------------------------------------------------------------------------------- /Editor/icons/arrow_right.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/arrow_right.ico -------------------------------------------------------------------------------- /Editor/icons/dark-mode/toolbar-ext-h.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 38 | 44 | 46 | 48 | 53 | 54 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Editor/icons/document-new.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/document-new.ico -------------------------------------------------------------------------------- /Editor/icons/document-open.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/document-open.ico -------------------------------------------------------------------------------- /Editor/icons/document-save-as.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/document-save-as.ico -------------------------------------------------------------------------------- /Editor/icons/document-save.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/document-save.ico -------------------------------------------------------------------------------- /Editor/icons/edit-copy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/edit-copy.ico -------------------------------------------------------------------------------- /Editor/icons/edit-cut.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/edit-cut.ico -------------------------------------------------------------------------------- /Editor/icons/edit-delete.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/edit-delete.ico -------------------------------------------------------------------------------- /Editor/icons/edit-paste.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/edit-paste.ico -------------------------------------------------------------------------------- /Editor/icons/edit-select-all.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/edit-select-all.ico -------------------------------------------------------------------------------- /Editor/icons/format-justify-fill-rotated.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/format-justify-fill-rotated.ico -------------------------------------------------------------------------------- /Editor/icons/go-up.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/go-up.ico -------------------------------------------------------------------------------- /Editor/icons/list-add-green.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/list-add-green.ico -------------------------------------------------------------------------------- /Editor/icons/list-remove-red.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/list-remove-red.ico -------------------------------------------------------------------------------- /Editor/icons/resize_corner.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/icons/resize_corner.ico -------------------------------------------------------------------------------- /Editor/sounds/pinkNoise.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/sounds/pinkNoise.flac -------------------------------------------------------------------------------- /Editor/stable.h: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | -------------------------------------------------------------------------------- /Editor/translations/Editor_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/translations/Editor_de.qm -------------------------------------------------------------------------------- /Editor/translations/qtbase_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Editor/translations/qtbase_de.qm -------------------------------------------------------------------------------- /Editor/widgets/ChannelGraphItem.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class ChannelGraphItem : public QGraphicsItem 25 | { 26 | public: 27 | explicit ChannelGraphItem(const QString& name = 0); 28 | 29 | QRectF boundingRect() const override; 30 | 31 | QString getName() const; 32 | 33 | protected: 34 | virtual void paint(QPainter* painter, QColor color); 35 | 36 | private: 37 | QString name; 38 | mutable QRectF cachedRect; 39 | }; 40 | -------------------------------------------------------------------------------- /Editor/widgets/ChannelGraphScene.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | 22 | #include "Editor/helpers/GUIHelper.h" 23 | #include "ChannelGraphScene.h" 24 | 25 | ChannelGraphScene::ChannelGraphScene(QWidget* parent) 26 | : QGraphicsScene(parent) 27 | { 28 | } 29 | 30 | QPointF ChannelGraphScene::getNextChannelPoint(QGraphicsItem* lastItem, bool output) 31 | { 32 | int x = 0; 33 | if (lastItem != NULL) 34 | { 35 | QRectF lastRect = lastItem->sceneBoundingRect(); 36 | x = lastRect.left() + lastRect.width() + 1 + GUIHelper::scale(10); 37 | } 38 | 39 | return QPointF(x, output ? GUIHelper::scale(50) : 0); 40 | } 41 | -------------------------------------------------------------------------------- /Editor/widgets/ChannelGraphScene.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class ChannelGraphScene : public QGraphicsScene 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit ChannelGraphScene(QWidget* parent = 0); 29 | 30 | protected: 31 | QPointF getNextChannelPoint(QGraphicsItem* lastItem, bool output); 32 | }; 33 | -------------------------------------------------------------------------------- /Editor/widgets/CompactToolBar.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "Editor/helpers/GUIHelper.h" 21 | #include "CompactToolBar.h" 22 | 23 | CompactToolBar::CompactToolBar(QWidget* parent) 24 | : QToolBar(parent) 25 | { 26 | setMinimumHeight(GUIHelper::scale(33)); 27 | setOrientation(Qt::Vertical); 28 | } 29 | 30 | QSize CompactToolBar::sizeHint() const 31 | { 32 | return QSize(1, 1); 33 | } 34 | 35 | void CompactToolBar::updateMaximumHeight() 36 | { 37 | setMaximumHeight(QToolBar::sizeHint().height()); 38 | } 39 | -------------------------------------------------------------------------------- /Editor/widgets/CompactToolBar.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class CompactToolBar : public QToolBar 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit CompactToolBar(QWidget* parent = 0); 29 | 30 | QSize sizeHint() const override; 31 | void updateMaximumHeight(); 32 | }; 33 | -------------------------------------------------------------------------------- /Editor/widgets/EscapableLineEdit.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | 22 | #include "EscapableLineEdit.h" 23 | 24 | EscapableLineEdit::EscapableLineEdit(QWidget* parent) 25 | : QLineEdit(parent) 26 | { 27 | } 28 | 29 | EscapableLineEdit::EscapableLineEdit(const QString& text, QWidget* parent) 30 | : QLineEdit(text, parent) 31 | { 32 | } 33 | 34 | void EscapableLineEdit::keyPressEvent(QKeyEvent* event) 35 | { 36 | if (event->key() == Qt::Key_Escape) 37 | emit editingCanceled(); 38 | else 39 | QLineEdit::keyPressEvent(event); 40 | } 41 | -------------------------------------------------------------------------------- /Editor/widgets/EscapableLineEdit.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class EscapableLineEdit : public QLineEdit 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit EscapableLineEdit(QWidget* parent = 0); 29 | explicit EscapableLineEdit(const QString& text, QWidget* parent = 0); 30 | 31 | signals: 32 | void editingCanceled(); 33 | 34 | protected: 35 | void keyPressEvent(QKeyEvent* event) override; 36 | }; 37 | -------------------------------------------------------------------------------- /Editor/widgets/ExponentialSpinBox.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | #include "ExponentialSpinBox.h" 22 | 23 | using namespace std; 24 | 25 | ExponentialSpinBox::ExponentialSpinBox(QWidget* parent) 26 | : QSpinBox(parent) 27 | { 28 | } 29 | 30 | void ExponentialSpinBox::stepBy(int steps) 31 | { 32 | qint64 v = value(); 33 | if (steps > 0) 34 | { 35 | v <<= steps; 36 | if (v > maximum()) 37 | v = maximum(); 38 | } 39 | else 40 | { 41 | v >>= -steps; 42 | if (v < minimum()) 43 | v = minimum(); 44 | } 45 | 46 | setValue((int)v); 47 | } 48 | 49 | int ExponentialSpinBox::valueFromText(const QString& text) const 50 | { 51 | int value = QSpinBox::valueFromText(text); 52 | value = exp2(round(log2(value))); 53 | return value; 54 | } 55 | -------------------------------------------------------------------------------- /Editor/widgets/ExponentialSpinBox.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | 22 | class ExponentialSpinBox : public QSpinBox 23 | { 24 | public: 25 | ExponentialSpinBox(QWidget* parent = 0); 26 | 27 | public: 28 | void stepBy(int steps) override; 29 | 30 | protected: 31 | int valueFromText(const QString& text) const override; 32 | }; 33 | -------------------------------------------------------------------------------- /Editor/widgets/FrequencyPlotHRuler.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class FrequencyPlotHRuler : public QWidget 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit FrequencyPlotHRuler(QWidget* parent = 0); 29 | 30 | protected: 31 | void paintEvent(QPaintEvent*) override; 32 | void wheelEvent(QWheelEvent* event) override; 33 | void mouseMoveEvent(QMouseEvent* event) override; 34 | }; 35 | -------------------------------------------------------------------------------- /Editor/widgets/FrequencyPlotItem.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class FrequencyPlotItem : public QGraphicsItem 25 | { 26 | public: 27 | FrequencyPlotItem(double hz, double db); 28 | 29 | enum {Type = UserType + 1}; 30 | virtual int type() const 31 | { 32 | return Type; 33 | } 34 | 35 | void updatePos(); 36 | 37 | double getHz() const; 38 | void setHz(double value); 39 | 40 | double getDb() const; 41 | void setDb(double value); 42 | 43 | private: 44 | double hz; 45 | double db; 46 | }; 47 | -------------------------------------------------------------------------------- /Editor/widgets/FrequencyPlotVRuler.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class FrequencyPlotVRuler : public QWidget 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit FrequencyPlotVRuler(QWidget* parent = 0); 29 | 30 | protected: 31 | void paintEvent(QPaintEvent*) override; 32 | void wheelEvent(QWheelEvent* event) override; 33 | void mouseMoveEvent(QMouseEvent* event) override; 34 | }; 35 | -------------------------------------------------------------------------------- /Editor/widgets/MiddleClickTabBar.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include 21 | 22 | #include "MiddleClickTabBar.h" 23 | 24 | MiddleClickTabBar::MiddleClickTabBar(QWidget* parent) 25 | : QTabBar(parent) 26 | { 27 | } 28 | 29 | void MiddleClickTabBar::mouseReleaseEvent(QMouseEvent* event) 30 | { 31 | if (event->button() == Qt::MiddleButton) 32 | { 33 | int tabIndex = tabAt(event->pos()); 34 | if (tabIndex != -1) 35 | { 36 | emit tabCloseRequested(tabIndex); 37 | return; 38 | } 39 | } 40 | 41 | QTabBar::mouseReleaseEvent(event); 42 | } 43 | -------------------------------------------------------------------------------- /Editor/widgets/MiddleClickTabBar.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class MiddleClickTabBar : public QTabBar 25 | { 26 | public: 27 | MiddleClickTabBar(QWidget* parent = NULL); 28 | 29 | protected: 30 | void mouseReleaseEvent(QMouseEvent* event) override; 31 | }; 32 | -------------------------------------------------------------------------------- /Editor/widgets/MiddleClickTabWidget.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "MiddleClickTabBar.h" 21 | #include "MiddleClickTabWidget.h" 22 | 23 | MiddleClickTabWidget::MiddleClickTabWidget(QWidget* parent) 24 | : QTabWidget(parent) 25 | { 26 | setTabBar(new MiddleClickTabBar(this)); 27 | } 28 | -------------------------------------------------------------------------------- /Editor/widgets/MiddleClickTabWidget.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class MiddleClickTabWidget : public QTabWidget 25 | { 26 | public: 27 | MiddleClickTabWidget(QWidget* parent = NULL); 28 | }; 29 | -------------------------------------------------------------------------------- /Editor/widgets/ResizeCorner.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "Editor/FilterTable.h" 26 | 27 | class ResizeCorner : public QLabel 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | explicit ResizeCorner(FilterTable* filterTable, QSize minimumSize, QSize maximumSize, 33 | std::function getFunc, std::function setFunc, QWidget* parent = 0); 34 | 35 | protected: 36 | void mousePressEvent(QMouseEvent* event) override; 37 | void mouseMoveEvent(QMouseEvent* event) override; 38 | void mouseReleaseEvent(QMouseEvent*) override; 39 | 40 | private: 41 | int offsetX; 42 | int offsetY; 43 | QSize minimumSize; 44 | QSize maximumSize; 45 | FilterTable* filterTable; 46 | std::function getFunc; 47 | std::function setFunc; 48 | }; 49 | -------------------------------------------------------------------------------- /Editor/widgets/ResizingLineEdit.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "EscapableLineEdit.h" 23 | 24 | class ResizingLineEdit : public EscapableLineEdit 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit ResizingLineEdit(QWidget* parent = 0); 29 | explicit ResizingLineEdit(const QString& text, bool forceWidth, QWidget* parent = 0); 30 | 31 | QSize sizeHint() const override; 32 | 33 | private slots: 34 | void readjustSize(); 35 | 36 | private: 37 | bool forceWidth = false; 38 | }; 39 | -------------------------------------------------------------------------------- /EqualizerAPO.licenseheader: -------------------------------------------------------------------------------- 1 | extensions: .cpp .h 2 | /* 3 | This file is part of Equalizer APO, a system-wide equalizer. 4 | Copyright (C) %CurrentYear% Jonas Thedering 5 | 6 | This program 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 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program 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 along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | -------------------------------------------------------------------------------- /EqualizerAPO/ClassFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2012 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class ClassFactory : public IClassFactory 25 | { 26 | public: 27 | ClassFactory(); 28 | 29 | // IUnknown 30 | virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv); 31 | virtual ULONG __stdcall AddRef(); 32 | virtual ULONG __stdcall Release(); 33 | 34 | // IClassFactory 35 | virtual HRESULT __stdcall CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); 36 | virtual HRESULT __stdcall LockServer(BOOL bLock); 37 | 38 | static long lockCount; 39 | private: 40 | long refCount; 41 | }; 42 | -------------------------------------------------------------------------------- /EqualizerAPO/EqualizerAPO-ARM64.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/EqualizerAPO/EqualizerAPO-ARM64.rc -------------------------------------------------------------------------------- /EqualizerAPO/EqualizerAPO.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | DllCanUnloadNow PRIVATE 3 | DllGetClassObject PRIVATE 4 | DllRegisterServer PRIVATE 5 | DllUnregisterServer PRIVATE 6 | -------------------------------------------------------------------------------- /EqualizerAPO/EqualizerAPO.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/EqualizerAPO/EqualizerAPO.rc -------------------------------------------------------------------------------- /EqualizerAPO/EqualizerAPO.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | helpers 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | helpers 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {95612e70-aead-4faa-bcfe-525a3c68d8ec} 34 | 35 | 36 | -------------------------------------------------------------------------------- /EqualizerAPO/EqualizerAPO64.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/EqualizerAPO/EqualizerAPO64.rc -------------------------------------------------------------------------------- /EqualizerAPO/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/EqualizerAPO/resource.h -------------------------------------------------------------------------------- /IFilter.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "stdafx.h" 21 | #include "IFilter.h" 22 | 23 | using namespace std; 24 | -------------------------------------------------------------------------------- /Release checklist.txt: -------------------------------------------------------------------------------- 1 | 1. Change version number in version.h 2 | 2. Create setups using build.bat 3 | 3. Commit trunk with message "Version x" 4 | 4. Export trunk to an external folder, create EqualizerAPO-src-x.zip from the folder contents 5 | 5. Upload EqualizerAPO32-x.exe, EqualizerAPO64-x.exe and EqualizerAPO-src-x.zip to new folder x 6 | 6. Update readme.txt using subversion log 7 | 7. Set EqualizerAPO64-x.exe as new default download 8 | 8. Update URL for tool "Downloads" to https://sourceforge.net/projects/equalizerapo/files/x/ 9 | 9. Create tag of trunk in tags/x with message "Tag release x" 10 | -------------------------------------------------------------------------------- /Setup/Configuration reference (online).url: -------------------------------------------------------------------------------- 1 | [{000214A0-0000-0000-C000-000000000046}] 2 | Prop3=19,2 3 | [InternetShortcut] 4 | URL=http://sourceforge.net/p/equalizerapo/wiki/Configuration%20reference 5 | IDList= 6 | HotKey=0 7 | -------------------------------------------------------------------------------- /Setup/Configuration tutorial (online).url: -------------------------------------------------------------------------------- 1 | [{000214A0-0000-0000-C000-000000000046}] 2 | Prop3=19,2 3 | [InternetShortcut] 4 | URL=http://sourceforge.net/p/equalizerapo/wiki/Documentation/#configuration-tutorial 5 | IDList= 6 | -------------------------------------------------------------------------------- /Setup/Setup.nsi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/Setup.nsi -------------------------------------------------------------------------------- /Setup/Setup32.nsi: -------------------------------------------------------------------------------- 1 | 2 | !define BINPATH "..\Release" 3 | !define BINPATH_EDITOR "..\build-Editor-Desktop_Qt_6_7_2_MSVC2022_32bit\release" 4 | !define LIBPATH "lib32" 5 | !define VCREDIST_URL "https://aka.ms/vs/17/release/vc_redist.x86.exe" 6 | !define TARGET_ARCH "x86" 7 | 8 | !include "Setup.nsi" 9 | 10 | OutFile "EqualizerAPO-x86-${VERSION}.exe" 11 | -------------------------------------------------------------------------------- /Setup/Setup64.nsi: -------------------------------------------------------------------------------- 1 | 2 | !define BINPATH "..\x64\Release" 3 | !define BINPATH_EDITOR "..\build-Editor-Desktop_Qt_6_7_2_MSVC2022_64bit\release" 4 | !define LIBPATH "lib64" 5 | !define VCREDIST_URL "https://aka.ms/vs/17/release/vc_redist.x64.exe" 6 | !define TARGET_ARCH "x64" 7 | 8 | !include "Setup.nsi" 9 | 10 | OutFile "EqualizerAPO-x64-${VERSION}.exe" 11 | -------------------------------------------------------------------------------- /Setup/SetupARM64.nsi: -------------------------------------------------------------------------------- 1 | 2 | !define BINPATH "..\ARM64\Release" 3 | !define BINPATH_EDITOR "..\build-Editor-Desktop_Qt_6_7_2_MSVC2019_ARM64\release" 4 | !define LIBPATH "libARM64" 5 | !define VCREDIST_URL "https://aka.ms/vs/17/release/vc_redist.arm64.exe" 6 | !define TARGET_ARCH "ARM64" 7 | 8 | !include "Setup.nsi" 9 | 10 | OutFile "EqualizerAPO-ARM64-${VERSION}.exe" 11 | -------------------------------------------------------------------------------- /Setup/config/config.txt: -------------------------------------------------------------------------------- 1 | Preamp: -6 dB 2 | Include: example.txt 3 | GraphicEQ: 25 0; 40 0; 63 0; 100 0; 160 0; 250 0; 400 0; 630 0; 1000 0; 1600 0; 2500 0; 4000 0; 6300 0; 10000 0; 16000 0 -------------------------------------------------------------------------------- /Setup/config/demo.txt: -------------------------------------------------------------------------------- 1 | Filter Settings file 2 | 3 | Room EQ V5,01 4 | Dated: 16.05.2013 21:56:38 5 | 6 | Notes:This file demonstrates all filter types the Generic equalizer supports 7 | 8 | Equaliser: Generic 9 | No measurement 10 | Filter 1: ON PK Fc 50,0 Hz Gain -10,0 dB Q 2,50 11 | Filter 2: ON Modal Fc 100H z Gain 3,0 dB Q 5,41 T60 target 100 ms 12 | Filter 3: ON LP Fc 8.000 Hz 13 | Filter 4: ON HP Fc 30,0 Hz 14 | Filter 5: ON LPQ Fc 10.000 Hz Q 0,400 15 | Filter 6: ON HPQ Fc 20,0 Hz Q 0,500 16 | Filter 7: ON LS Fc 300 Hz Gain 5,0 dB 17 | Filter 8: ON HS Fc 1.000 Hz Gain -3,0 dB 18 | Filter 9: ON LS 12dB Fc 2.000 Hz Gain -5,0 dB 19 | Filter 10: ON HS 12dB Fc 500 Hz Gain 5,0 dB 20 | Filter 11: ON LS 6dB Fc 50,0 Hz Gain 7,2 dB 21 | Filter 12: ON HS 6dB Fc 12.000 Hz Gain 10,0 dB 22 | Filter 13: ON NO Fc 800 Hz 23 | Filter 14: ON AP Fc 900 Hz Q 0,707 24 | Filter 15: ON None 25 | Filter 16: ON None 26 | Filter 17: ON None 27 | Filter 18: ON None 28 | Filter 19: ON None 29 | Filter 20: ON None 30 | 31 | -------------------------------------------------------------------------------- /Setup/config/example.txt: -------------------------------------------------------------------------------- 1 | Filter Settings file 2 | 3 | Room EQ V5,01 4 | Dated: 29.02.2012 20:04:50 5 | 6 | Notes:Simple bass boost 7 | 8 | Equaliser: Generic 9 | No measurement 10 | Filter 1: ON PK Fc 20,0 Hz Gain 4,0 dB Q 1,00 11 | Filter 2: ON PK Fc 45,0 Hz Gain 2,0 dB Q 1,00 12 | Filter 3: OFF None 13 | Filter 4: OFF None 14 | Filter 5: OFF None 15 | Filter 6: OFF None 16 | Filter 7: OFF None 17 | Filter 8: OFF None 18 | Filter 9: OFF None 19 | Filter 10: OFF None 20 | Filter 11: OFF None 21 | Filter 12: OFF None 22 | Filter 13: OFF None 23 | Filter 14: OFF None 24 | Filter 15: OFF None 25 | Filter 16: OFF None 26 | Filter 17: OFF None 27 | Filter 18: OFF None 28 | Filter 19: OFF None 29 | Filter 20: OFF None 30 | 31 | -------------------------------------------------------------------------------- /Setup/config/iir_lowpass.txt: -------------------------------------------------------------------------------- 1 | # This shows how to create a lowpass biquad filter using the IIR filter type 2 | # The result should be equivalent to the command 3 | # Filter: ON LP Fc 3000 Hz 4 | 5 | Eval: freq = 3000 6 | Eval: Q = 1/sqrt(2) 7 | Eval: omega = 2 * pi * freq / sampleRate 8 | Eval: sn = sin(omega) 9 | Eval: cs = cos(omega) 10 | Eval: alpha = sin(omega) / (2 * Q) 11 | Eval: a0 = (1 - cs) / 2 12 | Eval: a1 = 1 - cs 13 | Eval: a2 = (1 - cs) / 2 14 | Eval: b0 = 1 + alpha 15 | Eval: b1 = -2 * cs 16 | Eval: b2 = 1 - alpha 17 | 18 | Filter: ON IIR Order 2 Coefficients `a0` `a1` `a2` `b0` `b1` `b2` 19 | -------------------------------------------------------------------------------- /Setup/config/multichannel.txt: -------------------------------------------------------------------------------- 1 | #Common preamp 2 | Preamp: -6 dB 3 | 4 | Channel: L 5 | #Additional preamp for left channel 6 | Preamp: -5 dB 7 | #Filters only for left channel 8 | Include: demo.txt 9 | 10 | Channel: 2 C 11 | #Filters for second(right) and center channel 12 | Include: example.txt -------------------------------------------------------------------------------- /Setup/config/selective_delay.txt: -------------------------------------------------------------------------------- 1 | # Copy channels to virtual channels to filter them while keeping the originals 2 | Copy: L2=L R2=R 3 | # Select channels for filtering 4 | Channel: L2 R2 5 | # Limit frequency range for delay 6 | Filter: ON HP Fc 200 Hz 7 | Filter: ON LP Fc 2000 Hz 8 | # Apply delay 9 | Delay: 500 ms 10 | # Add the delayed signal back to the original channels 11 | Copy: L=0.5*L+0.5*L2 R=0.5*R+0.5*R2 -------------------------------------------------------------------------------- /Setup/lib32/Qt6Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/Qt6Core.dll -------------------------------------------------------------------------------- /Setup/lib32/Qt6Gui.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/Qt6Gui.dll -------------------------------------------------------------------------------- /Setup/lib32/Qt6Svg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/Qt6Svg.dll -------------------------------------------------------------------------------- /Setup/lib32/Qt6Widgets.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/Qt6Widgets.dll -------------------------------------------------------------------------------- /Setup/lib32/fftw3f.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/fftw3f.dll -------------------------------------------------------------------------------- /Setup/lib32/msvcp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/msvcp140.dll -------------------------------------------------------------------------------- /Setup/lib32/msvcp140_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/msvcp140_1.dll -------------------------------------------------------------------------------- /Setup/lib32/msvcp140_2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/msvcp140_2.dll -------------------------------------------------------------------------------- /Setup/lib32/qt/iconengines/qsvgicon.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/qt/iconengines/qsvgicon.dll -------------------------------------------------------------------------------- /Setup/lib32/qt/imageformats/qico.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/qt/imageformats/qico.dll -------------------------------------------------------------------------------- /Setup/lib32/qt/imageformats/qsvg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/qt/imageformats/qsvg.dll -------------------------------------------------------------------------------- /Setup/lib32/qt/platforms/qwindows.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/qt/platforms/qwindows.dll -------------------------------------------------------------------------------- /Setup/lib32/qt/styles/qmodernwindowsstyle.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/qt/styles/qmodernwindowsstyle.dll -------------------------------------------------------------------------------- /Setup/lib32/sndfile.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/sndfile.dll -------------------------------------------------------------------------------- /Setup/lib32/vcruntime140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib32/vcruntime140.dll -------------------------------------------------------------------------------- /Setup/lib64/Qt6Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/Qt6Core.dll -------------------------------------------------------------------------------- /Setup/lib64/Qt6Gui.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/Qt6Gui.dll -------------------------------------------------------------------------------- /Setup/lib64/Qt6Svg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/Qt6Svg.dll -------------------------------------------------------------------------------- /Setup/lib64/Qt6Widgets.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/Qt6Widgets.dll -------------------------------------------------------------------------------- /Setup/lib64/fftw3f.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/fftw3f.dll -------------------------------------------------------------------------------- /Setup/lib64/msvcp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/msvcp140.dll -------------------------------------------------------------------------------- /Setup/lib64/msvcp140_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/msvcp140_1.dll -------------------------------------------------------------------------------- /Setup/lib64/msvcp140_2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/msvcp140_2.dll -------------------------------------------------------------------------------- /Setup/lib64/qt/iconengines/qsvgicon.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/qt/iconengines/qsvgicon.dll -------------------------------------------------------------------------------- /Setup/lib64/qt/imageformats/qico.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/qt/imageformats/qico.dll -------------------------------------------------------------------------------- /Setup/lib64/qt/imageformats/qsvg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/qt/imageformats/qsvg.dll -------------------------------------------------------------------------------- /Setup/lib64/qt/platforms/qwindows.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/qt/platforms/qwindows.dll -------------------------------------------------------------------------------- /Setup/lib64/qt/styles/qmodernwindowsstyle.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/qt/styles/qmodernwindowsstyle.dll -------------------------------------------------------------------------------- /Setup/lib64/sndfile.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/sndfile.dll -------------------------------------------------------------------------------- /Setup/lib64/vcruntime140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/vcruntime140.dll -------------------------------------------------------------------------------- /Setup/lib64/vcruntime140_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/lib64/vcruntime140_1.dll -------------------------------------------------------------------------------- /Setup/libARM64/Qt6Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/Qt6Core.dll -------------------------------------------------------------------------------- /Setup/libARM64/Qt6Gui.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/Qt6Gui.dll -------------------------------------------------------------------------------- /Setup/libARM64/Qt6Svg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/Qt6Svg.dll -------------------------------------------------------------------------------- /Setup/libARM64/Qt6Widgets.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/Qt6Widgets.dll -------------------------------------------------------------------------------- /Setup/libARM64/fftw3f.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/fftw3f.dll -------------------------------------------------------------------------------- /Setup/libARM64/msvcp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/msvcp140.dll -------------------------------------------------------------------------------- /Setup/libARM64/msvcp140_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/msvcp140_1.dll -------------------------------------------------------------------------------- /Setup/libARM64/msvcp140_2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/msvcp140_2.dll -------------------------------------------------------------------------------- /Setup/libARM64/qt/iconengines/qsvgicon.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/qt/iconengines/qsvgicon.dll -------------------------------------------------------------------------------- /Setup/libARM64/qt/imageformats/qico.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/qt/imageformats/qico.dll -------------------------------------------------------------------------------- /Setup/libARM64/qt/imageformats/qsvg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/qt/imageformats/qsvg.dll -------------------------------------------------------------------------------- /Setup/libARM64/qt/platforms/qwindows.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/qt/platforms/qwindows.dll -------------------------------------------------------------------------------- /Setup/libARM64/qt/styles/qmodernwindowsstyle.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/qt/styles/qmodernwindowsstyle.dll -------------------------------------------------------------------------------- /Setup/libARM64/sndfile.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/sndfile.dll -------------------------------------------------------------------------------- /Setup/libARM64/vcruntime140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/vcruntime140.dll -------------------------------------------------------------------------------- /Setup/libARM64/vcruntime140_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Setup/libARM64/vcruntime140_1.dll -------------------------------------------------------------------------------- /VoicemeeterClient/VoicemeeterClient.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/VoicemeeterClient/VoicemeeterClient.rc -------------------------------------------------------------------------------- /VoicemeeterClient/VoicemeeterClient.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | helpers 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | helpers 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | {eb32c27d-e4c2-4cad-a72d-b798d4514714} 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /VoicemeeterClient/VoicemeeterRemote.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/VoicemeeterClient/VoicemeeterRemote.h -------------------------------------------------------------------------------- /VoicemeeterClient/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by VoicemeeterClient.rc 4 | 5 | // Next default values for new objects 6 | // 7 | #ifdef APSTUDIO_INVOKED 8 | #ifndef APSTUDIO_READONLY_SYMBOLS 9 | #define _APS_NEXT_RESOURCE_VALUE 101 10 | #define _APS_NEXT_COMMAND_VALUE 40001 11 | #define _APS_NEXT_CONTROL_VALUE 1001 12 | #define _APS_NEXT_SYMED_VALUE 101 13 | #endif 14 | #endif 15 | -------------------------------------------------------------------------------- /Wiki/EnhancementsTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/EnhancementsTab.png -------------------------------------------------------------------------------- /Wiki/NoEnhancementsTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/NoEnhancementsTab.png -------------------------------------------------------------------------------- /Wiki/RoomEQWizard-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/RoomEQWizard-thumb.png -------------------------------------------------------------------------------- /Wiki/RoomEQWizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/RoomEQWizard.png -------------------------------------------------------------------------------- /Wiki/RoomEQWizard.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/RoomEQWizard.xcf -------------------------------------------------------------------------------- /Wiki/Stages.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/Stages.odg -------------------------------------------------------------------------------- /Wiki/Stages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/Stages.png -------------------------------------------------------------------------------- /Wiki/Transfer function.odf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/Transfer function.odf -------------------------------------------------------------------------------- /Wiki/Transfer function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/Transfer function.png -------------------------------------------------------------------------------- /Wiki/UseOriginalAPO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/UseOriginalAPO.png -------------------------------------------------------------------------------- /Wiki/UseOriginalAPO.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mirror/equalizerapo/53d885f7f1a097b457e17a5206b7d60f647877a8/Wiki/UseOriginalAPO.xcf -------------------------------------------------------------------------------- /filters/BiQuadFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "IFilterFactory.h" 26 | #include "IFilter.h" 27 | #include "BiQuad.h" 28 | 29 | class BiQuadFilterFactory : public IFilterFactory 30 | { 31 | public: 32 | BiQuadFilterFactory(); 33 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 34 | 35 | private: 36 | double getFreq(const std::wstring& freqString); 37 | 38 | std::unordered_map filterNameToTypeMap; 39 | std::unordered_map filterTypeToDescriptionMap; 40 | }; 41 | -------------------------------------------------------------------------------- /filters/ChannelFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "IFilter.h" 26 | 27 | #pragma AVRT_VTABLES_BEGIN 28 | class ChannelFilter : public IFilter 29 | { 30 | public: 31 | ChannelFilter(const std::vector& words); 32 | virtual ~ChannelFilter(); 33 | bool getAllChannels() override {return true;} 34 | bool getSelectChannels() override {return true;} 35 | std::vector initialize(float sampleRate, unsigned maxFrameCount, std::vector channelNames) override; 36 | void process(float** output, float** input, unsigned frameCount) override; 37 | 38 | private: 39 | std::vector words; 40 | }; 41 | #pragma AVRT_VTABLES_END 42 | -------------------------------------------------------------------------------- /filters/ChannelFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class ChannelFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /filters/ConvolutionFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "IFilter.h" 23 | #include "libHybridConv-0.1.1/libHybridConv_eapo.h" 24 | 25 | #pragma AVRT_VTABLES_BEGIN 26 | class ConvolutionFilter : public IFilter 27 | { 28 | public: 29 | ConvolutionFilter(std::wstring filename); 30 | virtual ~ConvolutionFilter(); 31 | bool getInPlace() override {return true;} 32 | std::vector initialize(float sampleRate, unsigned maxFrameCount, std::vector channelNames) override; 33 | void process(float** output, float** input, unsigned frameCount) override; 34 | 35 | private: 36 | void cleanup(); 37 | 38 | std::wstring filename; 39 | HConvSingle* filters; 40 | unsigned channelCount; 41 | }; 42 | #pragma AVRT_VTABLES_END 43 | -------------------------------------------------------------------------------- /filters/ConvolutionFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class ConvolutionFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /filters/CopyFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class CopyFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /filters/DelayFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "IFilter.h" 23 | 24 | #pragma AVRT_VTABLES_BEGIN 25 | class DelayFilter : public IFilter 26 | { 27 | public: 28 | DelayFilter(double delay, bool isMs); 29 | virtual ~DelayFilter(); 30 | bool getInPlace() override {return false;} 31 | std::vector initialize(float sampleRate, unsigned maxFrameCount, std::vector channelNames) override; 32 | void process(float** output, float** input, unsigned frameCount) override; 33 | 34 | double getDelay() const; 35 | bool getIsMs() const; 36 | 37 | private: 38 | void cleanup(); 39 | 40 | double delay; 41 | bool isMs; 42 | unsigned bufferLength; 43 | unsigned channelCount; 44 | float** buffers; 45 | unsigned bufferOffset; 46 | }; 47 | #pragma AVRT_VTABLES_END 48 | -------------------------------------------------------------------------------- /filters/DelayFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class DelayFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /filters/DeviceFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class DeviceFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | #ifndef NO_FILTERENGINE 31 | void initialize(FilterEngine* engine) override; 32 | #endif 33 | std::vector startOfConfiguration() override; 34 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 35 | std::vector endOfFile(const std::wstring& configPath) override; 36 | 37 | static bool matchDevice(const std::wstring& deviceString, const std::wstring& pattern); 38 | 39 | private: 40 | bool deviceMatches; 41 | std::wstring deviceString; 42 | }; 43 | -------------------------------------------------------------------------------- /filters/ExpressionFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "IFilterFactory.h" 26 | #include "IFilter.h" 27 | 28 | class ExpressionFilterFactory : public IFilterFactory 29 | { 30 | public: 31 | void initialize(FilterEngine* engine) override; 32 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 33 | 34 | private: 35 | mup::ParserX* parser; 36 | }; 37 | -------------------------------------------------------------------------------- /filters/GraphicEQFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class GraphicEQFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /filters/IIRFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "IFilter.h" 23 | 24 | #pragma AVRT_VTABLES_BEGIN 25 | class IIRFilter : public IFilter 26 | { 27 | public: 28 | IIRFilter(const std::vector& coefficients); 29 | virtual ~IIRFilter(); 30 | bool getInPlace() override {return true;} 31 | std::vector initialize(float sampleRate, unsigned maxFrameCount, std::vector channelNames) override; 32 | void process(float** output, float** input, unsigned frameCount) override; 33 | 34 | private: 35 | unsigned order; 36 | double b0; 37 | double* a; 38 | double* b; 39 | unsigned channelCount; 40 | double* x; 41 | double* y; 42 | }; 43 | #pragma AVRT_VTABLES_END 44 | -------------------------------------------------------------------------------- /filters/IIRFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class IIRFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | IIRFilterFactory(); 31 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 32 | }; 33 | -------------------------------------------------------------------------------- /filters/IfFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "IFilterFactory.h" 26 | #include "IFilter.h" 27 | 28 | class IfFilterFactory : public IFilterFactory 29 | { 30 | public: 31 | void initialize(FilterEngine* engine) override; 32 | std::vector startOfConfiguration() override; 33 | std::vector startOfFile(const std::wstring& configPath) override; 34 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 35 | std::vector endOfFile(const std::wstring& configPath) override; 36 | 37 | private: 38 | mup::ParserX* parser; 39 | 40 | unsigned trueCount; 41 | unsigned falseCount; 42 | bool executeElse; 43 | std::stack trueCountStack; 44 | 45 | bool toBoolean(const mup::Value& value); 46 | }; 47 | -------------------------------------------------------------------------------- /filters/IncludeFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class IncludeFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | void initialize(FilterEngine* engine) override; 31 | 32 | std::vector startOfConfiguration() override; 33 | std::vector startOfFile(const std::wstring& configPath) override; 34 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 35 | std::vector endOfFile(const std::wstring& configPath) override; 36 | 37 | private: 38 | FilterEngine* engine; 39 | int recursionDepth = -1; 40 | }; 41 | -------------------------------------------------------------------------------- /filters/PreampFilter.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "stdafx.h" 21 | #define _USE_MATH_DEFINES 22 | #include 23 | 24 | #include "PreampFilter.h" 25 | 26 | using namespace std; 27 | 28 | PreampFilter::PreampFilter(double dbGain) 29 | : dbGain(dbGain) 30 | { 31 | gain = (float)pow(10.0, dbGain / 20.0); 32 | } 33 | 34 | vector PreampFilter::initialize(float sampleRate, unsigned maxFrameCount, vector channelNames) 35 | { 36 | this->channelCount = channelNames.size(); 37 | 38 | return channelNames; 39 | } 40 | 41 | #pragma AVRT_CODE_BEGIN 42 | void PreampFilter::process(float** output, float** input, unsigned frameCount) 43 | { 44 | for (size_t i = 0; i < channelCount; i++) 45 | { 46 | float* sampleChannel = input[i]; 47 | 48 | for (unsigned j = 0; j < frameCount; j++) 49 | sampleChannel[j] *= gain; 50 | } 51 | } 52 | #pragma AVRT_CODE_END 53 | -------------------------------------------------------------------------------- /filters/PreampFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "IFilter.h" 23 | 24 | #pragma AVRT_VTABLES_BEGIN 25 | class PreampFilter : public IFilter 26 | { 27 | public: 28 | PreampFilter(double dbGain); 29 | std::vector initialize(float sampleRate, unsigned maxFrameCount, std::vector channelNames) override; 30 | void process(float** output, float** input, unsigned frameCount) override; 31 | 32 | double getDbGain() const {return dbGain;} 33 | 34 | private: 35 | float gain; 36 | double dbGain; 37 | size_t channelCount; 38 | }; 39 | #pragma AVRT_VTABLES_END 40 | -------------------------------------------------------------------------------- /filters/PreampFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class PreampFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /filters/StageFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "IFilterFactory.h" 26 | #include "IFilter.h" 27 | 28 | class StageFilterFactory : public IFilterFactory 29 | { 30 | public: 31 | void initialize(FilterEngine* engine) override; 32 | std::vector startOfConfiguration() override; 33 | std::vector startOfFile(const std::wstring& configPath) override; 34 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 35 | std::vector endOfFile(const std::wstring& configPath) override; 36 | 37 | private: 38 | bool preMix; 39 | bool capture; 40 | bool postMixInstalled; 41 | 42 | bool stageMatches; 43 | std::stack stageMatchesStack; 44 | }; 45 | -------------------------------------------------------------------------------- /filters/VSTPluginFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class VSTPluginFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters) override; 31 | }; 32 | -------------------------------------------------------------------------------- /filters/loudnessCorrection/LoudnessCorrectionFilterFactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Alexander Walch 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "IFilterFactory.h" 25 | #include "IFilter.h" 26 | 27 | class LoudnessCorrectionFilterFactory : public IFilterFactory 28 | { 29 | public: 30 | LoudnessCorrectionFilterFactory(); 31 | virtual std::vector createFilter(const std::wstring& configPath, std::wstring& command, std::wstring& parameters); 32 | }; 33 | -------------------------------------------------------------------------------- /filters/loudnessCorrection/VolumeController.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Alexander Walch 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #define WIN32_LEAN_AND_MEAN 23 | #include 24 | #include 25 | 26 | class VolumeController 27 | { 28 | public: 29 | VolumeController(); 30 | HRESULT getVolume(float& currentVolume); 31 | HRESULT setVolume(float volume); 32 | private: 33 | IAudioEndpointVolume* _endpointVolume; 34 | float _minVol; 35 | float _maxVol; 36 | }; 37 | -------------------------------------------------------------------------------- /helpers/AbstractLibrary.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class AbstractLibrary 25 | { 26 | public: 27 | static const int FILE_NOT_FOUND = -1; 28 | static const int LOADING_FAILED = -2; 29 | static const int FUNCTIONS_MISSING = -3; 30 | static const int WRONG_ARCHITECTURE = -4; 31 | 32 | virtual ~AbstractLibrary(); 33 | 34 | int initialize(); 35 | virtual std::wstring getLibPath() = 0; 36 | 37 | protected: 38 | virtual bool loadFunctions() = 0; 39 | virtual int customInitialize(); 40 | 41 | HMODULE module = NULL; 42 | 43 | private: 44 | unsigned short getFileArchitecture(const std::wstring& filePath); 45 | }; 46 | -------------------------------------------------------------------------------- /helpers/ChannelHelper.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | class ChannelHelper 27 | { 28 | public: 29 | static int getDefaultChannelMask(int channelCount); 30 | static std::vector getChannelNames(int channelCount, int channelMask); 31 | static int getChannelIndex(std::wstring word, const std::vector& channelNames, bool allowNew = false); 32 | 33 | private: 34 | ChannelHelper(); 35 | static ChannelHelper instance; 36 | 37 | static std::unordered_map channelNameToPosMap; 38 | static std::unordered_map channelPosToNameMap; 39 | }; 40 | -------------------------------------------------------------------------------- /helpers/GainIterator.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2015 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | struct FilterNode 25 | { 26 | double freq; 27 | double dbGain; 28 | 29 | FilterNode(double freq, double dbGain) 30 | { 31 | this->freq = freq; 32 | this->dbGain = dbGain; 33 | } 34 | 35 | bool operator<(FilterNode other) 36 | { 37 | return freq < other.freq; 38 | } 39 | }; 40 | 41 | class GainIterator 42 | { 43 | public: 44 | GainIterator(const std::vector& nodes); 45 | double gainAt(double freq); 46 | 47 | private: 48 | std::vector nodes; 49 | FilterNode* nodeLeft; 50 | FilterNode* nodeRight; 51 | double logLeft; 52 | double logRightMinusLeft; 53 | }; 54 | -------------------------------------------------------------------------------- /helpers/MemoryHelper.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2013 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #ifdef USE_WINDDK 23 | #include 24 | #else 25 | #define AVRT_VTABLES_BEGIN 26 | #define AVRT_VTABLES_END 27 | #define AVRT_CODE_BEGIN 28 | #define AVRT_CODE_END 29 | #endif 30 | 31 | class MemoryHelper 32 | { 33 | public: 34 | static void* alloc(size_t size); 35 | static void free(void* ptr); 36 | }; 37 | -------------------------------------------------------------------------------- /helpers/PrecisionTimer.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2012 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #define WIN32_LEAN_AND_MEAN 23 | #include 24 | 25 | class PrecisionTimer 26 | { 27 | LARGE_INTEGER freq; 28 | LARGE_INTEGER startCount{}; 29 | 30 | public: 31 | PrecisionTimer() 32 | { 33 | QueryPerformanceFrequency(&freq); 34 | } 35 | 36 | void start() 37 | { 38 | QueryPerformanceCounter(&startCount); 39 | } 40 | 41 | double stop() 42 | { 43 | LARGE_INTEGER stopCount; 44 | QueryPerformanceCounter(&stopCount); 45 | 46 | return double(stopCount.QuadPart - startCount.QuadPart) / freq.QuadPart; 47 | } 48 | }; 49 | -------------------------------------------------------------------------------- /libHybridConv-0.1.1/Makefile: -------------------------------------------------------------------------------- 1 | CC=gcc 2 | 3 | INCDIR= 4 | LIBDIR= 5 | 6 | #CFLAGS=-g -O0 -msse -msse2 -fomit-frame-pointer -funroll-loops -ffast-math -Wall -Wextra 7 | CFLAGS=-O2 -msse -msse2 -fomit-frame-pointer -funroll-loops -ffast-math -Wall -Wextra 8 | LFLAGS=-lm -lfftw3f 9 | 10 | 11 | OBJ=libHybridConv.o hcTest.o 12 | 13 | 14 | all : hcTest 15 | 16 | hcTest : $(OBJ) 17 | $(CC) -o hcTest $(OBJ) $(LIBDIR) $(LFLAGS) 18 | 19 | %.o:%.c 20 | $(CC) $(CFLAGS) -c $< $(INCDIR) 21 | 22 | install: 23 | echo Nothing to be done 24 | 25 | clean: 26 | rm $(OBJ) hcTest 27 | 28 | -------------------------------------------------------------------------------- /parser/LogicalOperators.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2019 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "stdafx.h" 21 | #include "LogicalOperators.h" 22 | 23 | using namespace std; 24 | using namespace mup; 25 | 26 | NotOperator::NotOperator() 27 | : IOprtInfix(L"not", prINFIX) 28 | {} 29 | 30 | void NotOperator::Eval(ptr_val_type& ret, const ptr_val_type* arg, int argc) 31 | { 32 | assert(argc == 1); 33 | *ret = !arg[0]->GetBool(); 34 | } 35 | 36 | const char_type* NotOperator::GetDesc() const 37 | { 38 | return L"logical not"; 39 | } 40 | 41 | IToken* NotOperator::Clone() const 42 | { 43 | return new NotOperator(*this); 44 | } 45 | -------------------------------------------------------------------------------- /parser/LogicalOperators.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2019 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | class NotOperator : public mup::IOprtInfix 26 | { 27 | public: 28 | NotOperator(); 29 | void Eval(mup::ptr_val_type& ret, const mup::ptr_val_type* arg, int argc) override; 30 | const mup::char_type* GetDesc() const; 31 | mup::IToken* Clone() const override; 32 | }; 33 | -------------------------------------------------------------------------------- /parser/RegexFunctions.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class RegexSearchFunction : public mup::ICallback 25 | { 26 | public: 27 | RegexSearchFunction(); 28 | void Eval(mup::ptr_val_type& ret, const mup::ptr_val_type* arg, int argc) override; 29 | const mup::char_type* GetDesc() const; 30 | mup::IToken* Clone() const override; 31 | }; 32 | 33 | class RegexReplaceFunction : public mup::ICallback 34 | { 35 | public: 36 | RegexReplaceFunction(); 37 | void Eval(mup::ptr_val_type& ret, const mup::ptr_val_type* arg, int argc) override; 38 | const mup::char_type* GetDesc() const; 39 | mup::IToken* Clone() const override; 40 | }; 41 | -------------------------------------------------------------------------------- /parser/RegistryFunctions.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class FilterEngine; 25 | 26 | class ReadRegStringFunction : public mup::ICallback 27 | { 28 | public: 29 | ReadRegStringFunction(FilterEngine* engine); 30 | void Eval(mup::ptr_val_type& ret, const mup::ptr_val_type* arg, int argc) override; 31 | const mup::char_type* GetDesc() const override; 32 | mup::IToken* Clone() const override; 33 | 34 | private: 35 | FilterEngine* engine; 36 | }; 37 | 38 | class ReadRegDWORDFunction : public mup::ICallback 39 | { 40 | public: 41 | ReadRegDWORDFunction(FilterEngine* engine); 42 | void Eval(mup::ptr_val_type& ret, const mup::ptr_val_type* arg, int argc) override; 43 | const mup::char_type* GetDesc() const override; 44 | mup::IToken* Clone() const override; 45 | 46 | private: 47 | FilterEngine* engine; 48 | }; 49 | -------------------------------------------------------------------------------- /parser/StringOperators.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of EqualizerAPO, a system-wide equalizer. 3 | Copyright (C) 2014 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | class AddOperator : public mup::OprtAdd 26 | { 27 | public: 28 | void Eval(mup::ptr_val_type& ret, const mup::ptr_val_type* arg, int argc) override; 29 | const mup::char_type* GetDesc() const; 30 | mup::IToken* Clone() const override; 31 | }; 32 | -------------------------------------------------------------------------------- /reformat.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd %~dp0 3 | for /r %%f in (*.cpp *.h) do ( 4 | (Echo "%%f" | FIND /I "\build-" 1>NUL) || (Echo "%%f" | FIND /I "\resource.h" 1>NUL) || (Echo "%%f" | FIND /I "\libHybridConv-0.1.1\" 1>NUL) || (Echo "%%f" | FIND /I "\helpers\aeffectx.h" 1>NUL) || (Echo "%%f" | FIND /I "\helpers\UncaughtExceptions.h" 1>NUL) || (Echo "%%f" | FIND /I "\VoicemeeterClient\VoicemeeterRemote.h" 1>NUL) || ( 5 | uncrustify -c uncrustify.cfg -l CPP --replace --no-backup "%%f" 6 | ) 7 | ) 8 | 9 | pause 10 | -------------------------------------------------------------------------------- /stdafx.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #include "stdafx.h" -------------------------------------------------------------------------------- /stdafx.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Equalizer APO, a system-wide equalizer. 3 | Copyright (C) 2017 Jonas Thedering 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License along 16 | with this program; if not, write to the Free Software Foundation, Inc., 17 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | */ 19 | 20 | #define _USE_MATH_DEFINES 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #define WIN32_LEAN_AND_MEAN 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include "helpers/ScopeGuard.h" 40 | -------------------------------------------------------------------------------- /version.h: -------------------------------------------------------------------------------- 1 | #define MAJOR 1 2 | #define MINOR 4 3 | #define REVISION 0 4 | --------------------------------------------------------------------------------