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

Method Process

Source/Panner.cpp:49–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47}
48
49void Panner::Process(double time)
50{
51 PROFILER(Panner);
52
53 IAudioReceiver* target = GetTarget();
54
55 if (target == nullptr)
56 return;
57
58 if (!mEnabled)
59 {
60 SyncBuffers();
61
62 for (int ch = 0; ch < GetBuffer()->NumActiveChannels(); ++ch)
63 {
64 Add(target->GetBuffer()->GetChannel(ch), GetBuffer()->GetChannel(ch), GetBuffer()->BufferSize());
65 GetVizBuffer()->WriteChunk(GetBuffer()->GetChannel(ch), GetBuffer()->BufferSize(), ch);
66 }
67
68 GetBuffer()->Reset();
69 return;
70 }
71
72 SyncBuffers(2);
73 mWidenerBuffer.SetNumChannels(2);
74
75 float* secondChannel;
76 if (GetBuffer()->NumActiveChannels() == 1) //panning mono input
77 {
78 BufferCopy(gWorkBuffer, GetBuffer()->GetChannel(0), GetBuffer()->BufferSize());
79 secondChannel = gWorkBuffer;
80 }
81 else
82 {
83 secondChannel = GetBuffer()->GetChannel(1);
84 }
85
86 ChannelBuffer* out = target->GetBuffer();
87
88 if (abs(mWiden) > 0)
89 {
90 for (int ch = 0; ch < GetBuffer()->NumActiveChannels(); ++ch)
91 mWidenerBuffer.WriteChunk(GetBuffer()->GetChannel(ch), GetBuffer()->BufferSize(), ch);
92 if (mWiden < 0)
93 mWidenerBuffer.ReadChunk(secondChannel, GetBuffer()->BufferSize(), abs(mWiden), (GetBuffer()->NumActiveChannels() == 1) ? 0 : 1);
94 else
95 mWidenerBuffer.ReadChunk(GetBuffer()->GetChannel(0), GetBuffer()->BufferSize(), abs(mWiden), 0);
96 }
97
98 mPanRamp.Start(time, mPan, time + 2);
99 for (int i = 0; i < GetBuffer()->BufferSize(); ++i)
100 {
101 mPan = mPanRamp.Value(time);
102
103 ComputeSliders(i);
104
105 float left = GetBuffer()->GetChannel(0)[i];
106 float right = secondChannel[i];

Callers

nothing calls this directly

Calls 13

AddFunction · 0.85
BufferCopyFunction · 0.85
ofMapFunction · 0.85
NumActiveChannelsMethod · 0.80
GetChannelMethod · 0.80
GetBufferMethod · 0.80
BufferSizeMethod · 0.80
WriteChunkMethod · 0.80
SetNumChannelsMethod · 0.80
ReadChunkMethod · 0.80
ResetMethod · 0.45
StartMethod · 0.45

Tested by

no test coverage detected