You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

435 lines
19KB

  1. diff --git a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp
  2. index dc2e6cc83..425f7ac23 100644
  3. --- a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp
  4. +++ b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp
  5. @@ -39,12 +39,17 @@
  6. #include <juce_audio_plugin_client/juce_audio_plugin_client.h>
  7. #include <juce_audio_plugin_client/utility/juce_CheckSettingMacros.h>
  8. -#include <juce_audio_plugin_client/utility/juce_LinuxMessageThread.h>
  9. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  10. + #include <juce_audio_plugin_client/utility/juce_LinuxMessageThread.h>
  11. +#endif
  12. #include <juce_audio_processors/utilities/juce_FlagCache.h>
  13. #include <juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp>
  14. -#include "JuceLV2Defines.h"
  15. +#ifndef JucePlugin_LV2URI
  16. + #include "JuceLV2Defines.h"
  17. +#endif
  18. +
  19. #include <juce_audio_processors/format_types/juce_LV2Common.h>
  20. #include <fstream>
  21. @@ -693,6 +698,7 @@ public:
  22. return LV2_STATE_SUCCESS;
  23. }
  24. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  25. std::unique_ptr<AudioProcessorEditor> createEditor()
  26. {
  27. return std::unique_ptr<AudioProcessorEditor> (processor->createEditorIfNeeded());
  28. @@ -702,6 +708,7 @@ public:
  29. {
  30. processor->editorBeingDeleted (editor);
  31. }
  32. + #endif
  33. static std::unique_ptr<AudioProcessor> createProcessorInstance()
  34. {
  35. @@ -759,7 +766,7 @@ private:
  36. ScopedJuceInitialiser_GUI scopedJuceInitialiser;
  37. - #if JUCE_LINUX || JUCE_BSD
  38. + #if (JUCE_LINUX || JUCE_BSD) && ! JUCE_AUDIOPROCESSOR_NO_GUI
  39. SharedResourcePointer<MessageThread> messageThread;
  40. #endif
  41. @@ -842,6 +849,7 @@ private:
  42. "\tlv2:binary <" << URL::addEscapeChars (libraryPath.getFileName(), false) << "> ;\n"
  43. "\trdfs:seeAlso <dsp.ttl> .\n";
  44. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  45. if (proc.hasEditor())
  46. {
  47. #if JUCE_MAC
  48. @@ -861,6 +869,7 @@ private:
  49. "\trdfs:seeAlso <ui.ttl> .\n"
  50. "\n";
  51. }
  52. + #endif
  53. for (auto i = 0, end = proc.getNumPrograms(); i < end; ++i)
  54. {
  55. @@ -1088,8 +1097,10 @@ private:
  56. os << "<" JucePlugin_LV2URI ">\n";
  57. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  58. if (proc.hasEditor())
  59. os << "\tui:ui <" << JucePluginLV2UriUi << "> ;\n";
  60. + #endif
  61. const auto versionParts = StringArray::fromTokens (JucePlugin_VersionString, ".", "");
  62. @@ -1293,6 +1304,7 @@ private:
  63. static Result writeUiTtl (AudioProcessor& proc, const File& libraryPath)
  64. {
  65. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  66. if (! proc.hasEditor())
  67. return Result::ok();
  68. @@ -1331,6 +1343,7 @@ private:
  69. "\topts:supportedOption\n"
  70. "\t\tui:scaleFactor ,\n"
  71. "\t\tparam:sampleRate .\n";
  72. + #endif
  73. return Result::ok();
  74. }
  75. @@ -1459,6 +1472,7 @@ static Optional<float> findScaleFactor (const LV2_URID_Map* symap, const LV2_Opt
  76. return parser.parseNumericOption<float> (scaleFactorOption);
  77. }
  78. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  79. class LV2UIInstance : private Component,
  80. private ComponentListener
  81. {
  82. @@ -1771,6 +1785,7 @@ LV2_SYMBOL_EXPORT const LV2UI_Descriptor* lv2ui_descriptor (uint32_t index)
  83. return &descriptor;
  84. }
  85. +#endif
  86. }
  87. }
  88. diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp
  89. index df3a1e8a9..e0b75a685 100644
  90. --- a/modules/juce_audio_processors/juce_audio_processors.cpp
  91. +++ b/modules/juce_audio_processors/juce_audio_processors.cpp
  92. @@ -34,7 +34,9 @@
  93. #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
  94. #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
  95. -#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1
  96. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  97. + #define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1
  98. +#endif
  99. #define JUCE_GUI_BASICS_INCLUDE_SCOPED_THREAD_DPI_AWARENESS_SETTER 1
  100. #define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1
  101. @@ -42,7 +44,7 @@
  102. #include <juce_gui_extra/juce_gui_extra.h>
  103. //==============================================================================
  104. -#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD)
  105. +#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD) && ! JUCE_AUDIOPROCESSOR_NO_GUI
  106. #include <X11/Xlib.h>
  107. #include <X11/Xutil.h>
  108. #include <sys/utsname.h>
  109. @@ -196,9 +198,11 @@ private:
  110. #include "format_types/juce_LegacyAudioParameter.cpp"
  111. #include "processors/juce_AudioProcessor.cpp"
  112. #include "processors/juce_AudioPluginInstance.cpp"
  113. -#include "processors/juce_AudioProcessorEditor.cpp"
  114. #include "processors/juce_AudioProcessorGraph.cpp"
  115. -#include "processors/juce_GenericAudioProcessorEditor.cpp"
  116. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  117. + #include "processors/juce_AudioProcessorEditor.cpp"
  118. + #include "processors/juce_GenericAudioProcessorEditor.cpp"
  119. +#endif
  120. #include "processors/juce_PluginDescription.cpp"
  121. #include "format_types/juce_ARACommon.cpp"
  122. #include "format_types/juce_LADSPAPluginFormat.cpp"
  123. @@ -206,9 +210,11 @@ private:
  124. #include "format_types/juce_VST3PluginFormat.cpp"
  125. #include "format_types/juce_AudioUnitPluginFormat.mm"
  126. #include "format_types/juce_ARAHosting.cpp"
  127. -#include "scanning/juce_KnownPluginList.cpp"
  128. -#include "scanning/juce_PluginDirectoryScanner.cpp"
  129. -#include "scanning/juce_PluginListComponent.cpp"
  130. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  131. + #include "scanning/juce_KnownPluginList.cpp"
  132. + #include "scanning/juce_PluginDirectoryScanner.cpp"
  133. + #include "scanning/juce_PluginListComponent.cpp"
  134. +#endif
  135. #include "processors/juce_AudioProcessorParameterGroup.cpp"
  136. #include "utilities/juce_AudioProcessorParameterWithID.cpp"
  137. #include "utilities/juce_RangedAudioParameter.cpp"
  138. @@ -216,7 +222,9 @@ private:
  139. #include "utilities/juce_AudioParameterInt.cpp"
  140. #include "utilities/juce_AudioParameterBool.cpp"
  141. #include "utilities/juce_AudioParameterChoice.cpp"
  142. -#include "utilities/juce_ParameterAttachments.cpp"
  143. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  144. + #include "utilities/juce_ParameterAttachments.cpp"
  145. +#endif
  146. #include "utilities/juce_AudioProcessorValueTreeState.cpp"
  147. #include "utilities/juce_PluginHostType.cpp"
  148. #include "utilities/juce_NativeScaleFactorNotifier.cpp"
  149. @@ -233,3 +241,8 @@ private:
  150. #include "format_types/juce_LV2PluginFormat_test.cpp"
  151. #endif
  152. #endif
  153. +
  154. +#if JUCE_AUDIOPROCESSOR_NO_GUI
  155. +// commonly used classes in DSP code
  156. +namespace juce { Colour::Colour(juce::uint32) noexcept {} }
  157. +#endif
  158. diff --git a/modules/juce_audio_processors/juce_audio_processors.h b/modules/juce_audio_processors/juce_audio_processors.h
  159. index 1664b90ae..389caf794 100644
  160. --- a/modules/juce_audio_processors/juce_audio_processors.h
  161. +++ b/modules/juce_audio_processors/juce_audio_processors.h
  162. @@ -138,14 +138,18 @@
  163. #include "processors/juce_AudioProcessorParameter.h"
  164. #include "processors/juce_HostedAudioProcessorParameter.h"
  165. #include "processors/juce_AudioProcessorEditorHostContext.h"
  166. -#include "processors/juce_AudioProcessorEditor.h"
  167. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  168. + #include "processors/juce_AudioProcessorEditor.h"
  169. +#endif
  170. #include "processors/juce_AudioProcessorListener.h"
  171. #include "processors/juce_AudioProcessorParameterGroup.h"
  172. #include "processors/juce_AudioProcessor.h"
  173. #include "processors/juce_PluginDescription.h"
  174. #include "processors/juce_AudioPluginInstance.h"
  175. #include "processors/juce_AudioProcessorGraph.h"
  176. -#include "processors/juce_GenericAudioProcessorEditor.h"
  177. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  178. + #include "processors/juce_GenericAudioProcessorEditor.h"
  179. +#endif
  180. #include "format/juce_AudioPluginFormat.h"
  181. #include "format/juce_AudioPluginFormatManager.h"
  182. #include "scanning/juce_KnownPluginList.h"
  183. @@ -164,7 +168,9 @@
  184. #include "utilities/juce_AudioParameterInt.h"
  185. #include "utilities/juce_AudioParameterBool.h"
  186. #include "utilities/juce_AudioParameterChoice.h"
  187. -#include "utilities/juce_ParameterAttachments.h"
  188. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  189. + #include "utilities/juce_ParameterAttachments.h"
  190. +#endif
  191. #include "utilities/juce_AudioProcessorValueTreeState.h"
  192. #include "utilities/juce_PluginHostType.h"
  193. #include "utilities/ARA/juce_ARA_utils.h"
  194. diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp
  195. index 53aa9c3d8..a84bd22be 100644
  196. --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp
  197. +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp
  198. @@ -50,12 +50,14 @@ AudioProcessor::AudioProcessor (const BusesProperties& ioConfig)
  199. AudioProcessor::~AudioProcessor()
  200. {
  201. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  202. {
  203. const ScopedLock sl (activeEditorLock);
  204. // ooh, nasty - the editor should have been deleted before its AudioProcessor.
  205. jassert (activeEditor == nullptr);
  206. }
  207. + #endif
  208. #if JUCE_DEBUG && ! JUCE_DISABLE_AUDIOPROCESSOR_BEGIN_END_GESTURE_CHECKING
  209. // This will fail if you've called beginParameterChangeGesture() for one
  210. @@ -874,6 +876,7 @@ void AudioProcessor::audioIOChanged (bool busNumberChanged, bool channelNumChang
  211. processorLayoutsChanged();
  212. }
  213. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  214. //==============================================================================
  215. void AudioProcessor::editorBeingDeleted (AudioProcessorEditor* const editor) noexcept
  216. {
  217. @@ -910,6 +913,7 @@ AudioProcessorEditor* AudioProcessor::createEditorIfNeeded()
  218. return ed;
  219. }
  220. +#endif
  221. //==============================================================================
  222. void AudioProcessor::getCurrentProgramStateInformation (juce::MemoryBlock& destData)
  223. diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h
  224. index 36e9769f2..27b5eb9cd 100644
  225. --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h
  226. +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h
  227. @@ -949,6 +949,7 @@ public:
  228. */
  229. virtual void setNonRealtime (bool isNonRealtime) noexcept;
  230. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  231. //==============================================================================
  232. /** Creates the processor's GUI.
  233. @@ -998,6 +999,7 @@ public:
  234. This may call createEditor() internally to create the component.
  235. */
  236. AudioProcessorEditor* createEditorIfNeeded();
  237. + #endif
  238. //==============================================================================
  239. /** Returns the default number of steps for a parameter.
  240. @@ -1209,9 +1211,11 @@ public:
  241. virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return {}; }
  242. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  243. //==============================================================================
  244. /** Not for public use - this is called before deleting an editor component. */
  245. void editorBeingDeleted (AudioProcessorEditor*) noexcept;
  246. + #endif
  247. /** Flags to indicate the type of plugin context in which a processor is being used. */
  248. enum WrapperType
  249. @@ -1241,7 +1245,9 @@ public:
  250. struct TrackProperties
  251. {
  252. String name; // The name of the track - this will be empty if the track name is not known
  253. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  254. Colour colour; // The colour of the track - this will be transparentBlack if the colour is not known
  255. + #endif
  256. // other properties may be added in the future
  257. };
  258. @@ -1490,7 +1496,9 @@ private:
  259. //==============================================================================
  260. Array<AudioProcessorListener*> listeners;
  261. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  262. Component::SafePointer<AudioProcessorEditor> activeEditor;
  263. + #endif
  264. double currentSampleRate = 0;
  265. int blockSize = 0, latencySamples = 0;
  266. bool suspended = false;
  267. diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp
  268. index ea943564b..6a0bed1af 100644
  269. --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp
  270. +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp
  271. @@ -1568,8 +1568,10 @@ bool AudioProcessorGraph::AudioGraphIOProcessor::producesMidi() const
  272. bool AudioProcessorGraph::AudioGraphIOProcessor::isInput() const noexcept { return type == audioInputNode || type == midiInputNode; }
  273. bool AudioProcessorGraph::AudioGraphIOProcessor::isOutput() const noexcept { return type == audioOutputNode || type == midiOutputNode; }
  274. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  275. bool AudioProcessorGraph::AudioGraphIOProcessor::hasEditor() const { return false; }
  276. AudioProcessorEditor* AudioProcessorGraph::AudioGraphIOProcessor::createEditor() { return nullptr; }
  277. +#endif
  278. int AudioProcessorGraph::AudioGraphIOProcessor::getNumPrograms() { return 0; }
  279. int AudioProcessorGraph::AudioGraphIOProcessor::getCurrentProgram() { return 0; }
  280. diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h
  281. index 5b6908824..f8e534009 100644
  282. --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h
  283. +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h
  284. @@ -364,8 +364,10 @@ public:
  285. bool acceptsMidi() const override;
  286. bool producesMidi() const override;
  287. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  288. bool hasEditor() const override;
  289. AudioProcessorEditor* createEditor() override;
  290. + #endif
  291. int getNumPrograms() override;
  292. int getCurrentProgram() override;
  293. @@ -401,8 +403,10 @@ public:
  294. bool acceptsMidi() const override;
  295. bool producesMidi() const override;
  296. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  297. bool hasEditor() const override { return false; }
  298. AudioProcessorEditor* createEditor() override { return nullptr; }
  299. + #endif
  300. int getNumPrograms() override { return 0; }
  301. int getCurrentProgram() override { return 0; }
  302. void setCurrentProgram (int) override { }
  303. diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp
  304. index caf7eb798..1d59658ab 100644
  305. --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp
  306. +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp
  307. @@ -473,6 +473,7 @@ void AudioProcessorValueTreeState::timerCallback()
  308. }
  309. //==============================================================================
  310. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  311. template <typename Attachment, typename Control>
  312. std::unique_ptr<Attachment> makeAttachment (const AudioProcessorValueTreeState& stateToUse,
  313. const String& parameterID,
  314. @@ -505,6 +506,7 @@ AudioProcessorValueTreeState::ButtonAttachment::ButtonAttachment (AudioProcessor
  315. : attachment (makeAttachment<ButtonParameterAttachment> (stateToUse, parameterID, button))
  316. {
  317. }
  318. +#endif
  319. //==============================================================================
  320. //==============================================================================
  321. diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h
  322. index 4c498f9b2..4e33e2a67 100644
  323. --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h
  324. +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h
  325. @@ -526,6 +526,7 @@ public:
  326. friend class AudioProcessorValueTreeState::ParameterAdapter;
  327. };
  328. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  329. //==============================================================================
  330. /** An object of this class maintains a connection between a Slider and a parameter
  331. in an AudioProcessorValueTreeState.
  332. @@ -593,6 +594,7 @@ public:
  333. std::unique_ptr<ButtonParameterAttachment> attachment;
  334. JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ButtonAttachment)
  335. };
  336. + #endif
  337. private:
  338. //==============================================================================
  339. diff --git a/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp b/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp
  340. index 6651bddf8..d03d4f792 100644
  341. --- a/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp
  342. +++ b/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp
  343. @@ -70,6 +70,7 @@ bool PluginHostType::isInAAXAudioSuite (AudioProcessor& processor)
  344. return false;
  345. }
  346. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  347. Image PluginHostType::getHostIcon (int size) const
  348. {
  349. ignoreUnused (size);
  350. @@ -86,6 +87,7 @@ Image PluginHostType::getHostIcon (int size) const
  351. return Image();
  352. }
  353. +#endif
  354. const char* PluginHostType::getHostDescription() const noexcept
  355. {
  356. diff --git a/modules/juce_audio_processors/utilities/juce_PluginHostType.h b/modules/juce_audio_processors/utilities/juce_PluginHostType.h
  357. index c222899fd..e5ec0a33a 100644
  358. --- a/modules/juce_audio_processors/utilities/juce_PluginHostType.h
  359. +++ b/modules/juce_audio_processors/utilities/juce_PluginHostType.h
  360. @@ -207,8 +207,10 @@ public:
  361. bool isInterAppAudioConnected() const;
  362. /** Switches to the host application when Inter-App Audio is used on iOS. */
  363. void switchToHostApplication() const;
  364. + #if ! JUCE_AUDIOPROCESSOR_NO_GUI
  365. /** Gets the host app's icon when Inter-App Audio is used on iOS. */
  366. Image getHostIcon (int size) const;
  367. + #endif
  368. //==============================================================================
  369. /** Returns the complete absolute path of the host application executable. */
  370. diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp
  371. index 1d3e3e1a5..4dfabfce5 100644
  372. --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp
  373. +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp
  374. @@ -35,7 +35,9 @@
  375. #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
  376. #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
  377. +#if ! JUCE_AUDIOPROCESSOR_NO_GUI
  378. #define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1
  379. +#endif
  380. #include <juce_audio_plugin_client/juce_audio_plugin_client.h>
  381. #include <juce_audio_plugin_client/detail/juce_CheckSettingMacros.h>