Loading...
Searching...
No Matches
juce::StandalonePluginHolder Class Reference

Detailed Description

An object that creates and plays a standalone instance of an AudioProcessor.

The object will create your processor using the same createPluginFilter() function that the other plugin wrappers use, and will run it through the computer's audio/MIDI devices using AudioDeviceManager and AudioProcessorPlayer.

Inheritance diagram for juce::StandalonePluginHolder:

Classes

struct  PluginInOuts
 Structure used for the number of inputs and outputs. More...

Public Member Functions

 StandalonePluginHolder (PropertySet *settingsToUse, bool takeOwnershipOfSettings=true, const String &preferredDefaultDeviceName=String(), const AudioDeviceManager::AudioDeviceSetup *preferredSetupOptions=nullptr, const Array< PluginInOuts > &channels=Array< PluginInOuts >(), bool shouldAutoOpenMidiDevices=true)
 Creates an instance of the default plugin.
void init (bool enableAudioInput, const String &preferredDefaultDeviceName)
 ~StandalonePluginHolder () override
virtual void createPlugin ()
virtual void deletePlugin ()
int getNumInputChannels () const
int getNumOutputChannels () const
ValuegetMuteInputValue ()
bool getProcessorHasPotentialFeedbackLoop () const
void valueChanged (Value &value) override
 Called when a Value object is changed.
File getLastFile () const
void setLastFile (const FileChooser &fc)
void askUserToSaveState (const String &fileSuffix=String())
 Pops up a dialog letting the user save the processor's state to a file.
void askUserToLoadState (const String &fileSuffix=String())
 Pops up a dialog letting the user re-load the processor's state from a file.
void startPlaying ()
void stopPlaying ()
void showAudioSettingsDialog ()
 Shows an audio properties dialog box modally.
void saveAudioDeviceState ()
void reloadAudioDeviceState (bool enableAudioInput, const String &preferredDefaultDeviceName, const AudioDeviceManager::AudioDeviceSetup *preferredSetupOptions)
void savePluginState ()
void reloadPluginState ()
void switchToHostApplication ()
bool isInterAppAudioConnected ()
Image getIAAHostIcon (int size)

Static Public Member Functions

static String getFilePatterns (const String &fileSuffix)
static StandalonePluginHoldergetInstance ()

Public Attributes

OptionalScopedPointer< PropertySetsettings
std::unique_ptr< AudioProcessorprocessor
AudioDeviceManager deviceManager
AudioProcessorPlayer player
Array< PluginInOutschannelConfiguration
bool processorHasPotentialFeedbackLoop = true
std::atomic< bool > muteInput { true }
Value shouldMuteInput
AudioBuffer< float > emptyBuffer
bool autoOpenMidiDevices
std::unique_ptr< AudioDeviceManager::AudioDeviceSetupoptions
Array< MidiDeviceInfolastMidiDevices
std::unique_ptr< FileChooserstateFileChooser
ScopedMessageBox messageBox

Constructors and Destructors

◆ StandalonePluginHolder()

juce::StandalonePluginHolder::StandalonePluginHolder ( PropertySet * settingsToUse,
bool takeOwnershipOfSettings = true,
const String & preferredDefaultDeviceName = String(),
const AudioDeviceManager::AudioDeviceSetup * preferredSetupOptions = nullptr,
const Array< PluginInOuts > & channels = Array<PluginInOuts>(),
bool shouldAutoOpenMidiDevices = true )

Creates an instance of the default plugin.

The settings object can be a PropertySet that the class should use to store its settings - the takeOwnershipOfSettings indicates whether this object will delete the settings automatically when no longer needed. The settings can also be nullptr.

A default device name can be passed in.

Preferably a complete setup options object can be used, which takes precedence over the preferredDefaultDeviceName and allows you to select the input & output device names, sample rate, buffer size etc.

In all instances, the settingsToUse will take precedence over the "preferred" options if not null.

References autoOpenMidiDevices, channelConfiguration, init(), juce::RuntimePermissions::isGranted(), isInterAppAudioConnected(), juce::RuntimePermissions::isRequired(), options, processor, juce::RuntimePermissions::recordAudio, juce::RuntimePermissions::request(), settings, and shouldMuteInput.

Referenced by getInstance().

◆ ~StandalonePluginHolder()

juce::StandalonePluginHolder::~StandalonePluginHolder ( )
override

Member Functions

◆ init()

void juce::StandalonePluginHolder::init ( bool enableAudioInput,
const String & preferredDefaultDeviceName )

◆ createPlugin()

