From d073f301aa94cd7a8278681d8d723d74fa5d5d3f Mon Sep 17 00:00:00 2001 From: JSDurand Date: Mon, 12 Jul 2021 12:07:30 +0800 Subject: Use double instead of float I thought that a float has more precision than a double. Silly me. --- parser.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'parser.c') diff --git a/parser.c b/parser.c index 8d34121..3b0d30c 100644 --- a/parser.c +++ b/parser.c @@ -38,7 +38,7 @@ struct PUnit_s { /* Helper macro */ -#define EMPTY_NOTE ((PNote) { NULL, 0.0f, 0, NONE_TYPE, NULL }) +#define EMPTY_NOTE ((PNote) { NULL, 0.0, 0, NONE_TYPE, NULL }) #define EMPTY_UNIT ((PUnit) { NULL, 0 }) /* Helper function */ @@ -157,7 +157,7 @@ read_sheet(const char *str, LENT len) char current = 0; - float local = 0.0f; + NUMT local = 0.0; int channel_num = 0, num_chars_read = 0; int num_channels = 0; @@ -183,7 +183,7 @@ read_sheet(const char *str, LENT len) Semitones *st_pointer = NULL; /* A note without time information will use the previous beats - information. A first note without time information will use 1.0f + information. A first note without time information will use 1.0 as the beats. */ Beats *beats_channel_array = NULL; @@ -206,7 +206,7 @@ read_sheet(const char *str, LENT len) beats_channel_array = MYALLOC(Beats, num_channels); for (int i = 0; i < num_channels; i++) { - *(beats_channel_array+i) = 1.0f; + *(beats_channel_array+i) = 1.0; } } else if (note_used) { @@ -254,7 +254,7 @@ read_sheet(const char *str, LENT len) for (int i = 0; i < num_channels; i++) { *(notes_pointer+i) = EMPTY_NOTE; - *(beats_channel_array+i) = 1.0f; + *(beats_channel_array+i) = 1.0; } current_unit.notes = notes_pointer; @@ -276,7 +276,7 @@ read_sheet(const char *str, LENT len) if (*(str+counter) != '\n' && *(str+counter) != 13 && - sscanf(str+counter, "%f%n", + sscanf(str+counter, "%lf%n", &local, &num_chars_read) == 1) { temp_note = (PNote) { NULL, local, @@ -298,7 +298,7 @@ read_sheet(const char *str, LENT len) if (*(str+counter) != '\n' && *(str+counter) != 13 && - sscanf(str+counter, "%f%n", + sscanf(str+counter, "%lf%n", &local, &num_chars_read) == 1) { *(beats_channel_array+channel_num) = local; temp_note = (PNote) { @@ -326,7 +326,7 @@ read_sheet(const char *str, LENT len) /* subtract one from the increment so that we don't unknowingly skip one character. */ increment--; - } else if (sscanf(str+counter, "%f%n", + } else if (sscanf(str+counter, "%lf%n", &local, &num_chars_read) == 1) { /* a note consisting of one single semitone */ st_pointer = MYALLOC(Semitones, 1); @@ -339,7 +339,7 @@ read_sheet(const char *str, LENT len) if (*(str+counter) != '\n' && *(str+counter) != 13 && - sscanf(str+counter, "%f%n", + sscanf(str+counter, "%lf%n", &local, &num_chars_read) == 1) { *(beats_channel_array+channel_num) = local; temp_note = (PNote) { @@ -373,7 +373,7 @@ read_sheet(const char *str, LENT len) st_stack_len = 0; counter++; - for (;sscanf(str+counter, "%f %n", &local, &num_chars_read) == 1; + for (;sscanf(str+counter, "%lf %n", &local, &num_chars_read) == 1; counter += num_chars_read) { *(st_stack+st_stack_len++) = local; } @@ -485,7 +485,7 @@ sheet_note_num(const PSheet sh, LENT *nums_per_channel) H_ATTR static WaveFrag -silent_note(Beats b, float dur) +silent_note(Beats b, NUMT dur) { WaveFrag w; @@ -495,7 +495,7 @@ silent_note(Beats b, float dur) w.n = sample_num; for (LENT i = 0; i < sample_num; i++) - *(w.w+i) = 0.0f; + *(w.w+i) = 0.0; return w; } @@ -590,12 +590,12 @@ play_sheet(const PSheet sh, const Volume v) switch (pn.type) { case NOTE_TYPE: for (LENT k = 0; k < pn.len; k++) { - *(st_temp+k) = make_sound(inst, v * ((k==1) ? 0.3f : 1.0f), + *(st_temp+k) = make_sound(inst, v * ((k==1) ? 0.3 : 1.0), stoh(*(pn.tones+k)), pn.secs * dur); } break; case BEAT_DURATION_TYPE: - dur = 60.0f / pn.secs; + dur = 60.0 / pn.secs; break; default: /* SILENT_TYPE */ @@ -678,12 +678,12 @@ main(int argc, char **argv) print_sheet(sh); - WaveFrag wf = play_sheet(sh, 0.3f); + WaveFrag wf = play_sheet(sh, 0.3); destroy_sheet(sh); printf("w.n = %lu\n", wf.n); - printf("some sound is %f\n", *(wf.w+10)); + printf("some sound is %lf\n", *(wf.w+10)); free(wf.w); -- cgit v1.2.3-18-g5258