diff --git a/lib/midi_tools/player.ex b/lib/midi_tools/player.ex index 8a30af5..42de93d 100644 --- a/lib/midi_tools/player.ex +++ b/lib/midi_tools/player.ex @@ -19,6 +19,10 @@ defmodule MIDITools.Player do GenServer.call(__MODULE__, {:set_repeat, repeat}) end + def stop_playing do + GenServer.call(__MODULE__, :stop_playing) + end + # Server callbacks @impl true @@ -57,6 +61,11 @@ defmodule MIDITools.Player do {:reply, :ok, %{state | repeat: repeat}} end + def handle_call(:stop_playing, _from, %{timer: timer} = state) do + Process.cancel_timer(timer, info: false) + {:reply, :ok, %{state | timer: nil}} + end + @impl true def handle_info( :play,