virtual void juce::StandalonePluginHolder::createPlugin ( )
virtual

◆ deletePlugin()

virtual void juce::StandalonePluginHolder::deletePlugin ( )
virtual

◆ getNumInputChannels()

int juce::StandalonePluginHolder::getNumInputChannels ( ) const

References channelConfiguration, and processor.

Referenced by reloadAudioDeviceState().

◆ getNumOutputChannels()

int juce::StandalonePluginHolder::getNumOutputChannels ( ) const

References channelConfiguration, and processor.

Referenced by reloadAudioDeviceState().

◆ getFilePatterns()

String juce::StandalonePluginHolder::getFilePatterns ( const String & fileSuffix)
static

◆ getMuteInputValue()

Value & juce::StandalonePluginHolder::getMuteInputValue ( )

References shouldMuteInput.

◆ getProcessorHasPotentialFeedbackLoop()

bool juce::StandalonePluginHolder::getProcessorHasPotentialFeedbackLoop ( ) const

◆ valueChanged()

void juce::StandalonePluginHolder::valueChanged ( Value & value)
overridevirtual

Called when a Value object is changed.

Note that the Value object passed as a parameter may not be exactly the same object that you registered the listener with - it might be a copy that refers to the same underlying ValueSource. To find out, you can call Value::refersToSameSourceAs().

Implements juce::Value::Listener.

References juce::Value::getValue(), and muteInput.

◆ getLastFile()

File juce::StandalonePluginHolder::getLastFile ( ) const

◆ setLastFile()

void juce::StandalonePluginHolder::setLastFile ( const FileChooser & fc)

◆ askUserToSaveState()

◆ askUserToLoadState()

◆ startPlaying()

void juce::StandalonePluginHolder::startPlaying ( )

References deviceManager, player, and processor.

Referenced by init().

◆ stopPlaying()

void juce::StandalonePluginHolder::stopPlaying ( )

References player.

◆ showAudioSettingsDialog()

◆ saveAudioDeviceState()

void juce::StandalonePluginHolder::saveAudioDeviceState ( )

◆ reloadAudioDeviceState()

void juce::StandalonePluginHolder::reloadAudioDeviceState ( bool enableAudioInput,
const String & preferredDefaultDeviceName,
const AudioDeviceManager::AudioDeviceSetup * preferredSetupOptions )

◆ savePluginState()

void juce::StandalonePluginHolder::savePluginState ( )

◆ reloadPluginState()

void juce::StandalonePluginHolder::reloadPluginState ( )

◆ switchToHostApplication()

void juce::StandalonePluginHolder::switchToHostApplication ( )

References deviceManager.

◆ isInterAppAudioConnected()

bool juce::StandalonePluginHolder::isInterAppAudioConnected ( )

References deviceManager.

Referenced by StandalonePluginHolder().

◆ getIAAHostIcon()

Image juce::StandalonePluginHolder::getIAAHostIcon ( int size)

References deviceManager.

◆ getInstance()

StandalonePluginHolder * juce::StandalonePluginHolder::getInstance ( )
static

Member Data Documentation

◆ settings

◆ processor

◆ deviceManager

◆ player

AudioProcessorPlayer juce::StandalonePluginHolder::player

Referenced by startPlaying(), and stopPlaying().

◆ channelConfiguration

Array<PluginInOuts> juce::StandalonePluginHolder::channelConfiguration

◆ processorHasPotentialFeedbackLoop

bool juce::StandalonePluginHolder::processorHasPotentialFeedbackLoop = true

◆ muteInput

std::atomic<bool> juce::StandalonePluginHolder::muteInput { true }

Referenced by valueChanged().

◆ shouldMuteInput

Value juce::StandalonePluginHolder::shouldMuteInput

◆ emptyBuffer

AudioBuffer<float> juce::StandalonePluginHolder::emptyBuffer

◆ autoOpenMidiDevices

bool juce::StandalonePluginHolder::autoOpenMidiDevices

Referenced by init(), and StandalonePluginHolder().

◆ options

std::unique_ptr<AudioDeviceManager::AudioDeviceSetup> juce::StandalonePluginHolder::options

Referenced by init(), and StandalonePluginHolder().

◆ lastMidiDevices

Array<MidiDeviceInfo> juce::StandalonePluginHolder::lastMidiDevices

◆ stateFileChooser

std::unique_ptr<FileChooser> juce::StandalonePluginHolder::stateFileChooser

◆ messageBox

ScopedMessageBox juce::StandalonePluginHolder::messageBox
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram