-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)}].