finished audio effects support in audio renderer
Working structure implemented in previous commit into the audio renderer is complete in this commit.
This commit is contained in:
@@ -39,19 +39,19 @@ QString PanNode::Description() const
|
||||
return tr("Adjust the stereo panning of an audio source.");
|
||||
}
|
||||
|
||||
bool PanNode::ProcessesSamples() const
|
||||
NodeInput *PanNode::ProcessesSamplesFrom() const
|
||||
{
|
||||
return true;
|
||||
return samples_input_;
|
||||
}
|
||||
|
||||
void PanNode::ProcessSamples(const NodeValueDatabase &values, const AudioRenderingParams ¶ms, const float *input, float *output, int index) const
|
||||
void PanNode::ProcessSamples(const NodeValueDatabase *values, const AudioRenderingParams ¶ms, const float *input, float *output, int index) const
|
||||
{
|
||||
if (params.channel_count() != 2) {
|
||||
// This node currently only works for stereo audio
|
||||
return;
|
||||
}
|
||||
|
||||
float pan_val = values[panning_input_].Get(NodeParam::kFloat).toFloat();
|
||||
float pan_val = (*values)[panning_input_].Get(NodeParam::kFloat).toFloat();
|
||||
|
||||
if (index%2 == 0) {
|
||||
// Sample is left channel
|
||||
@@ -65,3 +65,9 @@ void PanNode::ProcessSamples(const NodeValueDatabase &values, const AudioRenderi
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PanNode::Retranslate()
|
||||
{
|
||||
samples_input_->set_name(tr("Samples"));
|
||||
panning_input_->set_name(tr("Pan"));
|
||||
}
|
||||
|
||||
@@ -15,8 +15,10 @@ public:
|
||||
virtual QString Category() const override;
|
||||
virtual QString Description() const override;
|
||||
|
||||
virtual bool ProcessesSamples() const override;
|
||||
virtual void ProcessSamples(const NodeValueDatabase& values, const AudioRenderingParams& params, const float* input, float* output, int index) const override;
|
||||
virtual NodeInput* ProcessesSamplesFrom() const override;
|
||||
virtual void ProcessSamples(const NodeValueDatabase* values, const AudioRenderingParams& params, const float* input, float* output, int index) const override;
|
||||
|
||||
virtual void Retranslate() override;
|
||||
|
||||
private:
|
||||
NodeInput* samples_input_;
|
||||
|
||||
@@ -39,14 +39,25 @@ QString VolumeNode::Description() const
|
||||
return tr("Adjusts the volume of an audio source.");
|
||||
}
|
||||
|
||||
bool VolumeNode::ProcessesSamples() const
|
||||
NodeInput *VolumeNode::ProcessesSamplesFrom() const
|
||||
{
|
||||
return true;
|
||||
return samples_input_;
|
||||
}
|
||||
|
||||
void VolumeNode::ProcessSamples(const NodeValueDatabase& values, const AudioRenderingParams& params, const float* input, float* output, int index) const
|
||||
void VolumeNode::ProcessSamples(const NodeValueDatabase *values, const AudioRenderingParams& params, const float* input, float* output, int index) const
|
||||
{
|
||||
float volume_val = values[volume_input_].Get(NodeParam::kFloat).toFloat();
|
||||
float volume_val = (*values)[volume_input_].Get(NodeParam::kFloat).toFloat();
|
||||
|
||||
output[index] = input[index] * volume_val;
|
||||
}
|
||||
|
||||
void VolumeNode::Retranslate()
|
||||
{
|
||||
samples_input_->set_name(tr("Samples"));
|
||||
volume_input_->set_name(tr("Volume"));
|
||||
}
|
||||
|
||||
NodeInput *VolumeNode::samples_input() const
|
||||
{
|
||||
return samples_input_;
|
||||
}
|
||||
|
||||
@@ -15,8 +15,12 @@ public:
|
||||
virtual QString Category() const override;
|
||||
virtual QString Description() const override;
|
||||
|
||||
virtual bool ProcessesSamples() const override;
|
||||
virtual void ProcessSamples(const NodeValueDatabase& values, const AudioRenderingParams& params, const float* input, float* output, int index) const override;
|
||||
virtual NodeInput* ProcessesSamplesFrom() const override;
|
||||
virtual void ProcessSamples(const NodeValueDatabase* values, const AudioRenderingParams& params, const float* input, float* output, int index) const override;
|
||||
|
||||
virtual void Retranslate() override;
|
||||
|
||||
NodeInput* samples_input() const;
|
||||
|
||||
private:
|
||||
NodeInput* samples_input_;
|
||||
|
||||
+3
-3
@@ -390,12 +390,12 @@ NodeInput *Node::AcceleratedCodeIterativeInput() const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool Node::ProcessesSamples() const
|
||||
NodeInput* Node::ProcessesSamplesFrom() const
|
||||
{
|
||||
return false;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Node::ProcessSamples(const NodeValueDatabase &values, const AudioRenderingParams ¶ms, const float *input, float *output, int index) const
|
||||
void Node::ProcessSamples(const NodeValueDatabase *values, const AudioRenderingParams ¶ms, const float *input, float *output, int index) const
|
||||
{
|
||||
Q_UNUSED(values)
|
||||
Q_UNUSED(params)
|
||||
|
||||
+2
-2
@@ -160,12 +160,12 @@ public:
|
||||
/**
|
||||
* @brief Return whether this node processes samples or not
|
||||
*/
|
||||
virtual bool ProcessesSamples() const;
|
||||
virtual NodeInput* ProcessesSamplesFrom() const;
|
||||
|
||||
/**
|
||||
* @brief If ProcessesSamples() is true, this is the function that will process them.
|
||||
*/
|
||||
virtual void ProcessSamples(const NodeValueDatabase& values, const AudioRenderingParams& params, const float* input, float* output, int index) const;
|
||||
virtual void ProcessSamples(const NodeValueDatabase *values, const AudioRenderingParams& params, const float* input, float* output, int index) const;
|
||||
|
||||
/**
|
||||
* @brief Returns the parameter with the specified ID (or nullptr if it doesn't exist)
|
||||
|
||||
Reference in New Issue
Block a user