MCPcopy Create free account
hub / github.com/LabSound/LabSound / process

Method process

src/internal/src/DelayDSPKernel.cpp:68–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68void DelayDSPKernel::process(ContextRenderLock & r, const float * source, float * destination, int framesToProcess)
69{
70 size_t bufferLength = m_buffer.size();
71 float * buffer = m_buffer.data();
72
73 ASSERT(bufferLength);
74 if (!bufferLength)
75 return;
76
77 ASSERT(source && destination);
78 if (!source || !destination)
79 return;
80
81 float sampleRate = r.context()->sampleRate();
82 double delayTime = 0;
83 float * delayTimes = m_delayTimes.data();
84 double maxTime = maxDelayTime();
85
86#if 1
87 /// @TODO before deleting the else clause here, is there a legitimate reason to have the delayTime be automated?
88 /// is it not just a setting? If it's actually an audio rate signal, then delayTime should be switched back
89 /// from AudioSetting to AudioParam.
90 delayTime = delayProcessor() ? delayProcessor()->delayTime()->valueFloat() : m_desiredDelayFrames / sampleRate;
91
92 // Make sure the delay time is in a valid range.
93 delayTime = min(maxTime, delayTime);
94 delayTime = max(0.0, delayTime);
95
96 if (m_firstTime)
97 {
98 m_currentDelayTime = delayTime;
99 m_firstTime = false;
100 }
101 bool sampleAccurate = false;
102#else
103 bool sampleAccurate = delayProcessor() && delayProcessor()->delayTime()->hasSampleAccurateValues();
104
105 if (sampleAccurate)
106 delayProcessor()->delayTime()->calculateSampleAccurateValues(r, delayTimes, framesToProcess);
107 else
108 {
109 delayTime = delayProcessor() ? delayProcessor()->delayTime()->finalValue(r) : m_desiredDelayFrames / sampleRate;
110
111 // Make sure the delay time is in a valid range.
112 delayTime = min(maxTime, delayTime);
113 delayTime = max(0.0, delayTime);
114
115 if (m_firstTime)
116 {
117 m_currentDelayTime = delayTime;
118 m_firstTime = false;
119 }
120 }
121#endif
122
123 for (int i = 0; i < framesToProcess; ++i)
124 {
125 if (sampleAccurate)

Callers

nothing calls this directly

Calls 9

sizeMethod · 0.80
valueFloatMethod · 0.80
finalValueMethod · 0.80
dataMethod · 0.45
sampleRateMethod · 0.45
contextMethod · 0.45
delayTimeMethod · 0.45

Tested by

no test coverage detected