12. TODO Step Scheme Functions
12.1. DONE Step Scheme Loader
CLOSED: [2019-06-04 Tue 18:14]
The top-level scheme loader is called s9_load_step
.
<<step_function_declarations>>=
void s9_load_step(void);
<<step_functions>>=
<<step_scheme_functions>>
static S9_PRIM step_primitives[] = {
<<step_scheme_entries>>
{NULL}
};
void s9_load_step(void)
{
add_primitives("monolith", step_primitives);
}
12.2. DONE Create New Step Page
CLOSED: [2019-04-13 Sat 22:26]
A new step page is created with monolith:step-new
.
<<step_scheme_entries>>=
{"monolith:step-new", pp_step_new, 1, 1, {STR, ___, ___}},
<<step_scheme_functions>>=
static cell pp_step_new(cell x)
{
const char *str;
monolith_d *m;
monolith_dict *dict;
monolith_page *pg;
int rc;
m = monolith_data_get();
dict = monolith_dict_get(m);
str = string(car(x));
rc = monolith_dict_newpage(dict, &pg, str, strlen(str));
if(!rc) {
return error(
"Could not create step page (maybe it already exists?)",
car(x));
}
page_step(pg);
return UNSPECIFIC;
}
12.3. DONE Step Set Playhead Position
CLOSED: [2019-08-18 Sun 05:23]
<<step_scheme_entries>>=
{"monolith:step-playpos-set", pp_step_playpos_set, 2, 2, {STR, INT, ___}},
<<step_scheme_functions>>=
static cell pp_step_playpos_set(cell x)
{
const char *str;
monolith_d *m;
monolith_dict *dict;
monolith_page *pg;
int rc;
int pos;
page_step_d *step;
m = monolith_data_get();
dict = monolith_dict_get(m);
str = string(car(x));
x = cdr(x);
pos = integer_value("monolith:step-pos", car(x));
rc = monolith_dict_lookup(dict, &pg, str, strlen(str));
if(!rc) {
return error(
"Could not find step page",
car(x));
}
step = monolith_page_data_get(pg);
page_step_playpos_set(step, pos);
page_step_draw_playhead(step);
return UNSPECIFIC;
}
12.4. TODO Step Set Note/Gate
12.5. TODO Step Set Playback
12.6. TODO Wait and Reset
<<step_scheme_entries>>=
{
"monolith:step-wait-and-reset",
pp_step_wait_and_reset,
1, 1,
{STR, ___, ___}
},
<<step_scheme_functions>>=
static cell pp_step_wait_and_reset(cell x)
{
const char *str;
monolith_d *m;
monolith_dict *dict;
monolith_page *pg;
int rc;
page_step_d *step;
m = monolith_data_get();
dict = monolith_dict_get(m);
str = string(car(x));
x = cdr(x);
rc = monolith_dict_lookup(dict, &pg, str, strlen(str));
if (!rc) {
return error(
"Could not find step page",
car(x));
}
step = monolith_page_data_get(pg);
step_wait_and_reset(step);
return UNSPECIFIC;
}
prev | home | next