2 Commit-ok
v1.0 ... v1.1

Szerző SHA1 Üzenet Dátum
hariel1985
f95c6e4b17 v1.1: Add New Band button and FIR quality selector
- New Band button in header bar for adding EQ nodes
- FIR latency dropdown: 4096 (~46ms), 8192 (~93ms), 16384 (~186ms)
- Version bump to 1.1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:37:07 +01:00
hariel1985
6a5f331185 Remove standalone build — no practical use for an EQ plugin
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 10:25:09 +01:00
7 fájl változott, egészen pontosan 59 új sor hozzáadva és 48 régi sor törölve

Fájl megtekintése

@@ -25,21 +25,12 @@ jobs:
- name: Package VST3 - name: Package VST3
run: Compress-Archive -Path "build/InstaLPEQ_artefacts/Release/VST3/InstaLPEQ.vst3" -DestinationPath "InstaLPEQ-VST3-Win64.zip" run: Compress-Archive -Path "build/InstaLPEQ_artefacts/Release/VST3/InstaLPEQ.vst3" -DestinationPath "InstaLPEQ-VST3-Win64.zip"
- name: Package Standalone
run: Compress-Archive -Path "build/InstaLPEQ_artefacts/Release/Standalone/InstaLPEQ.exe" -DestinationPath "InstaLPEQ-Standalone-Win64.zip"
- name: Upload VST3 - name: Upload VST3
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: InstaLPEQ-VST3-Win64 name: InstaLPEQ-VST3-Win64
path: InstaLPEQ-VST3-Win64.zip path: InstaLPEQ-VST3-Win64.zip
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: InstaLPEQ-Standalone-Win64
path: InstaLPEQ-Standalone-Win64.zip
build-macos: build-macos:
runs-on: macos-latest runs-on: macos-latest
steps: steps:
@@ -62,10 +53,6 @@ jobs:
working-directory: build/InstaLPEQ_artefacts/Release working-directory: build/InstaLPEQ_artefacts/Release
run: zip -r $GITHUB_WORKSPACE/InstaLPEQ-AU-macOS.zip AU/InstaLPEQ.component run: zip -r $GITHUB_WORKSPACE/InstaLPEQ-AU-macOS.zip AU/InstaLPEQ.component
- name: Package Standalone
working-directory: build/InstaLPEQ_artefacts/Release
run: zip -r $GITHUB_WORKSPACE/InstaLPEQ-Standalone-macOS.zip Standalone/InstaLPEQ.app
- name: Upload VST3 - name: Upload VST3
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
@@ -78,12 +65,6 @@ jobs:
name: InstaLPEQ-AU-macOS name: InstaLPEQ-AU-macOS
path: InstaLPEQ-AU-macOS.zip path: InstaLPEQ-AU-macOS.zip
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: InstaLPEQ-Standalone-macOS
path: InstaLPEQ-Standalone-macOS.zip
build-linux: build-linux:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
@@ -113,9 +94,6 @@ jobs:
working-directory: build/InstaLPEQ_artefacts/Release working-directory: build/InstaLPEQ_artefacts/Release
run: zip -r $GITHUB_WORKSPACE/InstaLPEQ-LV2-Linux-x64.zip LV2/InstaLPEQ.lv2 run: zip -r $GITHUB_WORKSPACE/InstaLPEQ-LV2-Linux-x64.zip LV2/InstaLPEQ.lv2
- name: Package Standalone
run: zip -j InstaLPEQ-Standalone-Linux-x64.zip build/InstaLPEQ_artefacts/Release/Standalone/InstaLPEQ
- name: Upload VST3 - name: Upload VST3
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
@@ -128,12 +106,6 @@ jobs:
name: InstaLPEQ-LV2-Linux-x64 name: InstaLPEQ-LV2-Linux-x64
path: InstaLPEQ-LV2-Linux-x64.zip path: InstaLPEQ-LV2-Linux-x64.zip
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: InstaLPEQ-Standalone-Linux-x64
path: InstaLPEQ-Standalone-Linux-x64.zip
release: release:
if: startsWith(github.ref, 'refs/tags/v') if: startsWith(github.ref, 'refs/tags/v')
needs: [build-windows, build-macos, build-linux] needs: [build-windows, build-macos, build-linux]
@@ -151,11 +123,8 @@ jobs:
with: with:
files: | files: |
artifacts/InstaLPEQ-VST3-Win64/InstaLPEQ-VST3-Win64.zip artifacts/InstaLPEQ-VST3-Win64/InstaLPEQ-VST3-Win64.zip
artifacts/InstaLPEQ-Standalone-Win64/InstaLPEQ-Standalone-Win64.zip
artifacts/InstaLPEQ-VST3-macOS/InstaLPEQ-VST3-macOS.zip artifacts/InstaLPEQ-VST3-macOS/InstaLPEQ-VST3-macOS.zip
artifacts/InstaLPEQ-AU-macOS/InstaLPEQ-AU-macOS.zip artifacts/InstaLPEQ-AU-macOS/InstaLPEQ-AU-macOS.zip
artifacts/InstaLPEQ-Standalone-macOS/InstaLPEQ-Standalone-macOS.zip
artifacts/InstaLPEQ-VST3-Linux-x64/InstaLPEQ-VST3-Linux-x64.zip artifacts/InstaLPEQ-VST3-Linux-x64/InstaLPEQ-VST3-Linux-x64.zip
artifacts/InstaLPEQ-LV2-Linux-x64/InstaLPEQ-LV2-Linux-x64.zip artifacts/InstaLPEQ-LV2-Linux-x64/InstaLPEQ-LV2-Linux-x64.zip
artifacts/InstaLPEQ-Standalone-Linux-x64/InstaLPEQ-Standalone-Linux-x64.zip
generate_release_notes: true generate_release_notes: true

