/phoenix_osc

broadcasts OSC messages to Phoenix Channels from UDP streams

Primary LanguageElixirMIT LicenseMIT

Phoenix.OSC Build Status

broadcasts OSC messages to Phoenix Channels from UDP streams

Short Story Long

After reading Mr. Armstrong's post A Badass Way to Connect Programs Together, I thought it would be nice to use Open Sound Control sensors and devices to control a Phoenix application.

May I quote?

OSC should be renamed OAC – Open Anything Control

Not surprisingly, I found a myriad Elixir OSC parsers and decoders around. I've picked up @jwarwick's ex_osc because it works well with TouchOSC.

Usage

Take your Phoenix application, add phoenix_osc to your list of dependencies in mix.exs:

def deps do
  [
    {:phoenix, ...
    {:phoenix_osc, "~> 0.1.0", github: "zampino/phoenix_osc"},
    ...
  ]
end

Add Phoenix.OSC module as handler into your Phoenix endpoint configuration (e.g config/config.exs), and optionally specify an UDP port to be listened to:

config :my_app, MyApp.Endpoint,
  handler: Phoenix.OSC,
  osc_udp_port: 8001, # defaults to 8000
  pubsub: [name: Livex.PubSub,
           adapter: Phoenix.PubSub.PG2],
  ...

and that's it.

Broadcast Topics and Events

Configure your device to emit OSC messages with an address of the form /topic:subtopic/event.

Some Example

Elm graphic signals controlled with TouchOSC:

demo.png spiro.png

TODOS

  • device feedback