26#if JucePlugin_Enable_IAA && JucePlugin_Build_Standalone && JUCE_IOS && (! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP)
35Image JUCE_API getIconFromApplication (
const String&,
const int);
38std::function<
bool (AudioProcessor&)> PluginHostType::jucePlugInIsRunningInAudioSuiteFn =
nullptr;
39String PluginHostType::hostIdReportedByWrapper;
43 #if JucePlugin_Enable_IAA && JucePlugin_Build_Standalone && JUCE_IOS && (! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP)
45 return juce_isInterAppAudioConnected();
53 #if JucePlugin_Enable_IAA && JucePlugin_Build_Standalone && JUCE_IOS && (! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP)
55 juce_switchToHostApplication();
61 #if JucePlugin_Build_AAX
63 && jucePlugInIsRunningInAudioSuiteFn !=
nullptr)
65 return jucePlugInIsRunningInAudioSuiteFn (processor);
74 #if JucePlugin_Enable_IAA && JucePlugin_Build_Standalone && JUCE_IOS && (! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP)
76 return juce_getIAAHostIcon (size);
81 return getIconFromApplication (bundlePath, size);
104 case Ardour:
return "Ardour";
105 case AULab:
return "AU Lab";
106 case AUVal:
return "auval";
122 case Maschine:
return "NI Maschine";
123 case Reaper:
return "Reaper";
124 case Reason:
return "Reason";
125 case Renoise:
return "Renoise";
126 case SADiE:
return "SADiE";
169 if (hostPath.containsIgnoreCase (
"Final Cut Pro.app"))
return FinalCut;
170 if (hostPath.containsIgnoreCase (
"Final Cut Pro Trial.app"))
return FinalCut;
171 if (hostPath.containsIgnoreCase (
"Live 6"))
return AbletonLive6;
172 if (hostPath.containsIgnoreCase (
"Live 7"))
return AbletonLive7;
173 if (hostPath.containsIgnoreCase (
"Live 8"))
return AbletonLive8;
174 if (hostPath.containsIgnoreCase (
"Live 9"))
return AbletonLive9;
175 if (hostPath.containsIgnoreCase (
"Live 10"))
return AbletonLive10;
176 if (hostPath.containsIgnoreCase (
"Live 11"))
return AbletonLive11;
178 if (hostFilename.containsIgnoreCase (
"Audition"))
return AdobeAudition;
179 if (hostFilename.containsIgnoreCase (
"Adobe Premiere"))
return AdobePremierePro;
180 if (hostFilename.containsIgnoreCase (
"GarageBand"))
return AppleGarageBand;
181 if (hostFilename.containsIgnoreCase (
"Logic"))
return AppleLogic;
182 if (hostFilename.containsIgnoreCase (
"MainStage"))
return AppleMainStage;
183 if (hostFilename.containsIgnoreCase (
"AU Lab"))
return AULab;
184 if (hostFilename.containsIgnoreCase (
"Pro Tools"))
return AvidProTools;
203 if (hostFilename.containsIgnoreCase (
"WaveBurner"))
return WaveBurner;
204 if (hostPath.containsIgnoreCase (
"Digital Performer"))
return DigitalPerformer;
205 if (hostFilename.containsIgnoreCase (
"reaper"))
return Reaper;
206 if (hostFilename.containsIgnoreCase (
"Reason"))
return Reason;
207 if (hostPath.containsIgnoreCase (
"Studio One"))
return StudioOne;
209 if (hostPath.containsIgnoreCase (
"Tracktion 3"))
return Tracktion3;
211 if (hostFilename.containsIgnoreCase (
"Renoise"))
return Renoise;
212 if (hostFilename.containsIgnoreCase (
"Resolve"))
return DaVinciResolve;
213 if (hostFilename.startsWith (
"Bitwig"))
return BitwigStudio;
214 if (hostFilename.containsIgnoreCase (
"OsxFL"))
return FruityLoops;
215 if (hostFilename.containsIgnoreCase (
"pluginval"))
return pluginval;
216 if (hostFilename.containsIgnoreCase (
"AudioPluginHost"))
return JUCEPluginHost;
217 if (hostFilename.containsIgnoreCase (
"Maschine"))
return Maschine;
218 if (hostFilename.containsIgnoreCase (
"Vienna Ensemble Pro"))
return ViennaEnsemblePro;
219 if (hostFilename.containsIgnoreCase (
"auvaltool"))
return AUVal;
220 if (hostFilename.containsIgnoreCase (
"com.apple.audio.infohelper"))
return AppleInfoHelper;
222 if (hostIdReportedByWrapper ==
"com.apple.logic.pro")
return AppleLogic;
223 if (hostIdReportedByWrapper ==
"com.apple.garageband")
return AppleGarageBand;
224 if (hostIdReportedByWrapper ==
"com.apple.mainstage")
return AppleMainStage;
226 const auto procName = nsStringToJuce ([[NSRunningApplication currentApplication] localizedName]);
228 const auto matchesInOrder = [&] (
const StringArray& strings)
230 return procName.matchesWildcard (
"AUHostingService*(" + strings.joinIntoString (
"*") +
")",
false);
234 if (matchesInOrder ({
"Logic",
"Pro" }))
return AppleLogic;
237 if (matchesInOrder ({
"Final",
"Cut",
"Pro" }))
return FinalCut;
240 if (hostFilename.containsIgnoreCase (
"Live 6"))
return AbletonLive6;
241 if (hostFilename.containsIgnoreCase (
"Live 7"))
return AbletonLive7;
242 if (hostFilename.containsIgnoreCase (
"Live 8"))
return AbletonLive8;
243 if (hostFilename.containsIgnoreCase (
"Live 9"))
return AbletonLive9;
244 if (hostFilename.containsIgnoreCase (
"Live 10"))
return AbletonLive10;
245 if (hostFilename.containsIgnoreCase (
"Live 11"))
return AbletonLive11;
247 if (hostFilename.containsIgnoreCase (
"Audition"))
return AdobeAudition;
248 if (hostFilename.containsIgnoreCase (
"Adobe Premiere"))
return AdobePremierePro;
249 if (hostFilename.containsIgnoreCase (
"ProTools"))
return AvidProTools;
250 if (hostPath.containsIgnoreCase (
"SONAR 8"))
return CakewalkSonar8;
253 if (hostFilename.containsIgnoreCase (
"GarageBand"))
return AppleGarageBand;
254 if (hostFilename.containsIgnoreCase (
"Logic"))
return AppleLogic;
255 if (hostFilename.containsIgnoreCase (
"MainStage"))
return AppleMainStage;
257 if (hostPath.containsIgnoreCase (
"Tracktion 3"))
return Tracktion3;
259 if (hostFilename.containsIgnoreCase (
"reaper"))
return Reaper;
264 if (hostFilename.containsIgnoreCase (
"Cubase8.exe"))
return SteinbergCubase8;
267 if (hostFilename.containsIgnoreCase (
"Cubase9.5.exe")
269 if (hostFilename.containsIgnoreCase (
"Cubase9.exe")
271 if (hostFilename.containsIgnoreCase (
"Cubase10.5.exe")
273 if (hostFilename.containsIgnoreCase (
"Cubase10.exe")
285 if (hostFilename.containsIgnoreCase (
"Maschine"))
return Maschine;
286 if (hostFilename.startsWith (
"FL"))
return FruityLoops;
287 if (hostFilename.contains (
"ilbridge."))
return FruityLoops;
288 if (hostPath.containsIgnoreCase (
"Studio One"))
return StudioOne;
289 if (hostPath.containsIgnoreCase (
"Digital Performer"))
return DigitalPerformer;
290 if (hostFilename.containsIgnoreCase (
"VST_Scanner"))
return VBVSTScanner;
291 if (hostPath.containsIgnoreCase (
"Merging Technologies"))
return MergingPyramix;
293 if (hostFilename.startsWithIgnoreCase (
"Sequoia"))
return MagixSequoia;
294 if (hostFilename.containsIgnoreCase (
"Reason"))
return Reason;
295 if (hostFilename.containsIgnoreCase (
"Renoise"))
return Renoise;
296 if (hostFilename.containsIgnoreCase (
"Resolve"))
return DaVinciResolve;
297 if (hostPath.containsIgnoreCase (
"Bitwig Studio"))
return BitwigStudio;
298 if (hostFilename.containsIgnoreCase (
"Sadie"))
return SADiE;
299 if (hostFilename.containsIgnoreCase (
"pluginval"))
return pluginval;
300 if (hostFilename.containsIgnoreCase (
"AudioPluginHost"))
return JUCEPluginHost;
301 if (hostFilename.containsIgnoreCase (
"Vienna Ensemble Pro"))
return ViennaEnsemblePro;
303 #elif JUCE_LINUX || JUCE_BSD
304 if (hostFilename.containsIgnoreCase (
"Ardour"))
return Ardour;
307 if (hostFilename.startsWith (
"Bitwig"))
return BitwigStudio;
308 if (hostFilename.containsIgnoreCase (
"pluginval"))
return pluginval;
309 if (hostFilename.containsIgnoreCase (
"AudioPluginHost"))
return JUCEPluginHost;
Base class for audio processing classes or plugins.
WrapperType
Flags to indicate the type of plugin context in which a processor is being used.
Represents a local file or directory.
String getFileName() const
Returns the last section of the pathname.
Holds a fixed-size bitmap.
static AudioProcessor::WrapperType getPluginLoadedAs() noexcept
Returns the plug-in format via which the plug-in file was loaded.
HostType
Represents the host type and also its version for some hosts.
@ SteinbergWavelab5
Represents Steinberg Wavelab 5.
@ MagixSequoia
Represents Magix Sequoia.
@ CakewalkSonar8
Represents Cakewalk Sonar 8.
@ CakewalkByBandlab
Represents Cakewalk by Bandlab.
@ StudioOne
Represents PreSonus Studio One.
@ SteinbergNuendoGeneric
Represents Steinberg Nuendo.
@ MagixSamplitude
Represents Magix Samplitude.
@ AbletonLive9
Represents Ableton Live 9.
@ SteinbergNuendo3
Represents Steinberg Nuendo 3.
@ MergingPyramix
Represents Merging Pyramix.
@ Reaper
Represents Cockos Reaper.
@ SteinbergCubase8_5
Represents Steinberg Cubase 8.5.
@ AdobeAudition
Represents Adobe Audition.
@ AdobePremierePro
Represents Adobe Premiere Pro.
@ AppleInfoHelper
Represents Apple com.apple.audio.InfoHelper.
@ SteinbergWavelabGeneric
Represents Steinberg Wavelab.
@ SteinbergCubase8
Represents Steinberg Cubase 8.
@ SteinbergWavelab6
Represents Steinberg Wavelab 6.
@ TracktionGeneric
Represents Tracktion.
@ SteinbergCubaseGeneric
Represents Steinberg Cubase.
@ SteinbergCubase6
Represents Steinberg Cubase 6.
@ AppleMainStage
Represents Apple Main Stage.
@ AbletonLive7
Represents Ableton Live 7.
@ Tracktion3
Represents Tracktion 3.
@ AppleGarageBand
Represents Apple GarageBand.
@ SteinbergCubase5
Represents Steinberg Cubase 5.
@ AbletonLive10
Represents Ableton Live 10.
@ MuseReceptorGeneric
Represents Muse Receptor.
@ VBVSTScanner
Represents VB Audio VST Scanner.
@ UnknownHost
Represents an unknown host.
@ SteinbergNuendo5
Represents Steinberg Nuendo 5.
@ SteinbergCubase7
Represents Steinberg Cubase 7.
@ SteinbergCubase9
Represents Steinberg Cubase 9.
@ FinalCut
Represents Apple Final Cut Pro.
@ AppleLogic
Represents Apple Logic Pro.
@ AbletonLiveGeneric
Represents Ableton Live.
@ SteinbergCubase5Bridged
Represents Steinberg Cubase 5 Bridged.
@ SteinbergCubase9_5
Represents Steinberg Cubase 9.5.
@ DaVinciResolve
Represents DaVinci Resolve.
@ FruityLoops
Represents Fruity Loops.
@ SteinbergCubase4
Represents Steinberg Cubase 4.
@ SteinbergCubase10
Represents Steinberg Cubase 10.
@ SteinbergWavelab8
Represents Steinberg Wavelab 8.
@ TracktionWaveform
Represents Tracktion Waveform.
@ AUVal
Represents Apple AU validator.
@ SteinbergCubase10_5
Represents Steinberg Cubase 10.5.
@ CakewalkSonarGeneric
Represents Cakewalk Sonar.
@ Ardour
Represents Ardour.
@ BitwigStudio
Represents Bitwig Studio.
@ DigitalPerformer
Represents Digital Performer.
@ SteinbergNuendo4
Represents Steinberg Nuendo 4.
@ AbletonLive8
Represents Ableton Live 8.
@ AvidProTools
Represents Avid Pro Tools.
@ Renoise
Represents Renoise.
@ JUCEPluginHost
Represents the JUCE AudioPluginHost.
@ SteinbergTestHost
Represents Steinberg's VST3 Test Host.
@ WaveBurner
Represents Apple WaveBurner.
@ AbletonLive11
Represents Ableton Live 11.
@ AbletonLive6
Represents Ableton Live 6.
@ ViennaEnsemblePro
Represents Vienna Ensemble Pro.
@ pluginval
Represents pluginval.
@ Reason
Represents Reason.
@ AULab
Represents AU Lab.
@ Maschine
Represents Native Instruments Maschine.
@ SteinbergWavelab7
Represents Steinberg Wavelab 7.
Image getHostIcon(int size) const
Gets the host app's icon when Inter-App Audio is used on iOS.
const char * getHostDescription() const noexcept
Returns a human-readable description of the host.
void switchToHostApplication() const
Switches to the host application when Inter-App Audio is used on iOS.
bool isInterAppAudioConnected() const
Returns true if the plugin is connected with Inter-App Audio on iOS.
static bool isInAAXAudioSuite(AudioProcessor &)
Returns true if the AudioProcessor instance is an AAX plug-in running in AudioSuite.
static String getHostPath()
Returns the complete absolute path of the host application executable.
A special array for holding a list of strings.