48template <
typename SampleType>
53 using Rule = PannerRule;
64 void setPan (SampleType newPan);
75 template <
typename ProcessContext>
76 void process (
const ProcessContext& context)
noexcept
78 const auto& inputBlock = context.getInputBlock();
79 auto& outputBlock = context.getOutputBlock();
81 const auto numInputChannels = inputBlock.getNumChannels();
82 const auto numOutputChannels = outputBlock.getNumChannels();
83 [[maybe_unused]]
const auto numSamples = outputBlock.getNumSamples();
85 jassert (inputBlock.getNumSamples() == numSamples);
87 if (numOutputChannels != 2 || numInputChannels == 0 || numInputChannels > 2)
90 if (numInputChannels == 2)
92 outputBlock.copyFrom (inputBlock);
96 outputBlock.getSingleChannelBlock (0).copyFrom (inputBlock);
97 outputBlock.getSingleChannelBlock (1).copyFrom (inputBlock);
100 if (context.isBypassed)
103 outputBlock.getSingleChannelBlock (0).multiplyBy (leftVolume);
104 outputBlock.getSingleChannelBlock (1).multiplyBy (rightVolume);
112 Rule currentRule = Rule::balanced;
113 SampleType pan = 0.0;
115 double sampleRate = 44100.0;
void process(const ProcessContext &context) noexcept
void prepare(const ProcessSpec &spec)
void setPan(SampleType newPan)
void setRule(Rule newRule)