Vital
Loading...
Searching...
No Matches
decimator.h
Go to the documentation of this file.
1#pragma once
2
3#include "processor_router.h"
4#include "synth_constants.h"
5
6namespace vital {
7
8 // Forward declaration of IirHalfbandDecimator
9 class IirHalfbandDecimator;
10
19 class Decimator : public ProcessorRouter {
20 public:
25 enum {
28 };
29
35 Decimator(int max_stages = 1);
36
40 virtual ~Decimator();
41
45 void init() override;
46
52 void reset(poly_mask reset_mask) override;
53
58 virtual Processor* clone() const override { VITAL_ASSERT(false); return nullptr; }
59
65 virtual void process(int num_samples) override;
66
72 virtual void setOversampleAmount(int) override { }
73
74 private:
78 int num_stages_;
79
83 int max_stages_;
84
88 std::vector<IirHalfbandDecimator*> stages_;
89
90 JUCE_LEAK_DETECTOR(Decimator)
91 };
92} // namespace vital
A ProcessorRouter that intelligently reduces audio sample rate based on configured stages.
Definition decimator.h:19
Decimator(int max_stages=1)
Constructs a Decimator with a specified maximum number of halfband stages.
Definition decimator.cpp:14
virtual Processor * clone() const override
Cloning not implemented for the Decimator.
Definition decimator.h:58
virtual void process(int num_samples) override
Main audio processing routine that checks required decimation stages and processes them.
Definition decimator.cpp:63
virtual void setOversampleAmount(int) override
No-op for oversample amount setting, handled internally.
Definition decimator.h:72
void reset(poly_mask reset_mask) override
Resets all decimator stages for specified voices.
Definition decimator.cpp:49
@ kNumInputs
Definition decimator.h:27
@ kAudio
The main audio input to be decimated.
Definition decimator.h:26
virtual ~Decimator()
Destructor. Cleans up decimator stages.
Definition decimator.cpp:27
void init() override
Initializes the Decimator, hooking up audio connections for each stage.
Definition decimator.cpp:35
Base class for all signal-processing units in Vital.
Definition processor.h:212
A specialized Processor that manages a directed graph of Processors and ensures correct processing or...
Definition processor_router.h:34
#define VITAL_ASSERT(x)
Definition common.h:11
Contains classes and functions used within the Vital synthesizer framework.
Declares the ProcessorRouter class, which manages a graph of Processors and their dependencies.
Represents a vector of integer values using SIMD instructions.
Definition poly_values.h:56