diff options
Diffstat (limited to 'lib/osc.moon')
| -rw-r--r-- | lib/osc.moon | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/lib/osc.moon b/lib/osc.moon index fed1697..3bac3f1 100644 --- a/lib/osc.moon +++ b/lib/osc.moon @@ -2,22 +2,39 @@ import Stream, Op from require 'core' import pack, unpack from require 'osc' import dns, udp from require 'socket' +class addr extends Op + @doc: "(remote host port) - UDP remote definition" + + new: => + super 'udp/remote' + @@udp or= udp! + + setup: (params) => + super params + @assert_types 'str', 'num' + + tick: => + host, port = @unwrap_inputs! + ip = dns.toip host + @out\set { :ip, :port } + 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) => + setup: (params) => + super params + assert @inputs[3], "need a value" + @assert_types 'udp/remote', 'str', @inputs[3].type update: (dt) => - ip = dns.toip @host\unwrap 'str' - port = @port\unwrap 'num' - msg = pack (@path\unwrap 'str'), @value\unwrap! + remote, path, value = @unwrap_inputs! + msg = pack path, value @@udp\sendto msg, ip, port { + :addr :out } |