Fájl megtekintése

@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.22) cmake_minimum_required(VERSION 3.22)
project(InstaLPEQ VERSION 1.0.0) project(InstaLPEQ VERSION 1.1.0)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -13,7 +13,7 @@ juce_add_plugin(InstaLPEQ
NEEDS_MIDI_OUTPUT FALSE NEEDS_MIDI_OUTPUT FALSE
PLUGIN_MANUFACTURER_CODE Inst PLUGIN_MANUFACTURER_CODE Inst
PLUGIN_CODE Ilpe PLUGIN_CODE Ilpe
FORMATS VST3 AU LV2 Standalone FORMATS VST3 AU LV2
LV2URI "https://github.com/hariel1985/InstaLPEQ" LV2URI "https://github.com/hariel1985/InstaLPEQ"
PRODUCT_NAME "InstaLPEQ" PRODUCT_NAME "InstaLPEQ"
COPY_PLUGIN_AFTER_BUILD FALSE COPY_PLUGIN_AFTER_BUILD FALSE

Fájl megtekintése

@@ -1,32 +1,29 @@
# InstaLPEQ # InstaLPEQ
Free, open-source linear phase EQ plugin built with JUCE. Available as VST3, AU, LV2 and Standalone. Free, open-source linear phase EQ plugin built with JUCE. Available as VST3, AU and LV2.
![VST3](https://img.shields.io/badge/format-VST3-blue) ![AU](https://img.shields.io/badge/format-AU-blue) ![LV2](https://img.shields.io/badge/format-LV2-blue) ![C++](https://img.shields.io/badge/language-C%2B%2B17-orange) ![JUCE](https://img.shields.io/badge/framework-JUCE-green) ![License](https://img.shields.io/badge/license-GPL--3.0-lightgrey) ![Build](https://github.com/hariel1985/InstaLPEQ/actions/workflows/build.yml/badge.svg) ![VST3](https://img.shields.io/badge/format-VST3-blue) ![AU](https://img.shields.io/badge/format-AU-blue) ![LV2](https://img.shields.io/badge/format-LV2-blue) ![C++](https://img.shields.io/badge/language-C%2B%2B17-orange) ![JUCE](https://img.shields.io/badge/framework-JUCE-green) ![License](https://img.shields.io/badge/license-GPL--3.0-lightgrey) ![Build](https://github.com/hariel1985/InstaLPEQ/actions/workflows/build.yml/badge.svg)
## Download ## Download
**[Latest Release: v1.0](https://github.com/hariel1985/InstaLPEQ/releases/tag/v1.0)** **[Latest Release: v1.1](https://github.com/hariel1985/InstaLPEQ/releases/tag/v1.1)**
### Windows ### Windows
| File | Description | | File | Description |
|------|-------------| |------|-------------|
| [InstaLPEQ-VST3-Win64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-VST3-Win64.zip) | VST3 plugin — copy to `C:\Program Files\Common Files\VST3\` | | [InstaLPEQ-VST3-Win64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.1/InstaLPEQ-VST3-Win64.zip) | VST3 plugin — copy to `C:\Program Files\Common Files\VST3\` |
| [InstaLPEQ-Standalone-Win64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-Standalone-Win64.zip) | Standalone application |
### macOS (Universal Binary: Apple Silicon + Intel) ### macOS (Universal Binary: Apple Silicon + Intel)
| File | Description | | File | Description |
|------|-------------| |------|-------------|
| [InstaLPEQ-VST3-macOS.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-VST3-macOS.zip) | VST3 plugin — copy to `~/Library/Audio/Plug-Ins/VST3/` | | [InstaLPEQ-VST3-macOS.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.1/InstaLPEQ-VST3-macOS.zip) | VST3 plugin — copy to `~/Library/Audio/Plug-Ins/VST3/` |
| [InstaLPEQ-AU-macOS.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-AU-macOS.zip) | Audio Unit — copy to `~/Library/Audio/Plug-Ins/Components/` | | [InstaLPEQ-AU-macOS.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.1/InstaLPEQ-AU-macOS.zip) | Audio Unit — copy to `~/Library/Audio/Plug-Ins/Components/` |
| [InstaLPEQ-Standalone-macOS.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-Standalone-macOS.zip) | Standalone application |
### Linux (x64, built on Ubuntu 22.04) ### Linux (x64, built on Ubuntu 22.04)
| File | Description | | File | Description |
|------|-------------| |------|-------------|
| [InstaLPEQ-VST3-Linux-x64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-VST3-Linux-x64.zip) | VST3 plugin — copy to `~/.vst3/` | | [InstaLPEQ-VST3-Linux-x64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.1/InstaLPEQ-VST3-Linux-x64.zip) | VST3 plugin — copy to `~/.vst3/` |
| [InstaLPEQ-LV2-Linux-x64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-LV2-Linux-x64.zip) | LV2 plugin — copy to `~/.lv2/` | | [InstaLPEQ-LV2-Linux-x64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.1/InstaLPEQ-LV2-Linux-x64.zip) | LV2 plugin — copy to `~/.lv2/` |
| [InstaLPEQ-Standalone-Linux-x64.zip](https://github.com/hariel1985/InstaLPEQ/releases/download/v1.0/InstaLPEQ-Standalone-Linux-x64.zip) | Standalone application |
> **macOS note:** Builds are Universal Binary (Apple Silicon + Intel). Not code-signed — after copying the plugin, remove the quarantine flag in Terminal: > **macOS note:** Builds are Universal Binary (Apple Silicon + Intel). Not code-signed — after copying the plugin, remove the quarantine flag in Terminal:
> ```bash > ```bash
@@ -107,7 +104,6 @@ Output:
- VST3: `build/InstaLPEQ_artefacts/Release/VST3/InstaLPEQ.vst3` - VST3: `build/InstaLPEQ_artefacts/Release/VST3/InstaLPEQ.vst3`
- AU: `build/InstaLPEQ_artefacts/Release/AU/InstaLPEQ.component` (macOS) - AU: `build/InstaLPEQ_artefacts/Release/AU/InstaLPEQ.component` (macOS)
- LV2: `build/InstaLPEQ_artefacts/Release/LV2/InstaLPEQ.lv2` - LV2: `build/InstaLPEQ_artefacts/Release/LV2/InstaLPEQ.lv2`
- Standalone: `build/InstaLPEQ_artefacts/Release/Standalone/InstaLPEQ.exe`
## How It Works ## How It Works

Fájl megtekintése

@@ -23,6 +23,34 @@ InstaLPEQEditor::InstaLPEQEditor (InstaLPEQProcessor& p)
bypassLabel.setColour (juce::Label::textColourId, InstaLPEQLookAndFeel::textSecondary); bypassLabel.setColour (juce::Label::textColourId, InstaLPEQLookAndFeel::textSecondary);
addAndMakeVisible (bypassLabel); addAndMakeVisible (bypassLabel);
// New Band button
newBandButton.onClick = [this]
{
if (processor.getNumBands() < InstaLPEQProcessor::maxBands)
{
processor.addBand (1000.0f, 0.0f);
syncDisplayFromProcessor();
curveDisplay.setSelectedBand (processor.getNumBands() - 1);
}
};
addAndMakeVisible (newBandButton);
// Quality selector (FIR latency)
qualitySelector.addItem ("4096 (~46ms)", 1);
qualitySelector.addItem ("8192 (~93ms)", 2);
qualitySelector.addItem ("16384 (~186ms)", 3);
qualitySelector.setSelectedId (2, juce::dontSendNotification); // default 8192
qualitySelector.onChange = [this]
{
int sel = qualitySelector.getSelectedId();
int order = (sel == 1) ? 12 : (sel == 2) ? 13 : 14;
processor.setQuality (order);
};
addAndMakeVisible (qualitySelector);
qualityLabel.setFont (customLookAndFeel.getMediumFont (13.0f));
qualityLabel.setJustificationType (juce::Justification::centredRight);
addAndMakeVisible (qualityLabel);
// EQ curve // EQ curve
curveDisplay.setListener (this); curveDisplay.setListener (this);
addAndMakeVisible (curveDisplay); addAndMakeVisible (curveDisplay);
@@ -102,18 +130,23 @@ void InstaLPEQEditor::resized()
bypassLabel.setBounds (bypassArea.removeFromLeft (50)); bypassLabel.setBounds (bypassArea.removeFromLeft (50));
bypassToggle.setBounds (bypassArea); bypassToggle.setBounds (bypassArea);
newBandButton.setBounds (header.removeFromRight ((int) (90 * scale)).reduced (2));
// Bottom master row // Bottom master row
int masterH = (int) std::max (50.0f, 65.0f * scale); int masterH = (int) std::max (50.0f, 65.0f * scale);
auto masterArea = bounds.removeFromBottom (masterH).reduced (pad, 2); auto masterArea = bounds.removeFromBottom (masterH).reduced (pad, 2);
// Divider above master
// (painted in paint())
masterGainLabel.setFont (customLookAndFeel.getMediumFont (std::max (11.0f, 14.0f * scale))); masterGainLabel.setFont (customLookAndFeel.getMediumFont (std::max (11.0f, 14.0f * scale)));
auto labelArea = masterArea.removeFromLeft (60); auto labelArea = masterArea.removeFromLeft (60);
masterGainLabel.setBounds (labelArea); masterGainLabel.setBounds (labelArea);
masterGainSlider.setBounds (masterArea.removeFromLeft (masterH)); masterGainSlider.setBounds (masterArea.removeFromLeft (masterH));
// Quality selector on the right side of master row
qualityLabel.setFont (customLookAndFeel.getMediumFont (std::max (11.0f, 14.0f * scale)));
auto qLabelArea = masterArea.removeFromRight (30);
qualityLabel.setBounds (qLabelArea);
qualitySelector.setBounds (masterArea.removeFromRight ((int) (130 * scale)).reduced (2, (masterH - 24) / 2));
// Node parameter panel (15% of remaining height) // Node parameter panel (15% of remaining height)
int nodePanelH = (int) (bounds.getHeight() * 0.18f); int nodePanelH = (int) (bounds.getHeight() * 0.18f);
auto nodePanelArea = bounds.removeFromBottom (nodePanelH).reduced (pad, 2); auto nodePanelArea = bounds.removeFromBottom (nodePanelH).reduced (pad, 2);

Fájl megtekintése

@@ -39,10 +39,14 @@ private:
NodeParameterPanel nodePanel; NodeParameterPanel nodePanel;
juce::Label titleLabel { {}, "INSTALPEQ" }; juce::Label titleLabel { {}, "INSTALPEQ" };
juce::Label versionLabel { {}, "v1.0" }; juce::Label versionLabel { {}, "v1.1" };
juce::ToggleButton bypassToggle; juce::ToggleButton bypassToggle;
juce::Label bypassLabel { {}, "BYPASS" }; juce::Label bypassLabel { {}, "BYPASS" };
juce::TextButton newBandButton { "NEW BAND" };
juce::ComboBox qualitySelector;
juce::Label qualityLabel { {}, "FIR" };
juce::Slider masterGainSlider; juce::Slider masterGainSlider;
juce::Label masterGainLabel { {}, "MASTER" }; juce::Label masterGainLabel { {}, "MASTER" };

Fájl megtekintése

@@ -125,6 +125,13 @@ void InstaLPEQProcessor::updateFIR()
firEngine.setBands (currentBands); firEngine.setBands (currentBands);
} }
void InstaLPEQProcessor::setQuality (int fftOrder)
{
firEngine.setFFTOrder (fftOrder);
setLatencySamples (firEngine.getLatencySamples());
updateFIR();
}
// ============================================================ // ============================================================
// State save/restore // State save/restore
// ============================================================ // ============================================================

Fájl megtekintése

@@ -44,6 +44,8 @@ public:
std::atomic<bool> bypassed { false }; std::atomic<bool> bypassed { false };
std::atomic<float> masterGainDb { 0.0f }; std::atomic<float> masterGainDb { 0.0f };
void setQuality (int fftOrder);
FIREngine& getFIREngine() { return firEngine; } FIREngine& getFIREngine() { return firEngine; }
double getCurrentSampleRate() const { return currentSampleRate; } double getCurrentSampleRate() const { return currentSampleRate; }