3#ifndef PRINTLINES_ALLOWED
4#define PRINTLINES_ALLOWED 0
7#define INITIAL_PARAMETER_ARRAY_LENGTH 8
8#define PARAMETER_ARRAY_CHUNK_SIZE 8
10#define INITIAL_OPTION_ARRAY_LENGTH 8
11#define OPTION_ARRAY_CHUNK_SIZE 8
13static const char *FNAME =
"kest_effect.c";
44 effect->view_page = NULL;
88 #ifdef KEST_USE_FREERTOS
89 effect->mutex = xSemaphoreCreateMutex();
92 #ifdef KEST_ENABLE_REPRESENTATIONS
94 effect->profile_rep.representer = NULL;
95 effect->profile_rep.representee = effect;
97 kest_representation_pll_safe_append(&effect->reps, &effect->profile_rep);
108 kest_parameter_pll *current_param = eff->
parameters;
109 kest_setting_pll *current_setting = eff->
settings;
111 while (current_param)
114 current_param = current_param->next;
119 while (current_setting)
122 current_setting = current_setting->next;
135 kest_parameter_pll *current_param = effect->
parameters;
137 while (current_param)
139 if (current_param->data)
142 current_param->data->id.profile_id = effect->
profile->
id;
143 current_param->data->id.effect_id = effect->
id;
146 current_param = current_param->next;
151 while (current_setting)
153 if (current_setting->data)
156 current_setting->data->id.profile_id = effect->
profile->
id;
157 current_setting->data->id.effect_id = effect->
id;
160 current_setting = current_setting->next;
183 effect->
id = effect_id;
199 kest_message msg = create_m_message(KEST_MESSAGE_APPEND_TRANSFORMER,
"ss", local->
profile->
id, local->
type);
200 msg.callback = effect_receive_id;
203 return queue_msg_to_teensy(msg);
210void effect_receive_id(kest_message message, kest_response response)
220 memcpy(&pid, &response.data[0],
sizeof(uint16_t));
221 memcpy(&tid, &response.data[2],
sizeof(uint16_t));
225 KEST_PRINTF(
"Transformer ID for effect in profile %d sent to effect in %d\n", pid, effect->
profile->
id);
229 KEST_PRINTF(
"Transformer %p obtains id %d.%d\n", effect, pid, tid);
251 kest_parameter_pll *nl = kest_parameter_pll_append(effect->
parameters, param);
295 KEST_PRINTF(
"effect_init_ui_page. effect = %p, parent = %p\n", effect, parent);
301 if (!effect->view_page)
307 effect->view_page->parent = parent;
358 kest_parameter_pll *current_param = src->
parameters;
361 while (current_param)
363 if(current_param->data)
377 current_param = current_param->next;
383 while (current_setting)
385 if(current_setting->data)
399 current_setting = current_setting->next;
402 #ifdef KEST_ENABLE_UI
403 src->view_page = NULL;
422 #ifdef KEST_ENABLE_UI
424 effect->view_page = NULL;
441 #ifdef KEST_ENABLE_UI
453 kest_parameter_pll *current = effect->
parameters;
456 while (current && i < n)
458 current = current->next;
462 return current ? current->data : NULL;
474 while (current && i < n)
476 current = current->next;
480 return current ? current->data : NULL;
485 #ifdef KEST_ENABLE_FPGA
519 kest_parameter_pll *current_param = effect->
parameters;
520 kest_setting_pll *current_setting = effect->
settings;
521 kest_named_expression_pll *current_def_expr = effect->
eff ? effect->
eff->
def_exprs : NULL;
523 while (current_param)
525 if (current_param->data)
528 current_param = current_param->next;
531 while (current_setting)
533 if (current_setting->data)
536 current_setting = current_setting->next;
540 while (current_def_expr)
542 if (current_def_expr->data)
545 current_def_expr = current_def_expr->next;
558 kest_parameter_pll *current = effect->
parameters;
562 if (current && current->data && current->data->name_internal && (strcmp(current->data->name_internal, name) == 0))
564 current->data->value = value;
568 current = current->next;
581 kest_setting_pll *current = effect->
settings;
585 if (current && current->data && current->data->name_internal && (strcmp(current->data->name_internal, name) == 0))
587 current->data->value = value;
591 current = current->next;
600 #ifdef KEST_ENABLE_REPRESENTATIONS
604 if (!representer || !representee)
615 #ifdef KEST_ENABLE_REPRESENTATIONS
void kest_free(void *ptr)
void * kest_alloc(size_t size)
void kest_effect_profile_rep_update(void *representer, void *representee)
int kest_effect_init_view_page(kest_effect *effect, struct kest_ui_page *parent)
#define TRANSFORMER_MODE_UPPER_SPECTRUM
#define TRANSFORMER_BAND_LP_CUTOFF_PID
#define TRANSFORMER_WET_MIX_PID
#define TRANSFORMER_MODE_FULL_SPECTRUM
#define TRANSFORMER_BAND_MODE_SID
#define TRANSFORMER_MODE_BAND
#define TRANSFORMER_MODE_LOWER_SPECTRUM
#define TRANSFORMER_BAND_HP_CUTOFF_PID
int init_effect_view(kest_ui_page *page)
int free_effect_view(kest_ui_page *page)
int configure_effect_view(kest_ui_page *page, void *data)
#define ERR_FEATURE_DISABLED
int kest_expr_scope_add_param(kest_expr_scope *scope, kest_parameter *param)
kest_expr_scope * kest_new_expr_scope()
int kest_expr_scope_add_setting(kest_expr_scope *scope, kest_setting *setting)
int kest_expr_scope_add_expr(kest_expr_scope *scope, const char *name, struct kest_expression *expr)
kest_expression kest_expression_zero
kest_expression kest_expression_freq_max
kest_expression kest_expression_one
int save_profile(kest_profile *profile)
int kest_fpga_queue_transfer_batch(kest_fpga_transfer_batch batch)
int kest_fpga_transfer_batch_append_effect_register_updates(kest_fpga_transfer_batch *batch, kest_effect_desc *eff, kest_expr_scope *scope, int pos)
kest_fpga_transfer_batch kest_new_fpga_transfer_batch()
#define IMPLEMENT_LINKED_PTR_LIST(X)
int clone_setting(kest_setting *dest, kest_setting *src)
int init_parameter(kest_parameter *param, const char *name, float level, float min, float max)
int init_parameter_str(kest_parameter *param)
void gut_setting(kest_setting *setting)
int init_setting(kest_setting *setting, const char *name, uint16_t level)
void kest_setting_free(kest_setting *setting)
int init_setting_str(kest_setting *setting)
void kest_parameter_free(kest_parameter *param)
kest_setting * kest_setting_make_clone_for_effect(kest_setting *src, kest_effect *effect)
kest_parameter * kest_parameter_make_clone_for_effect(kest_parameter *src, kest_effect *effect)
kest_setting_pll setting_ll
#define PARAMETER_SCALE_LOGARITHMIC
int queue_representation_list_update(kest_representation_pll *reps)
int init_ui_page(kest_ui_page *page)
kest_parameter_pll * parameters
kest_setting_pll * settings
kest_named_expression_pll * def_exprs
kest_setting_pll * settings
kest_parameter band_lp_cutoff
kest_parameter band_hp_cutoff
struct kest_profile * profile
kest_parameter_pll * parameters
struct kest_expression * min_expr
struct kest_expression * max_expr
kest_setting_option * options