LMMS
Loading...
Searching...
No Matches
juce_AudioProcessor.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
46{
47protected:
48 struct BusesProperties;
49
50 //==============================================================================
57
63 AudioProcessor (const BusesProperties& ioLayouts);
64
68 AudioProcessor (const std::initializer_list<const short[2]>& channelLayoutList)
70 {
71 }
72
73public:
74 //==============================================================================
80
81 enum class Realtime
82 {
85 };
86
88
89 //==============================================================================
91 virtual ~AudioProcessor();
92
93 //==============================================================================
95 virtual const String getName() const = 0;
96
105
106 //==============================================================================
125 virtual void prepareToPlay (double sampleRate,
126 int maximumExpectedSamplesPerBlock) = 0;
127
131 virtual void releaseResources() = 0;
132
142
207 virtual void processBlock (AudioBuffer<float>& buffer,
208 MidiBuffer& midiMessages) = 0;
209
278 virtual void processBlock (AudioBuffer<double>& buffer,
279 MidiBuffer& midiMessages);
280
290 virtual void processBlockBypassed (AudioBuffer<float>& buffer,
291 MidiBuffer& midiMessages);
292
302 virtual void processBlockBypassed (AudioBuffer<double>& buffer,
303 MidiBuffer& midiMessages);
304
305
306 //==============================================================================
311 {
314
317
319 int getNumChannels (bool isInput, int busIndex) const noexcept
320 {
321 auto& bus = (isInput ? inputBuses : outputBuses);
322 return isPositiveAndBelow (busIndex, bus.size()) ? bus.getReference (busIndex).size() : 0;
323 }
324
326 AudioChannelSet& getChannelSet (bool isInput, int busIndex) noexcept
327 {
328 return (isInput ? inputBuses : outputBuses).getReference (busIndex);
329 }
330
332 AudioChannelSet getChannelSet (bool isInput, int busIndex) const noexcept
333 {
334 return (isInput ? inputBuses : outputBuses)[busIndex];
335 }
336
339
342
345
348
349 bool operator== (const BusesLayout& other) const noexcept { return inputBuses == other.inputBuses && outputBuses == other.outputBuses; }
350 bool operator!= (const BusesLayout& other) const noexcept { return inputBuses != other.inputBuses || outputBuses != other.outputBuses; }
351 };
352
353 //==============================================================================
360 class Bus
361 {
362 public:
364 bool isInput() const noexcept;
365
367 int getBusIndex() const noexcept;
368
370 bool isMain() const noexcept { return getBusIndex() == 0; }
371
372 //==============================================================================
374 const String& getName() const noexcept { return name; }
375
380
381 //==============================================================================
387
394
399 bool setCurrentLayout (const AudioChannelSet& layout);
400
405 bool setCurrentLayoutWithoutEnabling (const AudioChannelSet& layout);
406
409
413 bool setNumberOfChannels (int channels);
414
415 //==============================================================================
427 bool isLayoutSupported (const AudioChannelSet& set, BusesLayout* currentLayout = nullptr) const;
428
430 bool isNumberOfChannelsSupported (int channels) const;
431
433 AudioChannelSet supportedLayoutWithChannels (int channels) const;
434
438 int getMaxSupportedChannels (int limit = AudioChannelSet::maxChannelsOfNamedLayout) const;
439
448 BusesLayout getBusesLayoutForLayoutChangeOfBus (const AudioChannelSet& set) const;
449
450 //==============================================================================
452 bool isEnabled() const noexcept { return ! layout.isDisabled(); }
453
456 bool enable (bool shouldEnable = true);
457
460
461 //==============================================================================
466 int getChannelIndexInProcessBlockBuffer (int channelIndex) const noexcept;
467
468
473 template <typename FloatType>
475 {
476 auto di = getDirectionAndIndex();
477 return owner.getBusBuffer (processBlockBuffer, di.isInput, di.index);
478 }
479
480 private:
481 friend class AudioProcessor;
482 Bus (AudioProcessor&, const String&, const AudioChannelSet&, bool);
483
485 {
487 int index;
488 };
489
492
498
500 };
501
502 //==============================================================================
504 int getBusCount (bool isInput) const noexcept { return (isInput ? inputBuses : outputBuses).size(); }
505
509 Bus* getBus (bool isInput, int busIndex) noexcept { return getBusImpl (*this, isInput, busIndex); }
510
514 const Bus* getBus (bool isInput, int busIndex) const noexcept { return getBusImpl (*this, isInput, busIndex); }
515
516 //==============================================================================
527 virtual bool canAddBus (bool isInput) const { ignoreUnused (isInput); return false; }
528
540 virtual bool canRemoveBus (bool isInput) const { ignoreUnused (isInput); return false; }
541
556 bool addBus (bool isInput);
557
574 bool removeBus (bool isInput);
575
576 //==============================================================================
584 bool setBusesLayout (const BusesLayout&);
585
593 bool setBusesLayoutWithoutEnabling (const BusesLayout&);
594
596 BusesLayout getBusesLayout() const;
597
603 AudioChannelSet getChannelLayoutOfBus (bool isInput, int busIndex) const noexcept;
604
610 bool setChannelLayoutOfBus (bool isInput, int busIndex, const AudioChannelSet& layout);
611
616 inline int getChannelCountOfBus (bool isInput, int busIndex) const noexcept
617 {
618 if (auto* bus = getBus (isInput, busIndex))
619 return bus->getNumberOfChannels();
620
621 return 0;
622 }
623
625 bool enableAllBuses();
626
628 bool disableNonMainBuses();
629
630 //==============================================================================
635 int getChannelIndexInProcessBlockBuffer (bool isInput, int busIndex, int channelIndex) const noexcept;
636
643 int getOffsetInBusBufferForAbsoluteChannelIndex (bool isInput, int absoluteChannelIndex, int& busIndex) const noexcept;
644
649 template <typename FloatType>
650 AudioBuffer<FloatType> getBusBuffer (AudioBuffer<FloatType>& processBlockBuffer, bool isInput, int busIndex) const
651 {
652 auto busNumChannels = getChannelCountOfBus (isInput, busIndex);
653 auto channelOffset = getChannelIndexInProcessBlockBuffer (isInput, busIndex, 0);
654
655 return AudioBuffer<FloatType> (processBlockBuffer.getArrayOfWritePointers() + channelOffset,
656 busNumChannels, processBlockBuffer.getNumSamples());
657 }
658
659 //==============================================================================
663 bool checkBusesLayoutSupported (const BusesLayout&) const;
664
665 //==============================================================================
674 virtual bool supportsDoublePrecisionProcessing() const;
675
682
685
700 void setProcessingPrecision (ProcessingPrecision newPrecision) noexcept;
701
702 //==============================================================================
719
720 //==============================================================================
734
748
751
754
755 //==============================================================================
768 static bool containsLayout (const BusesLayout& layouts, const std::initializer_list<const short[2]>& channelLayoutList)
769 {
770 return containsLayout (layouts, layoutListToArray (channelLayoutList));
771 }
772
773 template <size_t numLayouts>
774 static bool containsLayout (const BusesLayout& layouts, const short (&channelLayoutList) [numLayouts][2])
775 {
776 return containsLayout (layouts, layoutListToArray (channelLayoutList));
777 }
778
790 template <size_t numLayouts>
792 const short (&channelLayoutList) [numLayouts][2])
793 {
794 return getNextBestLayoutInList (layouts, layoutListToArray (channelLayoutList));
795 }
796
797 //==============================================================================
804
815
816 //==============================================================================
817
825
831 void setLatencySamples (int newLatency);
832
834 virtual double getTailLengthSeconds() const = 0;
835
837 virtual bool acceptsMidi() const = 0;
838
840 virtual bool producesMidi() const = 0;
841
843 virtual bool supportsMPE() const { return false; }
844
846 virtual bool isMidiEffect() const { return false; }
847
848 //==============================================================================
861
890 void suspendProcessing (bool shouldBeSuspended);
891
896
902 virtual void reset();
903
904 //==============================================================================
917 virtual AudioProcessorParameter* getBypassParameter() const { return nullptr; }
918
919 //==============================================================================
931
946
950 virtual void setNonRealtime (bool isNonRealtime) noexcept;
951
952 #if ! JUCE_AUDIOPROCESSOR_NO_GUI
953 //==============================================================================
982
987 virtual bool hasEditor() const = 0;
988
989 //==============================================================================
997
1002 #endif
1003
1004 //==============================================================================
1013
1019 void updateHostDisplay (const ChangeDetails& details = ChangeDetails::getDefaultFlags());
1020
1021 //==============================================================================
1028
1037
1040
1050
1057 virtual void refreshParameterList();
1058
1061
1062 //==============================================================================
1070 virtual int getNumPrograms() = 0;
1071
1073 virtual int getCurrentProgram() = 0;
1074
1076 virtual void setCurrentProgram (int index) = 0;
1077
1079 virtual const String getProgramName (int index) = 0;
1080
1082 virtual void changeProgramName (int index, const String& newName) = 0;
1083
1084 //==============================================================================
1097 virtual void getStateInformation (juce::MemoryBlock& destData) = 0;
1098
1110 virtual void getCurrentProgramStateInformation (juce::MemoryBlock& destData);
1111
1122 virtual void setStateInformation (const void* data, int sizeInBytes) = 0;
1123
1133 virtual void setCurrentProgramStateInformation (const void* data, int sizeInBytes);
1134
1136 virtual void numChannelsChanged();
1137
1139 virtual void numBusesChanged();
1140
1142 virtual void processorLayoutsChanged();
1143
1144 //==============================================================================
1146 virtual void addListener (AudioProcessorListener* newListener);
1147
1149 virtual void removeListener (AudioProcessorListener* listenerToRemove);
1150
1151 //==============================================================================
1156 virtual void setPlayHead (AudioPlayHead* newPlayHead);
1157
1158 //==============================================================================
1162 void setPlayConfigDetails (int numIns, int numOuts, double sampleRate, int blockSize);
1163
1170 void setRateAndBufferSizeDetails (double sampleRate, int blockSize) noexcept;
1171
1172 //==============================================================================
1183 const AudioChannelSet& mainOutputLayout,
1184 bool idForAudioSuite) const;
1185
1186 //==============================================================================
1192 {
1193 enum class Type : int
1194 {
1195 EQ, // an EQ curve - input is in Hz, output is in dB
1196 Dynamics, // a dynamics curve - input and output is in dB
1197 GainReduction, // a gain reduction curve - input and output is in dB
1198
1199 Unknown = -1
1200 };
1201
1202 std::function<float (float)> curve; // a function which represents your curve (such as an eq)
1203 Range<float> xRange, yRange; // the data range of your curve
1204
1205 // For some curve types, your plug-in may already measure the current input and output values.
1206 // An host can use to indicate where on the curve the current signal is (for example
1207 // by putting a dot on the curve). Simply leave these strings empty if you do not want to
1208 // support this.
1210 };
1211
1212 virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return {}; }
1213
1214 #if ! JUCE_AUDIOPROCESSOR_NO_GUI
1215 //==============================================================================
1217 void editorBeingDeleted (AudioProcessorEditor*) noexcept;
1218 #endif
1219
1233
1238
1240 static const char* getWrapperTypeDescription (AudioProcessor::WrapperType) noexcept;
1241
1242
1246 {
1247 String name; // The name of the track - this will be empty if the track name is not known
1248 #if ! JUCE_AUDIOPROCESSOR_NO_GUI
1249 Colour colour; // The colour of the track - this will be transparentBlack if the colour is not known
1250 #endif
1251
1252 // other properties may be added in the future
1253 };
1254
1269 virtual void updateTrackProperties (const TrackProperties& properties);
1270
1271 //==============================================================================
1280 static void copyXmlToBinary (const XmlElement& xml,
1281 juce::MemoryBlock& destData);
1282
1286 static std::unique_ptr<XmlElement> getXmlFromBinary (const void* data, int sizeInBytes);
1287
1290
1291protected:
1303 virtual bool isBusesLayoutSupported (const BusesLayout&) const { return true; }
1304
1336 virtual bool canApplyBusesLayout (const BusesLayout& layouts) const { return isBusesLayoutSupported (layouts); }
1337
1343 virtual bool applyBusLayouts (const BusesLayout& layouts);
1344
1345 //==============================================================================
1358
1361 {
1364
1367
1368 void addBus (bool isInput, const String& name, const AudioChannelSet& defaultLayout, bool isActivatedByDefault = true);
1369
1370 JUCE_NODISCARD BusesProperties withInput (const String& name, const AudioChannelSet& defaultLayout, bool isActivatedByDefault = true) const;
1371 JUCE_NODISCARD BusesProperties withOutput (const String& name, const AudioChannelSet& defaultLayout, bool isActivatedByDefault = true) const;
1372 };
1373
1398 virtual bool canApplyBusCountChange (bool isInput, bool isAddingBuses,
1399 BusProperties& outNewBusProperties);
1400
1401 //==============================================================================
1403 std::atomic<AudioPlayHead*> playHead { nullptr };
1404
1406 void sendParamChangeMessageToListeners (int parameterIndex, float newValue);
1407
1408public:
1409 #ifndef DOXYGEN
1410 // These methods are all deprecated in favour of using AudioProcessorParameter
1411 // and AudioProcessorParameterGroup
1412 [[deprecated]] virtual int getNumParameters();
1413 [[deprecated]] virtual const String getParameterName (int parameterIndex);
1414 [[deprecated]] virtual String getParameterID (int index);
1415 [[deprecated]] virtual float getParameter (int parameterIndex);
1416 [[deprecated]] virtual String getParameterName (int parameterIndex, int maximumStringLength);
1417 [[deprecated]] virtual const String getParameterText (int parameterIndex);
1418 [[deprecated]] virtual String getParameterText (int parameterIndex, int maximumStringLength);
1419 [[deprecated]] virtual int getParameterNumSteps (int parameterIndex);
1420 [[deprecated]] virtual bool isParameterDiscrete (int parameterIndex) const;
1421 [[deprecated]] virtual float getParameterDefaultValue (int parameterIndex);
1422 [[deprecated]] virtual String getParameterLabel (int index) const;
1423 [[deprecated]] virtual bool isParameterOrientationInverted (int index) const;
1424 [[deprecated]] virtual void setParameter (int parameterIndex, float newValue);
1425 [[deprecated]] virtual bool isParameterAutomatable (int parameterIndex) const;
1426 [[deprecated]] virtual bool isMetaParameter (int parameterIndex) const;
1427 [[deprecated]] virtual AudioProcessorParameter::Category getParameterCategory (int parameterIndex) const;
1428 [[deprecated]] void beginParameterChangeGesture (int parameterIndex);
1429 [[deprecated]] void endParameterChangeGesture (int parameterIndex);
1430 [[deprecated]] void setParameterNotifyingHost (int parameterIndex, float newValue);
1431
1432 // These functions are deprecated: your audio processor can inform the host
1433 // on its bus and channel layouts and names using the AudioChannelSet and various bus classes.
1438 [[deprecated]] virtual const String getInputChannelName (int channelIndex) const;
1439 [[deprecated]] virtual const String getOutputChannelName (int channelIndex) const;
1440 [[deprecated]] virtual bool isInputChannelStereoPair (int index) const;
1441 [[deprecated]] virtual bool isOutputChannelStereoPair (int index) const;
1442 #endif
1443
1444private:
1445 //==============================================================================
1447 {
1448 InOutChannelPair() = default;
1449
1450 InOutChannelPair (int16 inCh, int16 outCh) noexcept : inChannels (inCh), outChannels (outCh) {}
1452
1453 bool operator== (const InOutChannelPair& other) const noexcept
1454 {
1455 return other.inChannels == inChannels && other.outChannels == outChannels;
1456 }
1457
1459 };
1460
1461 template <size_t numLayouts>
1462 static Array<InOutChannelPair> layoutListToArray (const short (&configuration) [numLayouts][2])
1463 {
1465
1466 for (size_t i = 0; i < numLayouts; ++i)
1467 layouts.add (InOutChannelPair (configuration[(int) i]));
1468
1469 return layouts;
1470 }
1471
1472 static Array<InOutChannelPair> layoutListToArray (const std::initializer_list<const short[2]>& configuration)
1473 {
1475
1476 for (auto&& i : configuration)
1477 layouts.add (InOutChannelPair (i));
1478
1479 return layouts;
1480 }
1481
1482 template <typename This>
1483 static auto getBusImpl (This& t, bool isInput, int busIndex) -> decltype (t.getBus (isInput, busIndex))
1484 {
1485 return (isInput ? t.inputBuses : t.outputBuses)[busIndex];
1486 }
1487
1488 //==============================================================================
1489 static BusesProperties busesPropertiesFromLayoutArray (const Array<InOutChannelPair>&);
1490
1491 BusesLayout getNextBestLayoutInList (const BusesLayout&, const Array<InOutChannelPair>&) const;
1492 static bool containsLayout (const BusesLayout&, const Array<InOutChannelPair>&);
1493
1494 //==============================================================================
1495 void createBus (bool isInput, const BusProperties&);
1496
1497 //==============================================================================
1499 #if ! JUCE_AUDIOPROCESSOR_NO_GUI
1501 #endif
1504 bool suspended = false;
1505 std::atomic<bool> nonRealtime { false };
1508
1509 friend class Bus;
1511
1514
1517
1519
1520 #if JUCE_DEBUG
1521 #if ! JUCE_DISABLE_AUDIOPROCESSOR_BEGIN_END_GESTURE_CHECKING
1522 BigInteger changingParams;
1523 #endif
1524
1525 bool textRecursionCheck = false;
1526 std::unordered_set<String> paramIDs, groupIDs;
1527 #if ! JUCE_DISABLE_CAUTIOUS_PARAMETER_ID_CHECKING
1528 std::unordered_set<String> trimmedParamIDs;
1529 #endif
1530 #endif
1531
1536
1537 AudioProcessorListener* getListenerLocked (int) const noexcept;
1539 void audioIOChanged (bool busNumberChanged, bool channelNumChanged);
1540 void getNextBestLayout (const BusesLayout&, BusesLayout&) const;
1541
1542 template <typename floatType>
1544
1547
1548 [[deprecated ("This method is no longer used - you can delete it from your AudioProcessor classes.")]]
1549 virtual bool silenceInProducesSilenceOut() const { return false; }
1550
1552};
1553
1554} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
T limit(T val, T min, T max)
Definition Util.h:78
Definition EQ.h:30
Definition juce_Array.h:56
void add(const ElementType &newElement)
Definition juce_Array.h:418
Definition juce_AudioSampleBuffer.h:34
int getNumSamples() const noexcept
Definition juce_AudioSampleBuffer.h:242
Type ** getArrayOfWritePointers() noexcept
Definition juce_AudioSampleBuffer.h:342
Definition juce_AudioChannelSet.h:47
@ maxChannelsOfNamedLayout
Definition juce_AudioChannelSet.h:438
Definition juce_AudioPlayHead.h:39
Definition juce_AudioProcessor.h:361
AudioChannelSet lastLayout
Definition juce_AudioProcessor.h:495
const AudioChannelSet & getCurrentLayout() const noexcept
Definition juce_AudioProcessor.h:386
AudioProcessor & owner
Definition juce_AudioProcessor.h:493
friend class AudioProcessor
Definition juce_AudioProcessor.h:481
const AudioChannelSet & getDefaultLayout() const noexcept
Definition juce_AudioProcessor.h:379
BusDirectionAndIndex getDirectionAndIndex() const noexcept
Definition juce_AudioProcessor.cpp:1002
String name
Definition juce_AudioProcessor.h:494
int getBusIndex() const noexcept
Definition juce_AudioProcessor.cpp:1000
void updateChannelCount() noexcept
Definition juce_AudioProcessor.cpp:1158
AudioChannelSet dfltLayout
Definition juce_AudioProcessor.h:495
int getNumberOfChannels() const noexcept
Definition juce_AudioProcessor.h:408
const String & getName() const noexcept
Definition juce_AudioProcessor.h:374
bool isEnabledByDefault() const noexcept
Definition juce_AudioProcessor.h:459
AudioBuffer< FloatType > getBusBuffer(AudioBuffer< FloatType > &processBlockBuffer) const
Definition juce_AudioProcessor.h:474
bool isMain() const noexcept
Definition juce_AudioProcessor.h:370
AudioChannelSet layout
Definition juce_AudioProcessor.h:495
bool isEnabled() const noexcept
Definition juce_AudioProcessor.h:452
bool isInput() const noexcept
Definition juce_AudioProcessor.cpp:999
Bus(AudioProcessor &, const String &, const AudioChannelSet &, bool)
Definition juce_AudioProcessor.cpp:988
bool enabledByDefault
Definition juce_AudioProcessor.h:496
const AudioChannelSet & getLastEnabledLayout() const noexcept
Definition juce_AudioProcessor.h:393
int cachedChannelCount
Definition juce_AudioProcessor.h:497
Definition juce_AudioProcessorEditor.h:43
Definition juce_AudioProcessor.h:46
virtual bool canApplyBusesLayout(const BusesLayout &layouts) const
Definition juce_AudioProcessor.h:1336
Array< AudioProcessorListener * > listeners
Definition juce_AudioProcessor.h:1498
friend class AudioProcessorParameter
Definition juce_AudioProcessor.h:1545
static Array< InOutChannelPair > layoutListToArray(const short(&configuration)[numLayouts][2])
Definition juce_AudioProcessor.h:1462
int getTotalNumInputChannels() const noexcept
Definition juce_AudioProcessor.h:733
bool isNonRealtime() const noexcept
Definition juce_AudioProcessor.h:930
void processBypassed(AudioBuffer< floatType > &, MidiBuffer &)
Definition juce_AudioProcessor.cpp:587
int getNumOutputChannels() const noexcept
Definition juce_AudioProcessor.h:1435
int getChannelIndexInProcessBlockBuffer(bool isInput, int busIndex, int channelIndex) const noexcept
Definition juce_AudioProcessor.cpp:381
bool suspended
Definition juce_AudioProcessor.h:1504
virtual bool acceptsMidi() const =0
void audioIOChanged(bool busNumberChanged, bool channelNumChanged)
Definition juce_AudioProcessor.cpp:840
WrapperType
Definition juce_AudioProcessor.h:1222
@ wrapperType_Standalone
Definition juce_AudioProcessor.h:1229
@ wrapperType_VST
Definition juce_AudioProcessor.h:1224
@ wrapperType_AAX
Definition juce_AudioProcessor.h:1228
@ wrapperType_Undefined
Definition juce_AudioProcessor.h:1223
@ wrapperType_AudioUnitv3
Definition juce_AudioProcessor.h:1227
@ wrapperType_Unity
Definition juce_AudioProcessor.h:1230
@ wrapperType_LV2
Definition juce_AudioProcessor.h:1231
@ wrapperType_AudioUnit
Definition juce_AudioProcessor.h:1226
@ wrapperType_VST3
Definition juce_AudioProcessor.h:1225
virtual void processBlockBypassed(AudioBuffer< float > &buffer, MidiBuffer &midiMessages)
Definition juce_AudioProcessor.cpp:600
OwnedArray< Bus > inputBuses
Definition juce_AudioProcessor.h:1510
friend class LADSPAPluginInstance
Definition juce_AudioProcessor.h:1546
Bus * getBus(bool isInput, int busIndex) noexcept
Definition juce_AudioProcessor.h:509
Component::SafePointer< AudioProcessorEditor > activeEditor
Definition juce_AudioProcessor.h:1500
bool isUsingDoublePrecision() const noexcept
Definition juce_AudioProcessor.h:684
const WrapperType wrapperType
Definition juce_AudioProcessor.h:1237
void updateHostDisplay(const ChangeDetails &details=ChangeDetails::getDefaultFlags())
Definition juce_AudioProcessor.cpp:425
int getLatencySamples() const noexcept
Definition juce_AudioProcessor.h:824
virtual void memoryWarningReceived()
Definition juce_AudioProcessor.h:141
int cachedTotalIns
Definition juce_AudioProcessor.h:1513
void setParameterTree(AudioProcessorParameterGroup &&newTree)
Definition juce_AudioProcessor.cpp:549
ProcessingPrecision getProcessingPrecision() const noexcept
Definition juce_AudioProcessor.h:681
void addParameter(AudioProcessorParameter *)
Definition juce_AudioProcessor.cpp:517
Array< AudioProcessorParameter * > flatParameterList
Definition juce_AudioProcessor.h:1516
OwnedArray< Bus > outputBuses
Definition juce_AudioProcessor.h:1510
const String getInputSpeakerArrangement() const noexcept
Definition juce_AudioProcessor.h:1436
void updateSpeakerFormatStrings()
Definition juce_AudioProcessor.cpp:781
virtual void prepareToPlay(double sampleRate, int maximumExpectedSamplesPerBlock)=0
virtual void removeListener(AudioProcessorListener *listenerToRemove)
Definition juce_AudioProcessor.cpp:337
BusesLayout getNextBestLayoutInList(const BusesLayout &, const Array< InOutChannelPair > &) const
Definition juce_AudioProcessor.cpp:669
virtual void updateTrackProperties(const TrackProperties &properties)
Definition juce_AudioProcessor.cpp:930
std::atomic< bool > nonRealtime
Definition juce_AudioProcessor.h:1505
int getBusCount(bool isInput) const noexcept
Definition juce_AudioProcessor.h:504
virtual void getStateInformation(juce::MemoryBlock &destData)=0
ProcessingPrecision
Definition juce_AudioProcessor.h:76
@ singlePrecision
Definition juce_AudioProcessor.h:77
@ doublePrecision
Definition juce_AudioProcessor.h:78
static std::unique_ptr< XmlElement > getXmlFromBinary(const void *data, int sizeInBytes)
Definition juce_AudioProcessor.cpp:951
static BusesProperties busesPropertiesFromLayoutArray(const Array< InOutChannelPair > &)
Definition juce_AudioProcessor.cpp:656
virtual AudioProcessorParameter * getBypassParameter() const
Definition juce_AudioProcessor.h:917
virtual int getNumPrograms()=0
virtual const String getProgramName(int index)=0
virtual void setPlayHead(AudioPlayHead *newPlayHead)
Definition juce_AudioProcessor.cpp:326
virtual AudioProcessorEditor * createEditor()=0
AudioProcessor(const std::initializer_list< const short[2]> &channelLayoutList)
Definition juce_AudioProcessor.h:68
BusesLayout getNextBestLayoutInLayoutList(const BusesLayout &layouts, const short(&channelLayoutList)[numLayouts][2])
Definition juce_AudioProcessor.h:791
Realtime isRealtime() const noexcept
Definition juce_AudioProcessor.h:942
static void JUCE_CALLTYPE setTypeOfNextNewPlugin(WrapperType)
Definition juce_AudioProcessor.cpp:31
virtual void numBusesChanged()
Definition juce_AudioProcessor.cpp:378
virtual void processBlock(AudioBuffer< float > &buffer, MidiBuffer &midiMessages)=0
AudioProcessorEditor * getActiveEditor() const noexcept
Definition juce_AudioProcessor.cpp:889
int cachedTotalOuts
Definition juce_AudioProcessor.h:1513
void validateParameter(AudioProcessorParameter *)
Definition juce_AudioProcessor.cpp:432
static auto getBusImpl(This &t, bool isInput, int busIndex) -> decltype(t.getBus(isInput, busIndex))
Definition juce_AudioProcessor.h:1483
void checkForDuplicateGroupIDs(const AudioProcessorParameterGroup &)
Definition juce_AudioProcessor.cpp:496
const CriticalSection & getCallbackLock() const noexcept
Definition juce_AudioProcessor.h:860
virtual const String getName() const =0
int latencySamples
Definition juce_AudioProcessor.h:1503
double currentSampleRate
Definition juce_AudioProcessor.h:1502
static bool containsLayout(const BusesLayout &layouts, const short(&channelLayoutList)[numLayouts][2])
Definition juce_AudioProcessor.h:774
AudioProcessorEditor * createEditorIfNeeded()
Definition juce_AudioProcessor.cpp:895
virtual bool canAddBus(bool isInput) const
Definition juce_AudioProcessor.h:527
const AudioProcessorParameterGroup & getParameterTree() const
Definition juce_AudioProcessor.cpp:515
virtual void addListener(AudioProcessorListener *newListener)
Definition juce_AudioProcessor.cpp:331
virtual CurveData getResponseCurve(CurveData::Type) const
Definition juce_AudioProcessor.h:1212
bool isSuspended() const noexcept
Definition juce_AudioProcessor.h:895
std::atomic< AudioPlayHead * > playHead
Definition juce_AudioProcessor.h:1403
CriticalSection activeEditorLock
Definition juce_AudioProcessor.h:1507
int getChannelCountOfBus(bool isInput, int busIndex) const noexcept
Definition juce_AudioProcessor.h:616
const Array< AudioProcessorParameter * > & getParameters() const
Definition juce_AudioProcessor.cpp:514
virtual bool hasEditor() const =0
static bool containsLayout(const BusesLayout &layouts, const std::initializer_list< const short[2]> &channelLayoutList)
Definition juce_AudioProcessor.h:768
virtual bool supportsMPE() const
Definition juce_AudioProcessor.h:843
AudioProcessorListener::ChangeDetails ChangeDetails
Definition juce_AudioProcessor.h:87
virtual void processorLayoutsChanged()
Definition juce_AudioProcessor.cpp:379
virtual double getTailLengthSeconds() const =0
static void copyXmlToBinary(const XmlElement &xml, juce::MemoryBlock &destData)
Definition juce_AudioProcessor.cpp:936
virtual void setStateInformation(const void *data, int sizeInBytes)=0
static int getDefaultNumParameterSteps() noexcept
Definition juce_AudioProcessor.cpp:573
CriticalSection callbackLock
Definition juce_AudioProcessor.h:1507
void addParameterGroup(std::unique_ptr< AudioProcessorParameterGroup >)
Definition juce_AudioProcessor.cpp:529
CriticalSection listenerLock
Definition juce_AudioProcessor.h:1507
void setPlayConfigDetails(int numIns, int numOuts, double sampleRate, int blockSize)
Definition juce_AudioProcessor.cpp:343
void checkForDuplicateParamID(AudioProcessorParameter *)
Definition juce_AudioProcessor.cpp:481
virtual bool isBusesLayoutSupported(const BusesLayout &) const
Definition juce_AudioProcessor.h:1303
double getSampleRate() const noexcept
Definition juce_AudioProcessor.h:803
virtual bool canRemoveBus(bool isInput) const
Definition juce_AudioProcessor.h:540
virtual void setCurrentProgram(int index)=0
static Array< InOutChannelPair > layoutListToArray(const std::initializer_list< const short[2]> &configuration)
Definition juce_AudioProcessor.h:1472
Realtime
Definition juce_AudioProcessor.h:82
@ no
Definition juce_AudioProcessor.h:83
@ yes
Definition juce_AudioProcessor.h:84
virtual void numChannelsChanged()
Definition juce_AudioProcessor.cpp:377
virtual void refreshParameterList()
Definition juce_AudioProcessor.cpp:571
const String getOutputSpeakerArrangement() const noexcept
Definition juce_AudioProcessor.h:1437
virtual StringArray getAlternateDisplayNames() const
Definition juce_AudioProcessor.cpp:70
int getTotalNumOutputChannels() const noexcept
Definition juce_AudioProcessor.h:747
void checkForDuplicateTrimmedParamID(AudioProcessorParameter *)
Definition juce_AudioProcessor.cpp:447
virtual bool canApplyBusCountChange(bool isInput, bool isAddingBuses, BusProperties &outNewBusProperties)
Definition juce_AudioProcessor.cpp:965
virtual void changeProgramName(int index, const String &newName)=0
AudioProcessorListener * getListenerLocked(int) const noexcept
Definition juce_AudioProcessor.cpp:419
AudioProcessorParameter * getParamChecked(int) const
Definition juce_AudioProcessor.cpp:1489
virtual int32 getAAXPluginIDForMainBusConfig(const AudioChannelSet &mainInputLayout, const AudioChannelSet &mainOutputLayout, bool idForAudioSuite) const
Definition juce_AudioProcessor.cpp:1197
static const char * getWrapperTypeDescription(AudioProcessor::WrapperType) noexcept
Definition juce_AudioProcessor.cpp:1246
void getNextBestLayout(const BusesLayout &, BusesLayout &) const
Definition juce_AudioProcessor.cpp:224
ProcessingPrecision processingPrecision
Definition juce_AudioProcessor.h:1506
virtual bool producesMidi() const =0
int getNumInputChannels() const noexcept
Definition juce_AudioProcessor.h:1434
AudioPlayHead * getPlayHead() const noexcept
Definition juce_AudioProcessor.h:718
virtual bool silenceInProducesSilenceOut() const
Definition juce_AudioProcessor.h:1549
virtual bool isMidiEffect() const
Definition juce_AudioProcessor.h:846
int getMainBusNumInputChannels() const noexcept
Definition juce_AudioProcessor.h:750
String cachedInputSpeakerArrString
Definition juce_AudioProcessor.h:1512
int getMainBusNumOutputChannels() const noexcept
Definition juce_AudioProcessor.h:753
virtual int getCurrentProgram()=0
int getBlockSize() const noexcept
Definition juce_AudioProcessor.h:814
virtual void setCurrentProgramStateInformation(const void *data, int sizeInBytes)
Definition juce_AudioProcessor.cpp:924
void setRateAndBufferSizeDetails(double sampleRate, int blockSize) noexcept
Definition juce_AudioProcessor.cpp:370
AudioBuffer< FloatType > getBusBuffer(AudioBuffer< FloatType > &processBlockBuffer, bool isInput, int busIndex) const
Definition juce_AudioProcessor.h:650
AudioProcessorParameterGroup parameterTree
Definition juce_AudioProcessor.h:1515
String cachedOutputSpeakerArrString
Definition juce_AudioProcessor.h:1512
int blockSize
Definition juce_AudioProcessor.h:1503
AudioProcessor()
Definition juce_AudioProcessor.cpp:36
const Bus * getBus(bool isInput, int busIndex) const noexcept
Definition juce_AudioProcessor.h:514
virtual void getCurrentProgramStateInformation(juce::MemoryBlock &destData)
Definition juce_AudioProcessor.cpp:919
virtual void releaseResources()=0
Definition juce_AudioProcessorListener.h:40
Definition juce_AudioProcessorParameterGroup.h:42
Category
Definition juce_AudioProcessorParameter.h:231
Definition juce_BigInteger.h:39
Definition juce_Colour.h:38
Definition juce_Component.h:2287
Definition juce_CriticalSection.h:43
Definition juce_MemoryBlock.h:33
Definition juce_MidiBuffer.h:145
Definition juce_OwnedArray.h:51
Definition juce_Range.h:40
Definition juce_StringArray.h:35
Definition juce_String.h:53
Definition juce_XmlElement.h:83
struct huft * t
Definition inflate.c:943
register unsigned i
Definition inflate.c:1575
struct config_s config
static const char * name
Definition pugl.h:1582
JSAMPIMAGE data
Definition jpeglib.h:945
#define JUCE_NODISCARD
Definition juce_CompilerSupport.h:108
#define JUCE_DECLARE_NON_COPYABLE(className)
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define jassertfalse
#define JUCE_CALLTYPE
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
@ no
Definition juce_AlertWindow.cpp:567
@ yes
Definition juce_AlertWindow.cpp:567
signed short int16
Definition juce_MathsFunctions.h:39
void ignoreUnused(Types &&...) noexcept
Definition juce_MathsFunctions.h:333
signed int int32
Definition juce_MathsFunctions.h:43
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
Definition juce_Uuid.h:141
Definition tap_dynamics_m.c:108
Definition juce_AudioProcessor.h:485
bool isInput
Definition juce_AudioProcessor.h:486
int index
Definition juce_AudioProcessor.h:487
Definition juce_AudioProcessor.h:1348
AudioChannelSet defaultLayout
Definition juce_AudioProcessor.h:1353
bool isActivatedByDefault
Definition juce_AudioProcessor.h:1356
String busName
Definition juce_AudioProcessor.h:1350
Definition juce_AudioProcessor.h:311
int getMainInputChannels() const noexcept
Definition juce_AudioProcessor.h:344
AudioChannelSet getMainInputChannelSet() const noexcept
Definition juce_AudioProcessor.h:338
AudioChannelSet getMainOutputChannelSet() const noexcept
Definition juce_AudioProcessor.h:341
Array< AudioChannelSet > outputBuses
Definition juce_AudioProcessor.h:316
AudioChannelSet getChannelSet(bool isInput, int busIndex) const noexcept
Definition juce_AudioProcessor.h:332
int getMainOutputChannels() const noexcept
Definition juce_AudioProcessor.h:347
int getNumChannels(bool isInput, int busIndex) const noexcept
Definition juce_AudioProcessor.h:319
Array< AudioChannelSet > inputBuses
Definition juce_AudioProcessor.h:313
AudioChannelSet & getChannelSet(bool isInput, int busIndex) noexcept
Definition juce_AudioProcessor.h:326
Definition juce_AudioProcessor.h:1361
Array< BusProperties > outputLayouts
Definition juce_AudioProcessor.h:1366
void addBus(bool isInput, const String &name, const AudioChannelSet &defaultLayout, bool isActivatedByDefault=true)
Definition juce_AudioProcessor.cpp:1164
Array< BusProperties > inputLayouts
Definition juce_AudioProcessor.h:1363
JUCE_NODISCARD BusesProperties withOutput(const String &name, const AudioChannelSet &defaultLayout, bool isActivatedByDefault=true) const
Definition juce_AudioProcessor.cpp:1187
JUCE_NODISCARD BusesProperties withInput(const String &name, const AudioChannelSet &defaultLayout, bool isActivatedByDefault=true) const
Definition juce_AudioProcessor.cpp:1178
Definition juce_AudioProcessor.h:1192
Type
Definition juce_AudioProcessor.h:1194
Range< float > yRange
Definition juce_AudioProcessor.h:1203
String yMeterID
Definition juce_AudioProcessor.h:1209
Range< float > xRange
Definition juce_AudioProcessor.h:1203
std::function< float(float)> curve
Definition juce_AudioProcessor.h:1202
String xMeterID
Definition juce_AudioProcessor.h:1209
Definition juce_AudioProcessor.h:1447
InOutChannelPair(const int16(&config)[2]) noexcept
Definition juce_AudioProcessor.h:1451
InOutChannelPair(int16 inCh, int16 outCh) noexcept
Definition juce_AudioProcessor.h:1450
int16 outChannels
Definition juce_AudioProcessor.h:1458
int16 inChannels
Definition juce_AudioProcessor.h:1458
Definition juce_AudioProcessor.h:1246
String name
Definition juce_AudioProcessor.h:1247
Colour colour
Definition juce_AudioProcessor.h:1249
Definition juce_AudioProcessorListener.h:63
ulg size
Definition extract.c:2350
#define const
Definition zconf.h:137