Current section
Files
Jump to
Current section
Files
src/delay_times.erl
-module(delay_times).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/3, to_list/1]).
-export_type([delay_times/0, note_modifier/0, unit/0]).
-type delay_times() :: {delay_times,
float(),
float(),
float(),
float(),
float(),
float(),
float(),
float()}.
-type note_modifier() :: normal | dotted | triplet.
-type unit() :: ms | hz.
-file("/Users/josephlyons/Projects/Personal/gleam/delay_times/src/delay_times.gleam", 28).
-spec new(float(), note_modifier(), unit()) -> delay_times().
new(Beats_per_minute, Modifier, Unit) ->
Quarter_note_delay_value = case Unit of
ms ->
case Beats_per_minute of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator -> 60000.0 / Gleam@denominator
end;
hz ->
Beats_per_minute / 60.0
end,
Multiplier = case Modifier of
normal ->
1.0;
dotted ->
1.5;
triplet ->
2.0 / 3.0
end,
{delay_times,
(Quarter_note_delay_value * 4.0) * Multiplier,
(Quarter_note_delay_value * 2.0) * Multiplier,
Quarter_note_delay_value * Multiplier,
(Quarter_note_delay_value / 2.0) * Multiplier,
(Quarter_note_delay_value / 4.0) * Multiplier,
(Quarter_note_delay_value / 8.0) * Multiplier,
(Quarter_note_delay_value / 16.0) * Multiplier,
(Quarter_note_delay_value / 32.0) * Multiplier}.
-file("/Users/josephlyons/Projects/Personal/gleam/delay_times/src/delay_times.gleam", 57).
-spec to_list(delay_times()) -> list({binary(), float()}).
to_list(Delay_times) ->
[{<<"v_whole"/utf8>>, erlang:element(2, Delay_times)},
{<<"v_half"/utf8>>, erlang:element(3, Delay_times)},
{<<"v_quarter"/utf8>>, erlang:element(4, Delay_times)},
{<<"v_8th"/utf8>>, erlang:element(5, Delay_times)},
{<<"v_16th"/utf8>>, erlang:element(6, Delay_times)},
{<<"v_32nd"/utf8>>, erlang:element(7, Delay_times)},
{<<"v_64th"/utf8>>, erlang:element(8, Delay_times)},
{<<"v_128th"/utf8>>, erlang:element(9, Delay_times)}].