From f2683a4b707cd714b7f540ebf6482563df83d51e Mon Sep 17 00:00:00 2001 From: erdgeist Date: Sat, 8 Apr 2017 14:21:36 +0200 Subject: Near complete rewrite. --- config.c | 69 ++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 32 deletions(-) (limited to 'config.c') diff --git a/config.c b/config.c index fb8a6fa..e373727 100644 --- a/config.c +++ b/config.c @@ -8,9 +8,9 @@ int g_midi_main_control = -1; int g_midi_main_channel = 0; -int g_midi_two_octave_split = 256 / 2; -int g_midi_three_octave_split_1 = 256 / 3; -int g_midi_three_octave_split_2 = 512 / 3; +int g_midi_two_octave_split = 50; +int g_midi_three_octave_split_1 = 33; +int g_midi_three_octave_split_2 = 66; int g_midi_three_octave_split_inverse = 0; int g_settled_dist = 5; int g_timetosilence = 30; @@ -33,12 +33,14 @@ config_reset() g_midi_main_control = -1; g_midi_main_channel = 0; - g_midi_two_octave_split = 256 / 2; - g_midi_three_octave_split_1 = 256 / 3; - g_midi_three_octave_split_2 = 512 / 3; + g_midi_two_octave_split = 50; + g_midi_three_octave_split_1 = 33; + g_midi_three_octave_split_2 = 66; g_midi_three_octave_split_inverse = 0; g_settled_dist = 5; g_timetosilence = 30; + + g_config_source = source_none; } @@ -206,23 +208,19 @@ config_handle_line(char *line) { LLine *l = &sc->line; - if (sscanf(line, "%d %d %d %d", &l->x0, &l->y0, &l->x1, &l->y1) != 4) { + if (sscanf(line, "%d %d %d %d", &l->p0.x, &l->p0.y, &l->p1.x, &l->p1.y) != 4) { fprintf(stderr, "Incorrect Line statement for string\n"); return -1; } - if (l->y0 > l->y1) { - l->y0 ^= l->y1; - l->y1 ^= l->y0; - l->y0 ^= l->y1; - l->x0 ^= l->x1; - l->x1 ^= l->x0; - l->x0 ^= l->x1; - + if (l->p0.y > l->p1.y) { + LPoint tmp = l->p0; + l->p0 = l->p1; + l->p1 = tmp; } - if (l->y0 > g_min_y) - g_min_y = l->y0; - if (l->y1 < g_max_y) - g_max_y = l->y1; + if (l->p0.y > g_min_y) + g_min_y = l->p0.y; + if (l->p0.y < g_max_y) + g_max_y = l->p1.y; break; } case KEYWORD_MODE: @@ -259,7 +257,7 @@ config_handle_line(char *line) fprintf(stderr, "Incorrect channel specified: %s.\n", _line); return -1; } - printf("String %d is on channel %d\n", g_current_string, sc->channel); + printf("String %d is on channel %d\n", 1 + g_current_string, sc->channel); break; case KEYWORD_NOTE: sc->note = config_midi_note_from_string(line); @@ -267,7 +265,7 @@ config_handle_line(char *line) fprintf(stderr, "Unknown midi note specified: %s.\n", _line); return -1; } - printf("String %d is midi note %d\n", g_current_string, sc->note); + printf("String %d is midi note %d\n", 1 + g_current_string, sc->note); break; case KEYWORD_AFTERTOUCH: switch (config_findkeyword(&line)) { @@ -315,7 +313,6 @@ config_handle_line(char *line) fprintf(stderr, "Invalid percentage in line: %s\n", _line); exit(1); } - g_midi_two_octave_split = (256 * g_midi_two_octave_split) / 100; break; case KEYWORD_THREEOCTAVESPLIT_1: g_midi_three_octave_split_1 = atol(line); @@ -324,7 +321,6 @@ config_handle_line(char *line) fprintf(stderr, "Invalid percentage in line: %s\n", _line); exit(1); } - g_midi_three_octave_split_1 = (256 * g_midi_three_octave_split_1) / 100; split_done = 1; break; case KEYWORD_THREEOCTAVESPLIT_2: @@ -334,7 +330,6 @@ config_handle_line(char *line) fprintf(stderr, "Invalid percentage in line: %s\n", _line); return -1; } - g_midi_three_octave_split_2 = (256 * g_midi_three_octave_split_2) / 100; split_done = 1; break; case KEYWORD_MIDI_MAIN_CONTROL: @@ -377,34 +372,43 @@ config_handle_line(char *line) return 0; } -void +size_t config_dumpglobals(char *out, size_t outsize) { int tos1 = g_midi_three_octave_split_inverse ? g_midi_three_octave_split_2 : g_midi_three_octave_split_1; int tos2 = g_midi_three_octave_split_inverse ? g_midi_three_octave_split_1 : g_midi_three_octave_split_2; size_t off = snprintf(out, outsize, - "Strings %d\n\nmidi_two_octave_split %d\nmidi_three_octave_split_1 %d\nmidi_three_octave_split_2 %d\nmidi_main_control %d\nmidi_main_channel %d\n", - g_string_count, g_midi_two_octave_split, tos1, tos2, g_midi_main_control, g_midi_main_channel ); + "Strings %d\n\nmidi_two_octave_split %d\nmidi_three_octave_split_1 %d\nmidi_three_octave_split_2 %d\n", + g_string_count, g_midi_two_octave_split, tos1, tos2 ); + + if (g_midi_main_control >= 0) + off += snprintf(out + off, outsize - off, + "midi_main_control %d\n\n", g_midi_main_control); + + if (g_midi_main_channel > 0) + off += snprintf(out + off, outsize - off, + "midi_main_channel %d\n\n", g_midi_main_channel); if (g_settled_dist != 5) off += snprintf(out + off, outsize - off, "SettledDist %d\n\n", g_settled_dist); - snprintf(out + off, outsize - off, "\n" ); + off += snprintf(out + off, outsize - off, "\n" ); + return off; } -void +size_t config_dumpstring(int string, char *out, size_t outsize) { StringConfig *s = g_string_conf + string; if (string < 0 || string > g_string_count || !out) { if (out && outsize) *out = 0; - return; + return 0; } size_t off = snprintf(out, outsize, "String %d\n Line %d %d %d %d\n Mode %s\n Channel %d\n Note %s\n AfterTouch %s\n Controller %d\n", - string + 1, s->line.x0, s->line.y0, s->line.x1, s->line.y1, + string + 1, s->line.p0.x, s->line.p0.y, s->line.p1.x, s->line.p1.y, mode_names[s->mode], s->channel, midi_note[s->note], modifier_names[s->modifier], s->controller ); if (s->timetosilence) @@ -413,5 +417,6 @@ config_dumpstring(int string, char *out, size_t outsize) if (s->pitch_factor) off += snprintf(out + off, outsize - off, " PitchFactor %d\n", s->pitch_factor); - snprintf(out + off, outsize - off, "\n" ); + off += snprintf(out + off, outsize - off, "\n" ); + return off; } -- cgit v1.2.3