46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#ifndef INCLUDE_CTRL_SOURCE_H
|
|
#define INCLUDE_CTRL_SOURCE_H
|
|
|
|
#include "eca-audio-position.h"
|
|
#include "eca-operator.h"
|
|
|
|
/**
|
|
* Interface class for implementing control data
|
|
* source objects.
|
|
*/
|
|
class CONTROLLER_SOURCE : public OPERATOR {
|
|
|
|
public:
|
|
|
|
typedef SAMPLE_SPECS::sample_t parameter_t;
|
|
|
|
/**
|
|
* Initializes the controller source.
|
|
*
|
|
* This function is called at least once before
|
|
* the first call to value().
|
|
*/
|
|
virtual void init(void) = 0;
|
|
|
|
/**
|
|
* Returns the current value for the given
|
|
* position.
|
|
*/
|
|
virtual parameter_t value(double pos_secs) = 0;
|
|
/**
|
|
* Sets an initial value for the controller.
|
|
*
|
|
* Controllers that are driven by external sources, can use the
|
|
* initial value if there is an initial gap in control data. The
|
|
* standard value range ofs [0,1] should be used.
|
|
*
|
|
* Should be set before the first call to value().
|
|
*/
|
|
virtual void set_initial_value(parameter_t arg) = 0;
|
|
|
|
virtual CONTROLLER_SOURCE* clone(void) const = 0;
|
|
virtual CONTROLLER_SOURCE* new_expr(void) const = 0;
|
|
};
|
|
|
|
#endif
|