Gin
Loading...
Searching...
No Matches
Program Class Reference

Plugin preset/program with file-based storage and parameter management. More...

#include <gin_program.h>

Public Member Functions

 Program ()=default
virtual ~Program ()=default
virtual void loadProcessor (Processor &p)
virtual void saveProcessor (Processor &p)
virtual juce::File getPresetFile (juce::File programDir)
virtual void loadFromFile (juce::File f, bool loadFully)
virtual void saveToDir (juce::File programDir)
virtual void deleteFromDir (juce::File programDir)

Public Attributes

juce::File file
juce::String name
juce::String author
juce::StringArray tags
bool isReadOnly = false
 When true, this program was loaded from a factory directory and the Processor will refuse to overwrite, rename, or delete its file.
bool fullyLoaded = false
juce::ValueTree state
juce::Array< Parameter::ParamState > parameters

Detailed Description

Plugin preset/program with file-based storage and parameter management.

Program represents a single preset that stores all parameter values and optionally custom plugin state. Programs can be saved to/loaded from XML files and include metadata like name, author, and tags.

Key Features:

  • Parameter state storage and recall
  • Custom plugin state via ValueTree
  • File-based preset management
  • Metadata: name, author, tags
  • Lazy loading (load metadata first, full state on demand)
  • XML-based storage format

Programs are typically managed by the Processor class, which handles automatic loading from preset directories and file watching for changes.

Usage:

// Creating and saving a program
Program program;
program.name = "My Preset";
program.author = "Username";
program.tags.add("Bass");
program.tags.add("Dark");
program.saveProcessor(myProcessor);
program.saveToDir(presetDirectory);
// Loading a program
Program loadedProgram;
loadedProgram.loadFromFile(presetFile, true); // true = load fully
loadedProgram.loadProcessor(myProcessor);
virtual void loadFromFile(juce::File f, bool loadFully)
virtual void saveProcessor(Processor &p)
virtual void loadProcessor(Processor &p)
juce::String author
Definition gin_program.h:65
juce::String name
Definition gin_program.h:64
virtual void saveToDir(juce::File programDir)
Program()=default
juce::StringArray tags
Definition gin_program.h:66
See also
Processor, Parameter

Constructor & Destructor Documentation

◆ Program()

Program::Program ( )
default

◆ ~Program()

virtual Program::~Program ( )
virtualdefault

Member Function Documentation

◆ loadProcessor()

virtual void Program::loadProcessor ( Processor & p)
virtual

◆ saveProcessor()

virtual void Program::saveProcessor ( Processor & p)
virtual

◆ getPresetFile()

virtual juce::File Program::getPresetFile ( juce::File programDir)
virtual

◆ loadFromFile()

virtual void Program::loadFromFile ( juce::File f,
bool loadFully )
virtual

◆ saveToDir()

virtual void Program::saveToDir ( juce::File programDir)
virtual

◆ deleteFromDir()

virtual void Program::deleteFromDir ( juce::File programDir)
virtual

Member Data Documentation

◆ file

juce::File Program::file

◆ name

juce::String Program::name

◆ author

juce::String Program::author

◆ tags

juce::StringArray Program::tags

◆ isReadOnly

bool Program::isReadOnly = false

When true, this program was loaded from a factory directory and the Processor will refuse to overwrite, rename, or delete its file.

The in-memory entry can still be removed (e.g. when saving over it with a user copy); the next directory scan will simply reload it. Defaults to false to preserve legacy behaviour.

◆ fullyLoaded

bool Program::fullyLoaded = false

◆ state

juce::ValueTree Program::state

◆ parameters

juce::Array<Parameter::ParamState> Program::parameters

The documentation for this class was generated from the following file: