Vital
Loading...
Searching...
No Matches
chorus_module.h
Go to the documentation of this file.
1#pragma once
2
3#include "synth_module.h"
4#include "delay.h"
5
6namespace vital {
7
18 class ChorusModule : public SynthModule {
19 public:
21 static constexpr mono_float kMaxChorusModulation = 0.03f;
23 static constexpr mono_float kMaxChorusDelay = 0.08f;
25 static constexpr int kMaxDelayPairs = 4;
26
32 ChorusModule(const Output* beats_per_second);
33 virtual ~ChorusModule() { }
34
38 void init() override;
39
47 void enable(bool enable) override;
48
58 void processWithInput(const poly_float* audio_in, int num_samples) override;
59
65 void correctToTime(double seconds) override;
66
73 Processor* clone() const override { VITAL_ASSERT(false); return nullptr; }
74
83
84 protected:
87
89
91
97
101
103
106
107 JUCE_LEAK_DETECTOR(ChorusModule)
108 };
109} // namespace vital
A chorus effect module that modulates delayed signals to create thickening and widening of the sound.
Definition chorus_module.h:18
poly_float dry_
Current dry amount (for wet/dry mixing).
Definition chorus_module.h:100
static constexpr mono_float kMaxChorusModulation
The maximum modulation depth in seconds (for delay time modulation).
Definition chorus_module.h:21
Value * voices_
Control for the number of chorus voices.
Definition chorus_module.h:86
poly_float phase_
Current modulation phase.
Definition chorus_module.h:98
virtual ~ChorusModule()
Definition chorus_module.h:33
static constexpr int kMaxDelayPairs
The maximum number of delay line pairs (voices).
Definition chorus_module.h:25
const Output * beats_per_second_
A reference for tempo synchronization.
Definition chorus_module.h:85
Processor * clone() const override
Clones this chorus module.
Definition chorus_module.h:73
void init() override
Initializes the chorus module, setting up controls and linking parameters.
Definition chorus_module.cpp:30
MultiDelay * delays_[kMaxDelayPairs]
The delay processors that implement the chorus voices.
Definition chorus_module.h:105
Output * wet_output_
Control for the wet/dry mix.
Definition chorus_module.h:96
void processWithInput(const poly_float *audio_in, int num_samples) override
Processes the input audio through the chorus effect.
Definition chorus_module.cpp:84
cr::Output delay_status_outputs_[kMaxDelayPairs]
Outputs for delay status or frequency debug information.
Definition chorus_module.h:90
void enable(bool enable) override
Enables or disables the chorus module.
Definition chorus_module.cpp:60
poly_float delay_input_buffer_[kMaxBufferSize]
Temporary buffer for input before delays.
Definition chorus_module.h:102
ChorusModule(const Output *beats_per_second)
Constructs a ChorusModule.
Definition chorus_module.cpp:9
int last_num_voices_
Tracks the last known number of voices to detect changes.
Definition chorus_module.h:88
static constexpr mono_float kMaxChorusDelay
The maximum chorus delay time in seconds.
Definition chorus_module.h:23
Output * frequency_
Control for modulation frequency (can be free-running or tempo-synced).
Definition chorus_module.h:92
Output * delay_time_1_
Control for the first delay time parameter.
Definition chorus_module.h:93
cr::Value delay_frequencies_[kMaxDelayPairs]
Holds frequency parameter values for each delay line.
Definition chorus_module.h:104
Output * delay_time_2_
Control for the second delay time parameter.
Definition chorus_module.h:94
poly_float wet_
Current wet amount (for wet/dry mixing).
Definition chorus_module.h:99
Output * mod_depth_
Control for modulation depth.
Definition chorus_module.h:95
int getNextNumVoicePairs()
Retrieves and updates the number of active voice pairs based on control inputs.
Definition chorus_module.cpp:73
void correctToTime(double seconds) override
Adjusts the internal phase to align with a given time, useful for syncing to host position.
Definition chorus_module.cpp:170
A flexible delay line effect processor that can operate in various styles and apply filtering.
Definition delay.h:47
Base class for all signal-processing units in Vital.
Definition processor.h:212
A ProcessorRouter that encapsulates a cohesive unit of functionality in the synthesizer.
Definition synth_module.h:129
A Processor that maintains and outputs a constant poly_float value.
Definition value.h:24
A control-rate variant of the Value processor.
Definition value.h:82
#define VITAL_ASSERT(x)
Definition common.h:11
Contains classes and functions used within the Vital synthesizer framework.
constexpr int kMaxBufferSize
Maximum buffer size for processing.
Definition common.h:39
float mono_float
Definition common.h:33
Holds and manages a buffer of samples (poly_float) for a Processor's output.
Definition processor.h:35
A specialized Output that always runs at control rate (buffer_size = 1).
Definition processor.h:189
Represents a vector of floating-point values using SIMD instructions.
Definition poly_values.h:600
Defines the SynthModule class which extends ProcessorRouter to form a building block of the Vital syn...