47 enum RampMode { ramp_mode_down_dead, ramp_mode_down, ramp_mode_up_dead, ramp_mode_up, ramp_mode_off };
50 list<Plugin*> to_release;
53 volatile bool stopped;
61 void try_set_ramp_mode(
RampMode oldmode,
RampMode newmode,
int oldrv,
int newrv);
69 void set_samplerate(
int samplerate);
70 bool set_plugin_list(
const list<Plugin*> &p);
71 void clear_module_states();
74 sem_getvalue(&sync_sem, &val);
79 bool wait_rt_finished();
82 void sync() { set_latch(); wait_latch(); }
85 void wait_ramp_down_finished();
87 void start_ramp_down();
89 inline bool is_down_dead() {
return get_ramp_mode() == ramp_mode_down_dead; }
90 void set_stopped(
bool v);
93 void print_chain_state(
const char *title);
106 F *rack_order_ptr[2];
120 if (set_plugin_list(p)) {
124 void commit(
bool clear,
ParamMap& pmap);
130 float *output,
float *output1,
PluginDef *plugin);
164 processing_pointer() {
166 current_pointer[0].func = 0;
167 processing_pointer = current_pointer;
169 current_pointer = rack_order_ptr[1];
174 delete[] rack_order_ptr[0];
175 delete[] rack_order_ptr[1];
181 if (n <= size[current_index]) {
184 delete[] rack_order_ptr[current_index];
185 rack_order_ptr[current_index] =
new F[n];
186 size[current_index] = n;
187 current_pointer = rack_order_ptr[current_index];
192 setsize(modules.size()+1);
193 int active_counter = 0;
194 for (list<Plugin*>::const_iterator p = modules.begin(); p != modules.end(); p++) {
198 (*p)->set_on_off(
false);
206 current_pointer[active_counter++] = f;
208 current_pointer[active_counter].func = 0;
211 current_index = (current_index+1) % 2;
212 current_pointer = rack_order_ptr[current_index];
222 void process(
int count,
float *input,
float *output);
229 void process(
int count,
float *input1,
float *input2,
float *output1,
float *output2);
262 void init(
unsigned int samplerate,
unsigned int buffersize,
263 int policy,
int priority);
264 virtual void wait_ramp_down_finished() = 0;
265 virtual bool update_module_lists() = 0;
266 virtual void start_ramp_up() = 0;
267 virtual void start_ramp_down() = 0;
268 virtual void overload(
OverloadType tp,
const char *reason) = 0;
269 void set_samplerate(
unsigned int samplerate_);
271 void set_buffersize(
unsigned int buffersize_);
273 virtual void set_rack_changed() = 0;
274 void clear_rack_changed();
275 bool get_rack_changed();
280 void get_sched_priority(
int &policy,
int &priority,
int prio_dim = 0);
307 void check_overload();
312 SF_NO_CONNECTION = 0x01,
313 SF_JACK_RECONFIG = 0x02,
314 SF_INITIALIZING = 0x04,
324 virtual void set_samplerate(
unsigned int samplerate);
325 virtual void start_ramp_up();
326 virtual void start_ramp_down();
327 virtual void wait_ramp_down_finished();
330 wait_ramp_down_finished();
336 bool prepare_module_lists();
337 void commit_module_lists();
338 virtual void set_rack_changed();
339 virtual bool update_module_lists();
340 bool check_module_lists();
341 virtual void overload(
OverloadType tp,
const char *reason);
349 void print_engine_state();
ModuleSelector(EngineControl &seq_)
StereoModuleChain stereo_chain
clearstatefunc clear_state
MonoModuleChain mono_chain
void printlist(const char *title, const list< Plugin *> &modules, bool header=true)
void set_ramp_value(int n)
void set_ramp_mode(RampMode n)
sigc::signal< void, GxEngineState > state_change
void empty_chain(ParamMap &pmap)
int atomic_get(volatile int &p)
list< ModuleSelector * > selectors
void(* stereochainorder)(int count, float *input, float *input1, float *output, float *output1, PluginDef *plugin)
virtual void set_module()=0
sigc::signal< void, unsigned int > samplerate_change
sigc::signal< void, unsigned int > buffersize_change
monochain_data(monochainorder func_, PluginDef *plugin_)
virtual ~ModuleSelector()
void clear_module_states()
stereochain_data(stereochainorder func_, PluginDef *plugin_)
void clear_module_states()
Glib::Dispatcher overload_detected
unsigned int get_samplerate()
sigc::signal< void, GxEngineState > & signal_state_change()
activatefunc activate_plugin
static int sporadic_interval
process_stereo_audio stereo_audio
void atomic_set(volatile int *p, int v)
const char * overload_reason
boost::mutex stateflags_mutex
static void set_overload_interval(int i)
sigc::connection rack_changed
process_mono_audio mono_audio
unsigned int get_buffersize()
bool next_commit_needs_ramp
void(* monochainorder)(int count, float *output, float *output1, PluginDef *plugin)
sigc::signal< void, unsigned int > & signal_samplerate_change()
sigc::signal< void, unsigned int > & signal_buffersize_change()