7. TODO Patchwerk Node
Bugz is implemented inside of a patchwerk node.
This means a few things:
it gets created with a function called node_bugz
.
What are the i-rate parameters?
It has cables, some for input, some for output. What are those cable names and parameters?
7 cables total:
0: Input 1: Record Gate 2: Decay Time 3: Delay Time 4: Density 5: Grain Duration 6: Output
<<funcdefs>>=
int node_bugz(pw_node *node, int maxbugz);
<<funcs>>=
int node_bugz(pw_node *node, int maxbugz)
{
int rc;
pw_patch *patch;
void *ud;
bugz_synth *bugz;
rc = pw_node_get_patch(node, &patch);
if (rc != PW_OK) return rc;
rc = pw_memory_alloc(patch, sizeof(bugz_synth), &ud);
if (rc != PW_OK) return rc;
bugz = ud;
/* TODO: init bugz */
pw_node_cables_alloc(node, 7);
pw_node_set_block(node, 6);
/* TODO: bind cables? */
pw_node_set_compute(node, compute);
pw_node_set_destroy(node, destroy);
pw_node_set_data(node, bugz);
return PW_OK;
}
<<static_funcdefs>>=
static void compute(pw_node *node);
<<funcs>>=
static void compute(pw_node *node)
{
/* TODO: implement */
}
<<static_funcdefs>>=
static void destroy(pw_node *node);
<<funcs>>=
static void destroy(pw_node *node)
{
pw_patch *patch;
int rc;
void *ud;
pw_node_cables_free(node);
rc = pw_node_get_patch(node, &patch);
if (rc != PW_OK) return;
ud = pw_node_get_data(node);
pw_memory_free(patch, &ud);
}
prev | home | next