38 const int numSamples) = 0;
48 const int numSamples)
override
50 static_cast<Child*
> (
this)->
perform (sharedAudioBufferChans,
112 const int numSamples)
171 const int numSamples)
197 const int numSamples)
204 for (
int i = numSamples; --
i >= 0;)
228 const uint totalNumChans,
231 const int midiBuffer)
253 const int numSamples)
279 const CarlaRecursiveMutexLocker cml (
processor->getCallbackLock());
290 processor->processBlockWithCV (audioBuffer, cvInBuffer, cvOutBuffer, midiMessages);
382 for (
int i =
graph.getNumConnections(); --
i >= 0;)
386 if (
c->destNodeId == nodeID)
396 const int ourRenderingIndex)
403 const uint totalAudioChans =
jmax (numAudioIns, numAudioOuts);
405 Array<uint> audioChannelsToUse, cvInChannelsToUse, cvOutChannelsToUse;
406 int midiBufferToUse = -1;
410 for (
uint inputChan = 0; inputChan < numAudioIns; ++inputChan)
416 for (
int i =
graph.getNumConnections(); --
i >= 0;)
420 if (
c->destNodeId == node.
nodeId
421 &&
c->destChannelIndex == inputChan
424 sourceNodes.
add (
c->sourceNodeId);
425 sourceOutputChans.
add (
c->sourceChannelIndex);
431 if (sourceNodes.
size() == 0)
437 else if (sourceNodes.
size() == 1)
452 if (inputChan < numAudioOuts
464 bufIndex = newFreeBuffer;
469 if (nodeDelay < maxLatency)
477 int reusableInputIndex = -1;
479 for (
int i = 0;
i < sourceNodes.
size(); ++
i)
485 if (sourceBufIndex >= 0
493 reusableInputIndex =
i;
494 bufIndex = sourceBufIndex;
497 if (nodeDelay < maxLatency)
498 renderingOps.
add (
new DelayChannelOp (sourceBufIndex, maxLatency - nodeDelay,
false));
504 if (reusableInputIndex < 0)
526 reusableInputIndex = 0;
529 if (nodeDelay < maxLatency)
533 for (
int j = 0;
j < sourceNodes.
size(); ++
j)
535 if (
j != reusableInputIndex)
544 if (nodeDelay < maxLatency)
547 ourRenderingIndex, inputChan,
557 renderingOps.
add (
new DelayChannelOp (bufferToDelay, maxLatency - nodeDelay,
false));
558 srcIndex = bufferToDelay;
569 audioChannelsToUse.
add (bufIndex);
571 if (inputChan < numAudioOuts)
575 for (
uint outputChan = numAudioIns; outputChan < numAudioOuts; ++outputChan)
579 audioChannelsToUse.
add (bufIndex);
583 for (
uint inputChan = 0; inputChan < numCVIns; ++inputChan)
589 for (
int i =
graph.getNumConnections(); --
i >= 0;)
593 if (
c->destNodeId == node.
nodeId
594 &&
c->destChannelIndex == inputChan
597 sourceNodes.
add (
c->sourceNodeId);
598 sourceOutputChans.
add (
c->sourceChannelIndex);
604 if (sourceNodes.
size() == 0)
610 else if (sourceNodes.
size() == 1)
629 bufIndex = newFreeBuffer;
633 if (nodeDelay < maxLatency)
659 if (nodeDelay < maxLatency)
663 for (
int j = 1;
j < sourceNodes.
size(); ++
j)
672 if (nodeDelay < maxLatency)
676 renderingOps.
add (
new DelayChannelOp (bufferToDelay, maxLatency - nodeDelay,
true));
677 srcIndex = bufferToDelay;
686 cvInChannelsToUse.
add (bufIndex);
690 for (
uint outputChan = 0; outputChan < numCVOuts; ++outputChan)
694 cvOutChannelsToUse.
add (bufIndex);
701 for (
int i =
graph.getNumConnections(); --
i >= 0;)
706 midiSourceNodes.
add (
c->sourceNodeId);
709 if (midiSourceNodes.
size() == 0)
717 else if (midiSourceNodes.
size() == 1)
723 if (midiBufferToUse >= 0)
726 ourRenderingIndex, 0,
733 midiBufferToUse = newFreeBuffer;
745 int reusableInputIndex = -1;
747 for (
int i = 0;
i < midiSourceNodes.
size(); ++
i)
753 if (sourceBufIndex >= 0
755 ourRenderingIndex, 0,
759 reusableInputIndex =
i;
760 midiBufferToUse = sourceBufIndex;
765 if (reusableInputIndex < 0)
769 wassert (midiBufferToUse >= 0);
779 reusableInputIndex = 0;
782 for (
int j = 0;
j < midiSourceNodes.
size(); ++
j)
784 if (
j != reusableInputIndex)
797 midiBufferToUse, node.
nodeId,
802 if (numAudioOuts == 0)
855 const uint outputChannel)
const noexcept
912 int stepIndexToSearchFrom,
913 uint inputChannelOfIndexToIgnore,
915 const uint outputChanIndex)
const
922 if (
i != inputChannelOfIndexToIgnore
923 &&
graph.getConnectionBetween (channelType,
924 nodeId, outputChanIndex,
928 inputChannelOfIndexToIgnore = (
uint)-1;
929 ++stepIndexToSearchFrom;
936 int bufferNum,
uint32 nodeId,
int outputIndex)
976 if (entry ==
nullptr)
978 entry =
new Entry (
c->destNodeId);
987 const uint32 possibleDestinationId)
const noexcept
1007 const uint32 possibleDestinationId,
1008 int recursionCheck)
const noexcept
1012 if (
const Entry*
const entry =
findEntry (possibleDestinationId, index))
1016 if (srcNodes.
contains (possibleInputId))
1019 if (--recursionCheck >= 0)
1021 for (
int i = 0;
i < srcNodes.
size(); ++
i)
1043 else if (destNodeId ==
entries.getUnchecked (
start)->destNodeId)
1050 const int halfway = (
start + end) / 2;
1052 if (halfway ==
start)
1054 if (destNodeId >=
entries.getUnchecked (halfway)->destNodeId)
1059 else if (destNodeId >=
entries.getUnchecked (halfway)->destNodeId)
1066 insertIndex =
start;
1079 if (first->sourceNodeId < second->sourceNodeId)
return -1;
1080 if (first->sourceNodeId > second->sourceNodeId)
return 1;
1081 if (first->destNodeId < second->destNodeId)
return -1;
1082 if (first->destNodeId > second->destNodeId)
return 1;
1083 if (first->sourceChannelIndex < second->sourceChannelIndex)
return -1;
1084 if (first->sourceChannelIndex > second->sourceChannelIndex)
return 1;
1085 if (first->destChannelIndex < second->destChannelIndex)
return -1;
1086 if (first->destChannelIndex > second->destChannelIndex)
return 1;
1096 const uint32 sourceID,
const uint sourceChannel,
1118 processor->setRateAndBufferSizeDetails (newSampleRate, newBlockSize);
1119 processor->prepareToPlay (newSampleRate, newBlockSize);
1137 ioProc->setParentGraph (graph);
1198 return "Audio Graph";
1211 for (
int i =
nodes.size(); --
i >= 0;)
1212 if (
nodes.getUnchecked(
i)->nodeId == nodeId)
1213 return nodes.getUnchecked(
i);
1222 for (
int i =
nodes.size(); --
i >= 0;)
1241 Node*
const n =
new Node (nodeId, newProcessor);
1247 n->setParentGraph (
this);
1255 for (
int i =
nodes.size(); --
i >= 0;)
1257 if (
nodes.getUnchecked(
i)->nodeId == nodeId)
1280 const uint32 sourceNodeId,
1281 const uint sourceChannelIndex,
1283 const uint destChannelIndex)
const
1285 const Connection c (ct, sourceNodeId, sourceChannelIndex, destNodeId, destChannelIndex);
1291 const uint32 possibleDestNodeId)
const
1297 if (
c->sourceNodeId == possibleSourceNodeId
1298 &&
c->destNodeId == possibleDestNodeId)
1308 const uint32 sourceNodeId,
1309 const uint sourceChannelIndex,
1311 const uint destChannelIndex)
const
1313 if (sourceNodeId == destNodeId)
1318 if (source ==
nullptr
1331 sourceNodeId, sourceChannelIndex,
1332 destNodeId, destChannelIndex) ==
nullptr;
1336 const uint32 sourceNodeId,
1337 const uint sourceChannelIndex,
1339 const uint destChannelIndex)
1341 if (!
canConnect (ct, sourceNodeId, sourceChannelIndex, destNodeId, destChannelIndex))
1346 sourceNodeId, sourceChannelIndex,
1347 destNodeId, destChannelIndex));
1364 const uint32 sourceNodeId,
const uint sourceChannelIndex,
1365 const uint32 destNodeId,
const uint destChannelIndex)
1367 bool doneAnything =
false;
1373 if (
c->channelType == ct
1374 &&
c->sourceNodeId == sourceNodeId
1375 &&
c->destNodeId == destNodeId
1376 &&
c->sourceChannelIndex == sourceChannelIndex
1377 &&
c->destChannelIndex == destChannelIndex)
1380 doneAnything =
true;
1384 return doneAnything;
1389 bool doneAnything =
false;
1395 if (
c->sourceNodeId == nodeId ||
c->destNodeId == nodeId)
1398 doneAnything =
true;
1402 return doneAnything;
1412 return source !=
nullptr
1422 bool doneAnything =
false;
1429 doneAnything =
true;
1433 return doneAnything;
1439 for (
int i = ops.
size(); --
i >= 0;)
1456 const uint32 possibleDestinationId,
1457 const int recursionCheck)
const
1459 if (recursionCheck > 0)
1465 if (
c->destNodeId == possibleDestinationId
1466 && (
c->sourceNodeId == possibleInputId
1467 ||
isAnInputTo (possibleInputId,
c->sourceNodeId, recursionCheck - 1)))
1478 int numAudioRenderingBuffersNeeded = 2;
1479 int numCVRenderingBuffersNeeded = 0;
1480 int numMidiBuffersNeeded = 1;
1490 for (
int i = 0;
i <
nodes.size(); ++
i)
1497 for (;
j < orderedNodes.
size(); ++
j)
1501 orderedNodes.
insert (
j, node);
1517 numCVRenderingBuffersNeeded,
1520 for (
int i =
static_cast<int>(
midiBuffers.size()); --
i >= 0;)
1523 while (
static_cast<int>(
midiBuffers.size()) < numMidiBuffersNeeded)
1540 estimatedSamplesPerBlock);
1555 for (
int i = 0;
i <
nodes.size(); ++
i)
1556 nodes.getUnchecked(
i)->unprepare();
1569 for (
int i = 0;
i <
nodes.size(); ++
i)
1570 nodes.getUnchecked(
i)->getProcessor()->reset();
1579 for (
int i = 0;
i <
nodes.size(); ++
i)
1580 nodes.getUnchecked(
i)->getProcessor()->setNonRealtime (isProcessingNonRealtime);
1644 currentAudioInputBuffer = &audioBuffer;
1645 currentCVInputBuffer = &cvInBuffer;
1647 currentAudioOutputBuffer.
clear();
1648 currentCVOutputBuffer.
clear();
1660 audioBuffer.
copyFrom (
i, 0, currentAudioOutputBuffer,
i, 0, numSamples);
1663 cvOutBuffer.
copyFrom (
i, 0, currentCVOutputBuffer,
i, 0, numSamples);
1665 midiMessages.
clear();
1748 graph->audioAndCVBuffers->currentAudioOutputBuffer;
1762 graph->audioAndCVBuffers->currentAudioInputBuffer;
1776 graph->audioAndCVBuffers->currentCVOutputBuffer;
1790 graph->audioAndCVBuffers->currentCVInputBuffer;
1802 graph->currentMidiOutputBuffer.addEvents (midiMessages, 0, audioBuffer.
getNumSamples(), 0);
1846 if (
graph !=
nullptr)
#define CARLA_SAFE_ASSERT_CONTINUE(cond)
Definition CarlaDefines.h:189
#define CARLA_SAFE_ASSERT_RETURN(cond, ret)
Definition CarlaDefines.h:190
unsigned int uint
Definition CarlaDefines.h:327
#define CARLA_SAFE_ASSERT_BREAK(cond)
Definition CarlaDefines.h:188
#define CARLA_SAFE_ASSERT(cond)
Definition CarlaDefines.h:182
#define CARLA_DECLARE_NON_COPYABLE(ClassName)
Definition CarlaDefines.h:242
#define noexcept
Definition DistrhoDefines.h:72
#define nullptr
Definition DistrhoDefines.h:75
bool add(const ElementType &newElement) noexcept
Definition Array.h:354
int size() const noexcept
Definition Array.h:187
ElementType getUnchecked(const int index) const
Definition Array.h:228
bool insert(int indexToInsertAt, ParameterType newElement) noexcept
Definition Array.h:375
ElementType getFirst() const
Definition Array.h:253
Definition AudioProcessorGraph.h:306
bool isInput() const noexcept
Definition AudioProcessorGraph.cpp:1832
bool acceptsMidi() const override
Definition AudioProcessorGraph.cpp:1822
IODeviceType
Definition AudioProcessorGraph.h:311
@ audioInputNode
Definition AudioProcessorGraph.h:312
@ cvOutputNode
Definition AudioProcessorGraph.h:324
@ midiInputNode
Definition AudioProcessorGraph.h:318
@ midiOutputNode
Definition AudioProcessorGraph.h:321
@ cvInputNode
Definition AudioProcessorGraph.h:324
@ audioOutputNode
Definition AudioProcessorGraph.h:315
bool producesMidi() const override
Definition AudioProcessorGraph.cpp:1827
void prepareToPlay(double newSampleRate, int estimatedSamplesPerBlock) override
Definition AudioProcessorGraph.cpp:1727
~AudioGraphIOProcessor()
Definition AudioProcessorGraph.cpp:1707
void setParentGraph(AudioProcessorGraph *)
Definition AudioProcessorGraph.cpp:1842
AudioGraphIOProcessor(const IODeviceType type)
Definition AudioProcessorGraph.cpp:1702
void releaseResources() override
Definition AudioProcessorGraph.cpp:1732
const IODeviceType type
Definition AudioProcessorGraph.h:359
const String getName() const override
Definition AudioProcessorGraph.cpp:1711
bool isOutput() const noexcept
Definition AudioProcessorGraph.cpp:1837
AudioProcessorGraph * graph
Definition AudioProcessorGraph.h:360
void processBlockWithCV(AudioSampleBuffer &audioBuffer, const AudioSampleBuffer &cvInBuffer, AudioSampleBuffer &cvOutBuffer, MidiBuffer &midiMessages) override
Definition AudioProcessorGraph.cpp:1814
void processAudioAndCV(AudioSampleBuffer &audioBuffer, const AudioSampleBuffer &cvInBuffer, AudioSampleBuffer &cvOutBuffer, MidiBuffer &midiMessages)
Definition AudioProcessorGraph.cpp:1736
Definition AudioProcessorGraph.h:63
ReferenceCountedObjectPtr< Node > Ptr
Definition AudioProcessorGraph.h:109
Node(uint32 nodeId, AudioProcessor *) noexcept
Definition AudioProcessorGraph.cpp:1105
void setParentGraph(AudioProcessorGraph *) const
Definition AudioProcessorGraph.cpp:1133
AudioProcessor * getProcessor() const noexcept
Definition AudioProcessorGraph.h:72
const CarlaScopedPointer< AudioProcessor > processor
Definition AudioProcessorGraph.h:115
bool isPrepared
Definition AudioProcessorGraph.h:116
void unprepare()
Definition AudioProcessorGraph.cpp:1124
const uint32 nodeId
Definition AudioProcessorGraph.h:69
friend class AudioProcessorGraph
Definition AudioProcessorGraph.h:113
void prepare(double newSampleRate, int newBlockSize, AudioProcessorGraph *)
Definition AudioProcessorGraph.cpp:1111
Definition AudioProcessorGraph.h:46
AudioProcessorGraph()
Definition AudioProcessorGraph.cpp:1184
const Connection * getConnectionBetween(ChannelType channelType, uint32 sourceNodeId, uint sourceChannelIndex, uint32 destNodeId, uint destChannelIndex) const
Definition AudioProcessorGraph.cpp:1279
OwnedArray< Connection > connections
Definition AudioProcessorGraph.h:401
ReferenceCountedArray< Node > nodes
Definition AudioProcessorGraph.h:400
Array< void * > renderingOps
Definition AudioProcessorGraph.h:404
void setNonRealtime(bool) noexcept override
Definition AudioProcessorGraph.cpp:1573
MidiBuffer * currentMidiInputBuffer
Definition AudioProcessorGraph.h:410
void reorderNowIfNeeded()
Definition AudioProcessorGraph.cpp:1687
bool canConnect(ChannelType channelType, uint32 sourceNodeId, uint sourceChannelIndex, uint32 destNodeId, uint destChannelIndex) const
Definition AudioProcessorGraph.cpp:1307
void reset() override
Definition AudioProcessorGraph.cpp:1565
const CarlaRecursiveMutex & getReorderMutex() const
Definition AudioProcessorGraph.cpp:1696
bool addConnection(ChannelType channelType, uint32 sourceNodeId, uint sourceChannelIndex, uint32 destNodeId, uint destChannelIndex)
Definition AudioProcessorGraph.cpp:1335
bool removeNode(uint32 nodeId)
Definition AudioProcessorGraph.cpp:1251
void buildRenderingSequence()
Definition AudioProcessorGraph.cpp:1475
~AudioProcessorGraph()
Definition AudioProcessorGraph.cpp:1190
MidiBuffer currentMidiOutputBuffer
Definition AudioProcessorGraph.h:411
void prepareToPlay(double, int) override
Definition AudioProcessorGraph.cpp:1534
void processAudioAndCV(AudioSampleBuffer &audioBuffer, const AudioSampleBuffer &cvInBuffer, AudioSampleBuffer &cvOutBuffer, MidiBuffer &midiMessages)
Definition AudioProcessorGraph.cpp:1621
Node * getNodeForId(const uint32 nodeId) const
Definition AudioProcessorGraph.cpp:1209
uint32 lastNodeId
Definition AudioProcessorGraph.h:402
bool needsReorder
Definition AudioProcessorGraph.h:413
const String getName() const override
Definition AudioProcessorGraph.cpp:1196
OwnedArray< MidiBuffer > midiBuffers
Definition AudioProcessorGraph.h:403
void removeConnection(int index)
Definition AudioProcessorGraph.cpp:1355
bool isConnected(uint32 possibleSourceNodeId, uint32 possibleDestNodeId) const
Definition AudioProcessorGraph.cpp:1290
CarlaScopedPointer< AudioProcessorGraphBufferHelpers > audioAndCVBuffers
Definition AudioProcessorGraph.h:408
bool producesMidi() const override
Definition AudioProcessorGraph.cpp:1670
bool acceptsMidi() const override
Definition AudioProcessorGraph.cpp:1669
bool isPrepared
Definition AudioProcessorGraph.h:413
CarlaRecursiveMutex reorderMutex
Definition AudioProcessorGraph.h:414
Node * addNode(AudioProcessor *newProcessor, uint32 nodeId=0)
Definition AudioProcessorGraph.cpp:1218
bool removeIllegalConnections()
Definition AudioProcessorGraph.cpp:1420
bool isAnInputTo(uint32 possibleInputId, uint32 possibleDestinationId, int recursionCheck) const
Definition AudioProcessorGraph.cpp:1455
void clear()
Definition AudioProcessorGraph.cpp:1202
bool disconnectNode(uint32 nodeId)
Definition AudioProcessorGraph.cpp:1387
void releaseResources() override
Definition AudioProcessorGraph.cpp:1551
bool isConnectionLegal(const Connection *connection) const
Definition AudioProcessorGraph.cpp:1405
void clearRenderingSequence()
Definition AudioProcessorGraph.cpp:1443
void processBlockWithCV(AudioSampleBuffer &audioBuffer, const AudioSampleBuffer &cvInBuffer, AudioSampleBuffer &cvOutBuffer, MidiBuffer &midiMessages) override
Definition AudioProcessorGraph.cpp:1679
Definition AudioProcessor.h:46
int getBlockSize() const noexcept
Definition AudioProcessor.h:186
double getSampleRate() const noexcept
Definition AudioProcessor.h:175
virtual void setNonRealtime(bool isNonRealtime) noexcept
Definition AudioProcessor.cpp:72
uint getTotalNumOutputChannels(ChannelType t) const noexcept
Definition AudioProcessor.cpp:107
void setPlayConfigDetails(uint numAudioIns, uint numAudioOuts, uint numCVIns, uint numCVOuts, uint numMIDIIns, uint numMIDIOuts, double sampleRate, int blockSize)
Definition AudioProcessor.cpp:47
const CarlaRecursiveMutex & getCallbackLock() const noexcept
Definition AudioProcessor.h:229
int getLatencySamples() const noexcept
Definition AudioProcessor.h:196
uint getTotalNumInputChannels(ChannelType t) const noexcept
Definition AudioProcessor.cpp:92
virtual bool producesMidi() const =0
AudioProcessor()
Definition AudioProcessor.cpp:25
virtual bool acceptsMidi() const =0
ChannelType
Definition AudioProcessor.h:58
@ ChannelTypeCV
Definition AudioProcessor.h:60
@ ChannelTypeMIDI
Definition AudioProcessor.h:61
@ ChannelTypeAudio
Definition AudioProcessor.h:59
void setRateAndBufferSizeDetails(double sampleRate, int blockSize) noexcept
Definition AudioProcessor.cpp:65
Definition AudioSampleBuffer.h:42
uint32_t getNumSamples() const noexcept
Definition AudioSampleBuffer.h:217
uint32_t getNumChannels() const noexcept
Definition AudioSampleBuffer.h:212
void addFrom(const uint32_t destChannel, const uint32_t destStartSample, const AudioSampleBuffer &source, const uint32_t sourceChannel, const uint32_t sourceStartSample, const uint32_t numSamples, const float gainToApplyToSource=1.0f) noexcept
Definition AudioSampleBuffer.h:466
void copyFrom(const uint32_t destChannel, const uint32_t destStartSample, const AudioSampleBuffer &source, const uint32_t sourceChannel, const uint32_t sourceStartSample, const uint32_t numSamples) noexcept
Definition AudioSampleBuffer.h:560
float * getWritePointer(const uint32_t channelNumber) noexcept
Definition AudioSampleBuffer.h:254
void clear() noexcept
Definition AudioSampleBuffer.h:397
Definition AudioProcessorGraph.cpp:965
bool isAnInputToRecursive(const uint32 possibleInputId, const uint32 possibleDestinationId, int recursionCheck) const noexcept
Definition AudioProcessorGraph.cpp:1006
Entry * findEntry(const uint32 destNodeId, int &insertIndex) const noexcept
Definition AudioProcessorGraph.cpp:1030
OwnedArray< Entry > entries
Definition AudioProcessorGraph.cpp:1004
bool isAnInputTo(const uint32 possibleInputId, const uint32 possibleDestinationId) const noexcept
Definition AudioProcessorGraph.cpp:986
ConnectionLookupTable(const OwnedArray< AudioProcessorGraph::Connection > &connections)
Definition AudioProcessorGraph.cpp:967
Definition HeapBlock.h:77
Definition MidiBuffer.h:48
void addEvents(const MidiBuffer &otherBuffer, int startSample, int numSamples, int sampleDeltaToAdd)
Definition MidiBuffer.cpp:141
void clear() noexcept
Definition MidiBuffer.cpp:106
Definition OwnedArray.h:57
ObjectClass * getUnchecked(const int index) const noexcept
Definition OwnedArray.h:136
size_t size() const noexcept
Definition OwnedArray.h:101
Definition SortedSet.h:57
bool contains(const ElementType &elementToLookFor) const noexcept
Definition SortedSet.h:255
ElementType getUnchecked(const int index) const noexcept
Definition SortedSet.h:165
bool add(const ElementType &newElement) noexcept
Definition SortedSet.h:272
int size() const noexcept
Definition SortedSet.h:130
register unsigned j
Definition inflate.c:1576
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
virtual ASIOError start()=0
JSAMPIMAGE data
Definition jpeglib.h:945
#define wassert(expression)
unsigned int uint32_t
Definition mid.cpp:100
Definition AudioProcessorGraph.cpp:28
Definition AudioSampleBuffer.h:33
unsigned int uint32
Definition water.h:98
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
static void deleteRenderOpArray(Array< void * > &ops)
Definition AudioProcessorGraph.cpp:1437
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define false
Definition ordinals.h:83
Definition AudioProcessorGraph.cpp:1142
const AudioSampleBuffer * currentCVInputBuffer
Definition AudioProcessorGraph.cpp:1178
void prepareInOutBuffers(int newNumAudioChannels, int newNumCVChannels, int newNumSamples) noexcept
Definition AudioProcessorGraph.cpp:1167
AudioSampleBuffer renderingCVBuffers
Definition AudioProcessorGraph.cpp:1176
AudioSampleBuffer renderingAudioBuffers
Definition AudioProcessorGraph.cpp:1175
AudioSampleBuffer * currentAudioInputBuffer
Definition AudioProcessorGraph.cpp:1177
AudioSampleBuffer currentCVOutputBuffer
Definition AudioProcessorGraph.cpp:1180
void setRenderingBufferSize(int newNumAudioChannels, int newNumCVChannels, int newNumSamples) noexcept
Definition AudioProcessorGraph.cpp:1147
void release() noexcept
Definition AudioProcessorGraph.cpp:1156
AudioProcessorGraphBufferHelpers() noexcept
Definition AudioProcessorGraph.cpp:1143
AudioSampleBuffer currentAudioOutputBuffer
Definition AudioProcessorGraph.cpp:1179
Definition AudioProcessorGraph.h:133
uint sourceChannelIndex
Definition AudioProcessorGraph.h:156
ChannelType channelType
Definition AudioProcessorGraph.h:142
Connection(ChannelType channelType, uint32 sourceNodeId, uint sourceChannelIndex, uint32 destNodeId, uint destChannelIndex) noexcept
Definition AudioProcessorGraph.cpp:1095
uint destChannelIndex
Definition AudioProcessorGraph.h:170
uint32 destNodeId
Definition AudioProcessorGraph.h:161
uint32 sourceNodeId
Definition AudioProcessorGraph.h:147
Definition AudioProcessorGraph.cpp:105
AddChannelOp(const int srcChan, const int dstChan, const bool cv) noexcept
Definition AudioProcessorGraph.cpp:106
const bool isCV
Definition AudioProcessorGraph.cpp:121
const int dstChannelNum
Definition AudioProcessorGraph.cpp:120
void perform(AudioSampleBuffer &sharedAudioBufferChans, AudioSampleBuffer &sharedCVBufferChans, const OwnedArray< MidiBuffer > &, const int numSamples)
Definition AudioProcessorGraph.cpp:109
const int srcChannelNum
Definition AudioProcessorGraph.cpp:120
Definition AudioProcessorGraph.cpp:164
void perform(AudioSampleBuffer &, AudioSampleBuffer &, const OwnedArray< MidiBuffer > &sharedMidiBuffers, const int numSamples)
Definition AudioProcessorGraph.cpp:169
const int srcBufferNum
Definition AudioProcessorGraph.cpp:177
AddMidiBufferOp(const int srcBuffer, const int dstBuffer)
Definition AudioProcessorGraph.cpp:165
const int dstBufferNum
Definition AudioProcessorGraph.cpp:177
Definition AudioProcessorGraph.cpp:31
AudioGraphRenderingOpBase() noexcept
Definition AudioProcessorGraph.cpp:32
virtual void perform(AudioSampleBuffer &sharedAudioBufferChans, AudioSampleBuffer &sharedCVBufferChans, const OwnedArray< MidiBuffer > &sharedMidiBuffers, const int numSamples)=0
virtual ~AudioGraphRenderingOpBase()
Definition AudioProcessorGraph.cpp:33
Definition AudioProcessorGraph.cpp:44
void perform(AudioSampleBuffer &sharedAudioBufferChans, AudioSampleBuffer &sharedCVBufferChans, const OwnedArray< MidiBuffer > &sharedMidiBuffers, const int numSamples) override
Definition AudioProcessorGraph.cpp:45
Definition AudioProcessorGraph.cpp:59
ClearChannelOp(const int channel, const bool cv) noexcept
Definition AudioProcessorGraph.cpp:60
const int channelNum
Definition AudioProcessorGraph.cpp:74
void perform(AudioSampleBuffer &sharedAudioBufferChans, AudioSampleBuffer &sharedCVBufferChans, const OwnedArray< MidiBuffer > &, const int numSamples)
Definition AudioProcessorGraph.cpp:63
const bool isCV
Definition AudioProcessorGraph.cpp:75
Definition AudioProcessorGraph.cpp:128
ClearMidiBufferOp(const int buffer) noexcept
Definition AudioProcessorGraph.cpp:129
const int bufferNum
Definition AudioProcessorGraph.cpp:138
void perform(AudioSampleBuffer &, AudioSampleBuffer &, const OwnedArray< MidiBuffer > &sharedMidiBuffers, const int)
Definition AudioProcessorGraph.cpp:131
Definition AudioProcessorGraph.cpp:995
const uint32 destNodeId
Definition AudioProcessorGraph.cpp:998
Entry(const uint32 destNodeId_) noexcept
Definition AudioProcessorGraph.cpp:996
SortedSet< uint32 > srcNodes
Definition AudioProcessorGraph.cpp:999
Definition AudioProcessorGraph.cpp:1075
static int compareElements(const AudioProcessorGraph::Connection *const first, const AudioProcessorGraph::Connection *const second) noexcept
Definition AudioProcessorGraph.cpp:1076
Definition AudioProcessorGraph.cpp:82
const int dstChannelNum
Definition AudioProcessorGraph.cpp:97
void perform(AudioSampleBuffer &sharedAudioBufferChans, AudioSampleBuffer &sharedCVBufferChans, const OwnedArray< MidiBuffer > &, const int numSamples)
Definition AudioProcessorGraph.cpp:86
const int srcChannelNum
Definition AudioProcessorGraph.cpp:97
CopyChannelOp(const int srcChan, const int dstChan, const bool cv) noexcept
Definition AudioProcessorGraph.cpp:83
const bool isCV
Definition AudioProcessorGraph.cpp:98
Definition AudioProcessorGraph.cpp:145
CopyMidiBufferOp(const int srcBuffer, const int dstBuffer) noexcept
Definition AudioProcessorGraph.cpp:146
const int srcBufferNum
Definition AudioProcessorGraph.cpp:157
void perform(AudioSampleBuffer &, AudioSampleBuffer &, const OwnedArray< MidiBuffer > &sharedMidiBuffers, const int)
Definition AudioProcessorGraph.cpp:150
const int dstBufferNum
Definition AudioProcessorGraph.cpp:157
Definition AudioProcessorGraph.cpp:184
void perform(AudioSampleBuffer &sharedAudioBufferChans, AudioSampleBuffer &sharedCVBufferChans, const OwnedArray< MidiBuffer > &, const int numSamples)
Definition AudioProcessorGraph.cpp:194
int writeIndex
Definition AudioProcessorGraph.cpp:217
const bool isCV
Definition AudioProcessorGraph.cpp:218
int readIndex
Definition AudioProcessorGraph.cpp:217
const int bufferSize
Definition AudioProcessorGraph.cpp:216
const int channel
Definition AudioProcessorGraph.cpp:216
HeapBlock< float > buffer
Definition AudioProcessorGraph.cpp:215
DelayChannelOp(const int chan, const int delaySize, const bool cv)
Definition AudioProcessorGraph.cpp:185
Definition AudioProcessorGraph.cpp:225
const uint totalCVIns
Definition AudioProcessorGraph.cpp:305
const AudioProcessorGraph::Node::Ptr node
Definition AudioProcessorGraph.cpp:293
AudioProcessor *const processor
Definition AudioProcessorGraph.cpp:294
Array< uint > cvOutChannelsToUse
Definition AudioProcessorGraph.cpp:299
Array< uint > audioChannelsToUse
Definition AudioProcessorGraph.cpp:297
AudioSampleBuffer tempBuffer
Definition AudioProcessorGraph.cpp:303
const uint totalCVOuts
Definition AudioProcessorGraph.cpp:306
HeapBlock< float * > audioChannels
Definition AudioProcessorGraph.cpp:300
Array< uint > cvInChannelsToUse
Definition AudioProcessorGraph.cpp:298
HeapBlock< float * > cvInChannels
Definition AudioProcessorGraph.cpp:301
HeapBlock< float * > cvOutChannels
Definition AudioProcessorGraph.cpp:302
void callProcess(AudioSampleBuffer &audioBuffer, AudioSampleBuffer &cvInBuffer, AudioSampleBuffer &cvOutBuffer, MidiBuffer &midiMessages)
Definition AudioProcessorGraph.cpp:285
void perform(AudioSampleBuffer &sharedAudioBufferChans, AudioSampleBuffer &sharedCVBufferChans, const OwnedArray< MidiBuffer > &sharedMidiBuffers, const int numSamples)
Definition AudioProcessorGraph.cpp:250
const uint totalAudioChans
Definition AudioProcessorGraph.cpp:304
const int midiBufferToUse
Definition AudioProcessorGraph.cpp:307
ProcessBufferOp(const AudioProcessorGraph::Node::Ptr &n, const Array< uint > &audioChannelsUsed, const uint totalNumChans, const Array< uint > &cvInChannelsUsed, const Array< uint > &cvOutChannelsUsed, const int midiBuffer)
Definition AudioProcessorGraph.cpp:226
Definition AudioProcessorGraph.cpp:317
Array< uint > cvChannels
Definition AudioProcessorGraph.cpp:350
int getNumAudioBuffersNeeded() const noexcept
Definition AudioProcessorGraph.cpp:342
static bool isNodeBusy(uint32 nodeID) noexcept
Definition AudioProcessorGraph.cpp:355
int getFreeBuffer(const AudioProcessor::ChannelType channelType)
Definition AudioProcessorGraph.cpp:814
Array< uint > audioChannels
Definition AudioProcessorGraph.cpp:350
void markAnyUnusedBuffersAsFree(const int stepIndex)
Definition AudioProcessorGraph.cpp:883
RenderingOpSequenceCalculator(AudioProcessorGraph &g, const Array< AudioProcessorGraph::Node * > &nodes, Array< void * > &renderingOps)
Definition AudioProcessorGraph.cpp:318
int getBufferContaining(const AudioProcessor::ChannelType channelType, const uint32 nodeId, const uint outputChannel) const noexcept
Definition AudioProcessorGraph.cpp:853
Array< uint32 > nodeDelayIDs
Definition AudioProcessorGraph.cpp:357
void markBufferAsContaining(const AudioProcessor::ChannelType channelType, int bufferNum, uint32 nodeId, int outputIndex)
Definition AudioProcessorGraph.cpp:935
bool isBufferNeededLater(const AudioProcessor::ChannelType channelType, int stepIndexToSearchFrom, uint inputChannelOfIndexToIgnore, const uint32 nodeId, const uint outputChanIndex) const
Definition AudioProcessorGraph.cpp:911
const Array< AudioProcessorGraph::Node * > & orderedNodes
Definition AudioProcessorGraph.cpp:349
Array< uint32 > audioNodeIds
Definition AudioProcessorGraph.cpp:351
Array< uint32 > cvNodeIds
Definition AudioProcessorGraph.cpp:351
int getNodeDelay(const uint32 nodeID) const
Definition AudioProcessorGraph.cpp:361
int getNumCVBuffersNeeded() const noexcept
Definition AudioProcessorGraph.cpp:343
@ zeroNodeID
Definition AudioProcessorGraph.cpp:353
@ freeNodeID
Definition AudioProcessorGraph.cpp:353
@ anonymousNodeID
Definition AudioProcessorGraph.cpp:353
Array< int > nodeDelays
Definition AudioProcessorGraph.cpp:358
int getReadOnlyEmptyBuffer() const noexcept
Definition AudioProcessorGraph.cpp:848
void createRenderingOpsForNode(AudioProcessorGraph::Node &node, Array< void * > &renderingOps, const int ourRenderingIndex)
Definition AudioProcessorGraph.cpp:394
int getNumMidiBuffersNeeded() const noexcept
Definition AudioProcessorGraph.cpp:344
int totalLatency
Definition AudioProcessorGraph.cpp:359
int getInputLatencyForNode(const uint32 nodeID) const
Definition AudioProcessorGraph.cpp:378
Array< uint32 > midiNodeIds
Definition AudioProcessorGraph.cpp:351
AudioProcessorGraph & graph
Definition AudioProcessorGraph.cpp:348
void setNodeDelay(const uint32 nodeID, const int latency)
Definition AudioProcessorGraph.cpp:363
int n
Definition crypt.c:458
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
int result
Definition process.c:1455
#define const
Definition zconf.h:137