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

Plugin metadata and configuration options for Processor. More...

#include <gin_processor.h>

Public Member Functions

 ProcessorOptions ()
ProcessorOptions withAdditionalCredits (juce::StringArray names) &&
ProcessorOptions withoutUpdateChecker () &&
ProcessorOptions withoutNewsChecker () &&
ProcessorOptions withoutTitleBar () &&
ProcessorOptions withMidiLearn () &&
ProcessorOptions withMidiLearn (juce::Array< int > ccsToIgnore) &&
ProcessorOptions withPresetMetadata () &&

Public Attributes

juce::String pluginName
juce::String devId
juce::String developer
juce::String pluginVersion
juce::String updatesURL
juce::String newsURL
 Feed the news checker reads, derived from the developer's own site the same way updatesURL is.
juce::String url
juce::String urlTitle
bool wantsMidi = false
bool makesMidi = false
bool useUpdateChecker = true
bool useNewsChecker = true
bool hasMidiLearn = false
bool usePresetMetadata = false
juce::Array< int > midiLearnIgnoredCCs
 CCs the plugin handles itself (sustain pedal, mod wheel, etc), so MIDI learn should neither learn them nor apply mappings loaded for them.
bool useTitleBar = true
 Whether ProcessorEditor builds its own TitleBar.
juce::StringArray programmingCredits
std::unique_ptr< juce::LookAndFeel > lookAndFeel

Detailed Description

Plugin metadata and configuration options for Processor.

ProcessorOptions provides configuration and metadata for a Gin-based plugin, including plugin identity (name, version, developer), capabilities (MIDI I/O), and optional features (update checker, news checker). When using a standard JUCE plugin project, the default constructor automatically fills these from JucePlugin_* preprocessor defines. For custom applications, you can manually configure all options.

Configuration Categories:

  • Identity: pluginName, developer, devId, pluginVersion
  • URLs: updatesURL, url, urlTitle (for help/website links)
  • MIDI: wantsMidi, makesMidi flags
  • Features: useUpdateChecker, useNewsChecker toggles
  • Credits: programmingCredits array

The class provides builder-style methods for common customizations:

Usage:

// Standard plugin (auto-configured from JucePlugin_* defines)
// Custom configuration
ProcessorOptions customOpts;
customOpts.pluginName = "My Synth";
customOpts.developer = "My Company";
customOpts.devId = "MYCO";
customOpts.pluginVersion = "1.0.0";
customOpts.wantsMidi = true;
customOpts.makesMidi = false;
// Builder pattern
auto opts = ProcessorOptions()
.withAdditionalCredits({"Jane Smith", "Additional DSP"})
// Pass to Processor
MyProcessor processor(opts);
juce::String pluginName
Definition gin_processor.h:124
juce::String pluginVersion
Definition gin_processor.h:127
bool makesMidi
Definition gin_processor.h:138
ProcessorOptions withoutNewsChecker() &&
Definition gin_processor.h:172
ProcessorOptions withAdditionalCredits(juce::StringArray names) &&
Definition gin_processor.h:160
juce::String devId
Definition gin_processor.h:125
juce::String developer
Definition gin_processor.h:126
ProcessorOptions withoutUpdateChecker() &&
Definition gin_processor.h:166
bool wantsMidi
Definition gin_processor.h:137
See also
Processor

Constructor & Destructor Documentation

◆ ProcessorOptions()

Member Function Documentation

◆ withAdditionalCredits()

ProcessorOptions ProcessorOptions::withAdditionalCredits ( juce::StringArray names) &&

◆ withoutUpdateChecker()

ProcessorOptions ProcessorOptions::withoutUpdateChecker ( ) &&

◆ withoutNewsChecker()

ProcessorOptions ProcessorOptions::withoutNewsChecker ( ) &&

◆ withoutTitleBar()

ProcessorOptions ProcessorOptions::withoutTitleBar ( ) &&

References ProcessorOptions(), and useTitleBar.

◆ withMidiLearn() [1/2]

ProcessorOptions ProcessorOptions::withMidiLearn ( ) &&

References hasMidiLearn, and ProcessorOptions().

◆ withMidiLearn() [2/2]

ProcessorOptions ProcessorOptions::withMidiLearn ( juce::Array< int > ccsToIgnore) &&

◆ withPresetMetadata()

ProcessorOptions ProcessorOptions::withPresetMetadata ( ) &&

Member Data Documentation

◆ pluginName

juce::String ProcessorOptions::pluginName

◆ devId

juce::String ProcessorOptions::devId

◆ developer

juce::String ProcessorOptions::developer

◆ pluginVersion

juce::String ProcessorOptions::pluginVersion

◆ updatesURL

juce::String ProcessorOptions::updatesURL

◆ newsURL

juce::String ProcessorOptions::newsURL

Feed the news checker reads, derived from the developer's own site the same way updatesURL is.

It used to be hard coded, which meant every plugin built on gin fetched socalabs' blog whoever had written it.

◆ url

juce::String ProcessorOptions::url

◆ urlTitle

juce::String ProcessorOptions::urlTitle

◆ wantsMidi

bool ProcessorOptions::wantsMidi = false

◆ makesMidi

bool ProcessorOptions::makesMidi = false

◆ useUpdateChecker

bool ProcessorOptions::useUpdateChecker = true

Referenced by withoutUpdateChecker().

◆ useNewsChecker

bool ProcessorOptions::useNewsChecker = true

Referenced by withoutNewsChecker().

◆ hasMidiLearn

bool ProcessorOptions::hasMidiLearn = false

Referenced by withMidiLearn(), and withMidiLearn().

◆ usePresetMetadata

bool ProcessorOptions::usePresetMetadata = false

Referenced by withPresetMetadata().

◆ midiLearnIgnoredCCs

juce::Array<int> ProcessorOptions::midiLearnIgnoredCCs

CCs the plugin handles itself (sustain pedal, mod wheel, etc), so MIDI learn should neither learn them nor apply mappings loaded for them.

Referenced by withMidiLearn().

◆ useTitleBar

bool ProcessorOptions::useTitleBar = true

Whether ProcessorEditor builds its own TitleBar.

Turn it off in a plugin that supplies its own header: the stock bar is not just hidden but never constructed, so it does not also stand up an update and a news checker behind the one you replaced it with.

Referenced by withoutTitleBar().

◆ programmingCredits

juce::StringArray ProcessorOptions::programmingCredits
Initial value:
=
{
"Roland Rabien",
"RAW Material Software JUCE Framework"
}

Referenced by withAdditionalCredits().

◆ lookAndFeel

std::unique_ptr<juce::LookAndFeel> ProcessorOptions::lookAndFeel

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