FreeCalypso > hg > freecalypso-tools
diff ringtools/imy/durations.c @ 882:fd4c9bc7835d
fc-imy2pwt program written, compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 03 Apr 2022 03:30:27 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ringtools/imy/durations.c Sun Apr 03 03:30:27 2022 +0000 @@ -0,0 +1,31 @@ +/* + * This module implements the step of precomputing various note durations + * in TDMA frames. + */ + +extern unsigned beats_per_min; +unsigned tdma_durations[6][4]; + +static float modifier_values[4] = {1.0f, 1.5f, 1.75f, 2.0f / 3.0f}; + +compute_note_durations() +{ + float beat_ref, basic_ms[6], dur_ms; + unsigned dur_tdma; + int i, j; + + beat_ref = 60000.0f / beats_per_min; + basic_ms[0] = beat_ref * 4.0f; + basic_ms[1] = beat_ref * 2.0f; + basic_ms[2] = beat_ref; + basic_ms[3] = beat_ref / 2.0f; + basic_ms[4] = beat_ref / 4.0f; + basic_ms[5] = beat_ref / 8.0f; + for (i = 0; i < 6; i++) { + for (j = 0; j < 4; j++) { + dur_ms = basic_ms[i] * modifier_values[j]; + dur_tdma = dur_ms * 13.0f / 60.0f + 0.5f; + tdma_durations[i][j] = dur_tdma; + } + } +}