diff --git a/oscpy/parser.py b/oscpy/parser.py
index e080157..7172825 100644
--- a/oscpy/parser.py
+++ b/oscpy/parser.py
@@ -7,6 +7,8 @@ Allowed types are:
floats -> osc float
bytes (encoded strings) -> osc strings
bytearray (raw data) -> osc blob
+ *** added by ssc 2019-01-24
+ 64 bit big endian two's complement integer -> osc long
"""
from struct import Struct, pack, unpack_from, calcsize
@@ -19,6 +21,7 @@ else:
UNICODE = unicode
Int = Struct('>i')
+Long = Struct('>l')
Float = Struct('>f')
String = Struct('>s')
TimeTag = Struct('>II')
@@ -42,6 +45,10 @@ def parse_int(value, offset=0, **kwargs):
"""Return an int from offset in value."""
return Int.unpack_from(value, offset)[0], Int.size
+def parse_long(value, offset=0, **kwargs):
+ """Return an long from offset in value."""
+ return Long.unpack_from(value, offset)[0], Long.size
+
def parse_float(value, offset=0, **kwargs):
"""Return a float from offset in value."""
@@ -81,6 +88,7 @@ def parse_blob(value, offset=0, **kwargs):
parsers = {
b'i': parse_int,
+ b'h': parse_long,
b'f': parse_float,
b's': parse_string,
b'b': parse_blob,
@@ -94,6 +102,7 @@ parsers.update({
writers = (
(float, (b'f', b'f')),
(int, (b'i', b'i')),
+ (int, (b'h', b'h')),
(bytes, (b's', b'%is')),
(bytearray, (b'b', b'%ib')),
)
Kivy can use python 2 or 3 and produce APKs for android so I coded an app based on the ArdOSC layout, available on gitlab at AudioPi_OSC. I am still developing this, and have stopped working on ArdOSC.
I presented AudioPi and the Kivy OSC app to the NoVALug group on February 9, the slides are online at Audio Pi.pdf. The YouTube stream is available at "Running AudioPi".