aboutsummaryrefslogtreecommitdiffstats
path: root/lib/osc.moon
blob: dae6737be8dc5907d79c9cd2c2466da600373d8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import Const, Op, FnDef from require 'core'
import pack, unpack from require 'osc'
import dns, udp from require 'socket'

class out extends Op
  @doc: "(out host port path val) - send a value via OSC"

  new: (...) =>
    super ...

    @@udp or= udp!

  setup: (@host, @port, @path, @value) =>

  update: (dt) =>
    for p in *{@host, @port, @path, @value}
      L\push p\update, dt

    ip = dns.toip @host\get!
    port = @port\get!
    msg = pack @path\get!, @value\get!
    @@udp\sendto msg, ip, port

{
  :out
}