#include <fadable_delay.hh>
A time modulatable delay.
This module contains two delays running at the same time. When the "duration" input changes, one of the delay's duration is reset, and the output fades from the old delay to the new one. This approach is inspired by the ddi
method (Double Delay with Interpolation) in Faust.
Note that the duration is in samples. So to set up a control for a FadeDelay object that ranges from a milliscond to a second, you would do something like the following:
Where controls is a Controls object and "49" refers to a midi input id.
[in] | signal | |
[in] | duration | |
[out] | signal |
Public Types | |
enum | STATE { NORMAL , RECORDING , FADING } |
Public Member Functions | |
void | init () |
void | update () |
![]() | |
void | init () |
void | update () |
Container & | add (Module &module) |
Container & | add_if_new (Module &module) |
Container & | propagate_to (EventManager &em) |
void | run (int num_steps) |
void | run_again (int num_steps) |
void | stop () |
Container & | connect (Module &source, string output, Module &dest, string input) |
Container & | connect (Module &source, string output, Module &dest, int input) |
Container & | connect (AutoLoad &loader, string category, Module &module) |
Container & | connect (Module &source, Module &dest) |
Container & | path (Module &a, Module &b, Module &c) |
Container & | path (Module &a, Module &b, Module &c, Module &d) |
Container & | path (Module &a, Module &b, Module &c, Module &d, Module &e) |
Container & | disconnect (Module &source, string output, Module &dest, string input) |
bool | connected (Module *module, string input_name) |
Container & | equate_input (string input, Module &sub_module, string sub_input) |
Container & | attach_inputs (std::vector< std::tuple< string, Module &, string > > attachments) |
Container & | equate_output (string output, Module &sub_module, string sub_output) |
Container & | attach_outputs (std::vector< std::tuple< string, Module &, string > > attachments) |
Container & | set_thread_number (int n) |
EXPERIMENTAL. | |
Container & | add (Module &module, int n) |
EXPERIMENTAL. | |
void | run_threaded (int num_steps) |
EXPERIMENTAL. | |
void | update_threaded () |
EXPERIMENTAL. | |
void | thread_loop (int i) |
EXPERIMENTAL. | |
![]() | |
virtual void | init ()=0 |
virtual void | update ()=0 |
int | add_input (string name) |
int | add_output (string name) |
int | get_input_index (string name) const |
string | get_input_name (int index) const |
string | get_output_name (int index) const |
int | get_output_index (string name) const |
void | set_input (string name, double value) |
void | set_input (int index, double value) |
double | get_input (int index) const |
double | get_input (string name) const |
double | get_output (string name) const |
double | get_output (int index) const |
void | set_output (int index, double value) |
void | copy_inputs (const Module &source) |
void | copy_outputs (Module &destination) const |
void | configure (std::vector< std::tuple< string, double > > assignments) |
int | num_inputs () const |
int | num_outputs () const |
void | emit (Event e) |
void | set_ts (double s) |
double | get_ts () |
![]() | |
EventManager () | |
Make a new event manager. | |
void | process_events (vector< Module * > &modules) |
void | respond_to (const Event &event) |
EventManager & | listen (int event_type, function< void(const Event &)> handler) |
EventManager & | listen (int event_type, int port, function< void(const Event &)> handler) |
Public Attributes | |
const double | FADE_TIME = 0.1 |
|
virtual |
This method should be overridden by derived classes. It will usually be called once, after all modules and connections objects have been added to a synthesizer, but before the synthesizer starts running.
Reimplemented from yase::Container.
|
virtual |
This method should be overridden by derived classes. It will be called repeatedly by a synthesizer at a frequency determined by SAMPLE_RATE.
Reimplemented from yase::Container.