MCPcopy Create free account
hub / github.com/BespokeSynth/BespokeSynth / Process

Method Process

Source/SpectralDisplay.cpp:64–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62}
63
64void SpectralDisplay::Process(double time)
65{
66 PROFILER(SpectralDisplay);
67
68 SyncBuffers();
69
70 if (mEnabled)
71 {
72 ComputeSliders(0);
73
74 for (int ch = 0; ch < GetBuffer()->NumActiveChannels(); ++ch)
75 {
76 if (ch == 0)
77 BufferCopy(gWorkBuffer, GetBuffer()->GetChannel(ch), GetBuffer()->BufferSize());
78 else
79 Add(gWorkBuffer, GetBuffer()->GetChannel(ch), GetBuffer()->BufferSize());
80 }
81
82 mRollingInputBuffer.WriteChunk(gWorkBuffer, GetBuffer()->BufferSize(), 0);
83
84 //copy rolling input buffer into working buffer and window it
85 mRollingInputBuffer.ReadChunk(mFFTData.mTimeDomain, kNumFFTBins, 0, 0);
86 Mult(mFFTData.mTimeDomain, mWindower, kNumFFTBins);
87
88 mFFT.Forward(mFFTData.mTimeDomain,
89 mFFTData.mRealValues,
90 mFFTData.mImaginaryValues);
91 }
92
93 IAudioReceiver* target = GetTarget();
94 if (target)
95 {
96 ChannelBuffer* out = target->GetBuffer();
97 for (int ch = 0; ch < GetBuffer()->NumActiveChannels(); ++ch)
98 {
99 Add(out->GetChannel(ch), GetBuffer()->GetChannel(ch), out->BufferSize());
100 GetVizBuffer()->WriteChunk(GetBuffer()->GetChannel(ch), GetBuffer()->BufferSize(), ch);
101 }
102 }
103
104 GetBuffer()->Reset();
105}
106
107void SpectralDisplay::DrawModule()
108{

Callers

nothing calls this directly

Calls 11

BufferCopyFunction · 0.85
AddFunction · 0.85
MultFunction · 0.85
NumActiveChannelsMethod · 0.80
GetChannelMethod · 0.80
BufferSizeMethod · 0.80
WriteChunkMethod · 0.80
ReadChunkMethod · 0.80
ForwardMethod · 0.80
GetBufferMethod · 0.80
ResetMethod · 0.45

Tested by

no test coverage detected