Skip to content

Commit a7612c8

Browse files
committed
Ruby - teach OSC encoder how to encode int64 'h'
1 parent b529287 commit a7612c8

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

app/server/ruby/lib/sonicpi/osc/osc.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
require_relative 'udp_client'
1515
require_relative 'udp_server'
1616
require_relative 'websocket_server'
17-
require_relative 'blob'
17+
require_relative 'osc_types'
1818
require_relative 'oscencode'
1919
require_relative 'oscdecode'

app/server/ruby/lib/sonicpi/osc/blob.rb renamed to app/server/ruby/lib/sonicpi/osc/osc_types.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def initialize(data)
2222
# add padding
2323

2424
@binary = b + ("\000" * ((4 - (b.size % 4)) % 4))
25+
2526
end
2627

2728
def to_s
@@ -33,5 +34,21 @@ def inspect
3334
end
3435

3536
end
37+
38+
class Int64
39+
attr_reader :binary
40+
def initialize(val)
41+
@val = val
42+
@binary = [val].pack('q>')
43+
end
44+
45+
def to_i
46+
@val.to_i
47+
end
48+
49+
def inspect
50+
@val.inspect
51+
end
52+
end
3653
end
3754
end

app/server/ruby/lib/sonicpi/osc/oscencode.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def initialize(use_cache = false, cache_size=1000)
2727
@literal_low_g = 'g'.freeze
2828
@literal_low_s = 's'.freeze
2929
@literal_low_b = 'b'.freeze
30+
@literal_low_h = 'h'.freeze
3031
@literal_empty_str = ''.freeze
3132
@literal_str_encode_regexp = /\000.*\z/
3233
@literal_str_pad = "\000".freeze
@@ -99,6 +100,9 @@ def encode_single_message(address, args=[])
99100
when SonicPi::OSC::Blob
100101
tags << @literal_low_b
101102
args_encoded << arg.binary
103+
when SonicPi::OSC::Int64
104+
tags << @literal_low_h
105+
args_encoded << arg.binary
102106
else
103107
raise "Unknown arg type to encode: #{arg.inspect}"
104108
end

0 commit comments

Comments
 (0)