Skip to content

alternatone/AlternaFX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

AlternaFX

A JUCE audio plugin with a modular effects chain architecture.

Signal Chain

Audio Input → Input Trim → FX Slot → Output Trim → Audio Output

Features

  • Input/Output Trim: ±12dB gain control
  • Swappable FX Slot: Modular architecture for runtime effect switching
  • Preset Management: Save and load plugin states
  • Cross-platform: Builds on macOS, Windows, and Linux
  • Formats: AU and VST3

Building

Prerequisites

  • CMake 3.15 or higher
  • C++17 compatible compiler
  • Git

Build Steps

  1. Clone and configure

    cd AlternaFX
    cmake -B build -DCMAKE_BUILD_TYPE=Release
  2. Build

    cmake --build build --config Release
  3. Install (copies plugin to system folders)

    cmake --build build --config Release --target install

Build Options

  • Debug build: Use -DCMAKE_BUILD_TYPE=Debug
  • Specific generator: Add -G "Unix Makefiles" or -G "Ninja"
  • Custom JUCE: Clone JUCE manually and modify CMakeLists.txt

Plugin Locations After Install

  • macOS AU: ~/Library/Audio/Plug-Ins/Components/AlternaFX.component
  • macOS VST3: ~/Library/Audio/Plug-Ins/VST3/AlternaFX.vst3
  • Windows VST3: C:\Program Files\Common Files\VST3\AlternaFX.vst3

Architecture

FX Slot System

The plugin uses an abstract FXSlot base class that can be subclassed to create custom effects:

class FXSlot
{
public:
    virtual void process(juce::AudioBuffer<float>& buffer) = 0;
    virtual void reset() = 0;
    virtual void prepare(double sampleRate, int samplesPerBlock, int numChannels) = 0;
};

The default implementation is PassthroughFX which passes audio unchanged. To add custom effects:

  1. Create a new class inheriting from FXSlot
  2. Implement the three virtual methods
  3. Swap the effect at runtime using std::unique_ptr<FXSlot>

Project Structure

AlternaFX/
├── CMakeLists.txt           # Build configuration
├── Source/
│   ├── FXSlot.h            # Abstract FX base class
│   ├── PassthroughFX.h     # Default passthrough effect
│   ├── PluginProcessor.h   # Main audio processor
│   ├── PluginProcessor.cpp # Audio processing logic
│   ├── PluginEditor.h      # GUI (minimal)
│   └── PluginEditor.cpp    # GUI implementation
└── README.md

Development

Using with Different IDEs

  • VS Code: Open folder and use CMake Tools extension
  • CLion: Open CMakeLists.txt as project
  • Xcode: Generate with cmake -B build -G Xcode
  • Command line: Use the build steps above

Adding New Effects

  1. Create MyEffect.h in Source/
  2. Inherit from FXSlot and implement methods
  3. Add to CMakeLists.txt target_sources()
  4. Swap in processor: fxSlot = std::make_unique<MyEffect>();

License

(Add your license here)

About

AlternaFX project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors