Yamaha MusicCast™

Travis Hex.pm Documentation Status GitHub license Github Issues

Cover image

Elixir implementation of Yamaha’s MusicCast™ multiroom audio solution.

Documentation

See the online documentation for more information.

Installation

Add :musiccast to your list of dependencies in mix.exs:

def deps do
  [{:musiccast, "~> 0.2"}]
end

Usage

MusicCast devices are automatically discovered and added to MusicCast.Network, you can list all registered devices as follow:

iex> [{pid, device_id}] = MusicCast.which_devices()
[{#PID<0.200.0>, "00A0DEDCF73E"}]

You can control a device using the MusicCast.Network.Entity module:

iex> MusicCast.Network.Entity.set_input(pid, "spotify")
:ok
iex> MusicCast.Network.Entity.playback_play(pid)
:ok
iex> MusicCast.Network.Entity.set_volume(pid, 50)
:ok

You also have the possibility to subscribe to status update notifications from a specific device:

iex> MusicCast.subscribe(device_id)
:ok
iex> flush()
{:musiccast, :update, "00A0DEDCF73E", %{playback: %{input: "spotify", playback: "pause"}}
{:musiccast, :update, "00A0DEDCF73E", %{playback: %{playback: "play"}}
{:musiccast, :update, "00A0DEDCF73E", %{status: %{volume: 50}}