diff options
| author | grm <grm@eyesin.space> | 2025-11-23 22:54:56 +0200 |
|---|---|---|
| committer | grm <grm@eyesin.space> | 2025-11-23 22:54:56 +0200 |
| commit | a4acc4cd3a4ef237fb7238894336bbc4af659e07 (patch) | |
| tree | 68d05d5cc4c1900e6c19ee9bf3b6b06a1ce5fafd /src/generator.c | |
| parent | 8f00dd3df55677beff2924d2c6eec205744ebdf6 (diff) | |
| download | synth-project-a4acc4cd3a4ef237fb7238894336bbc4af659e07.tar.gz synth-project-a4acc4cd3a4ef237fb7238894336bbc4af659e07.tar.bz2 synth-project-a4acc4cd3a4ef237fb7238894336bbc4af659e07.zip | |
add lsan supression
Diffstat (limited to 'src/generator.c')
| -rw-r--r-- | src/generator.c | 114 |
1 files changed, 91 insertions, 23 deletions
diff --git a/src/generator.c b/src/generator.c index ab2206f..de75bc8 100644 --- a/src/generator.c +++ b/src/generator.c @@ -3,21 +3,30 @@ #include "generator.h" +float play_tree(sound_node *root, midi_note_t *note) +{ + (void) root; + (void) note; + return 0; +} float generate(generator * g, synth_t * s, int i, sound_node * root) { + (void) g; float sample = 0; - sampe = play_tree(root, s->midi_note[i]); - + sample = play_tree(root, &s->midi_note[i]); + return sample; } int sound_tree_add_node(sound_node * root, const char * cmp) { - + (void) root; + (void) cmp; + return 0; } int @@ -25,52 +34,111 @@ load_preset(sound_node * tree, const char * path) { config_t cfg; config_setting_t *setting, *x; - const char *str; config_init(&cfg); - if (! config_read_file(&cfg, "../preset.synth")) { + if (! config_read_file(&cfg, path)) { fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg)); config_destroy(&cfg); return(EXIT_FAILURE); - } - setting = config_lookup(&cfg, "patch"); - if (setting != NULL) { - int count = config_setting_length(setting); - - for(int i = 0; i < count; ++i) { - x = config_setting_get_elem(setting, i); - printf("%s = %f\n", config_setting_name(x), config_setting_get_float(x)); - // TODO - sound_tree_add_node(tree, name); - } } - setting = config_tree_setting(&cfg); + setting = config_root_setting(&cfg); if (setting != NULL) { int count = config_setting_length(setting); for(int i = 0; i < count; ++i) { - chat * name = config_setting_name(x); x = config_setting_get_elem(setting, i); + char * name = config_setting_name(x); printf("%s -- %d\n", config_setting_name(x), config_setting_type(x)); if (name[0] == 'o') { // osc // TODO - configure_osc(tree, id); + printf("Creating osc: %s\n", config_setting_name(x)); + int count2 = config_setting_length(x); + config_setting_t *s; + + for (int j = 0; j < count2; ++j) { + s = config_setting_get_elem(x, j); + printf("%s -> ", config_setting_name(s)); + switch (config_setting_type(s)) { + case CONFIG_TYPE_INT: + printf("%d\n", config_setting_get_int(s)); + break; + case CONFIG_TYPE_FLOAT: + printf("%f\n", config_setting_get_float(s)); + break; + case CONFIG_TYPE_STRING: + printf("%s\n", config_setting_get_string(s)); + break; + } + } + + //configure_osc(tree, id); } else if (name[0] == 'a') { // adsr // TODO - configure_adsr(tree, id); + printf("Creating adsr: %s\n", config_setting_name(x)); + int count2 = config_setting_length(x); + config_setting_t *s; + + for (int j = 0; j < count2; ++j) { + s = config_setting_get_elem(x, j); + printf("%s -> ", config_setting_name(s)); + switch (config_setting_type(s)) { + case CONFIG_TYPE_INT: + printf("%d\n", config_setting_get_int(s)); + break; + case CONFIG_TYPE_FLOAT: + printf("%f\n", config_setting_get_float(s)); + break; + case CONFIG_TYPE_STRING: + printf("%s\n", config_setting_get_string(s)); + break; + } + } + //configure_adsr(tree, id); } else if (name[0] == 'l') { // lfo // TODO - configure_lfo(tree, id); + printf("Creating lfo: %s\n", config_setting_name(x)); + int count2 = config_setting_length(x); + config_setting_t *s; + + for (int j = 0; j < count2; ++j) { + s = config_setting_get_elem(x, j); + printf("%s -> ", config_setting_name(s)); + switch (config_setting_type(s)) { + case CONFIG_TYPE_INT: + printf("%d\n", config_setting_get_int(s)); + break; + case CONFIG_TYPE_FLOAT: + printf("%f\n", config_setting_get_float(s)); + break; + case CONFIG_TYPE_STRING: + printf("%s\n", config_setting_get_string(s)); + break; + } + } + //configure_lfo(tree, id); } else { - printf("%s: wrong!", name); + printf("%s: wrong!\n", name); } } } - + + setting = config_lookup(&cfg, "patch"); + if (setting != NULL) { + int count = config_setting_length(setting); + + for(int i = 0; i < count; ++i) { + x = config_setting_get_elem(setting, i); + printf("adding sound node: %s = %f\n", config_setting_name(x), config_setting_type(x) == CONFIG_TYPE_INT ? (float)config_setting_get_int(x) : config_setting_get_float(x)); + // TODO + sound_tree_add_node(tree, config_setting_name(x)); + } + } + config_destroy(&cfg); + return 0; } |
