inosculate
darcs-hash:20050812092011-2648a-e137705e5ce7ab583a168c84593bfa0a390874f9.gz
This commit is contained in:
parent
9bcc4ffcc2
commit
1a1abf68bd
2 changed files with 14 additions and 6 deletions
12
README.txt
12
README.txt
|
@ -1,4 +1,5 @@
|
||||||
|
|
||||||
|
Open Sound Control
|
||||||
|
|
||||||
This is a common-lisp implementation of the Open Sound Control
|
This is a common-lisp implementation of the Open Sound Control
|
||||||
Protocol, aka OSC. The code should be close to ansi standard, and does
|
Protocol, aka OSC. The code should be close to ansi standard, and does
|
||||||
|
@ -27,16 +28,23 @@ limitations
|
||||||
- sbcl/cmucl specific float en/decoding
|
- sbcl/cmucl specific float en/decoding
|
||||||
- only supports the type(tag)s specified in the OSC spec
|
- only supports the type(tag)s specified in the OSC spec
|
||||||
|
|
||||||
things to do
|
things to do in :osc
|
||||||
- address patterns
|
- address patterns
|
||||||
- liblo like network wrapping
|
|
||||||
- data checking and error handling
|
- data checking and error handling
|
||||||
- portable en/decoding of floats -=> ieee754 tests
|
- portable en/decoding of floats -=> ieee754 tests
|
||||||
- doubles and other defacto typetags
|
- doubles and other defacto typetags
|
||||||
- correct en/decoding of timetags
|
- correct en/decoding of timetags
|
||||||
|
|
||||||
|
things to do in :osc-ex[tensions|tras]
|
||||||
|
- liblo like network wrapping
|
||||||
|
- add namespace exploration using cl-zeroconf
|
||||||
|
|
||||||
|
|
||||||
changes
|
changes
|
||||||
|
2005-08-12
|
||||||
|
- corrections from Matthew Kennedy <mkennedy@gentoo.org>
|
||||||
|
2005-08-11
|
||||||
|
- version 0.1
|
||||||
2005-03-16
|
2005-03-16
|
||||||
- packaged as an asdf installable lump
|
- packaged as an asdf installable lump
|
||||||
2005-03-11
|
2005-03-11
|
||||||
|
|
8
osc.lisp
8
osc.lisp
|
@ -96,7 +96,7 @@
|
||||||
|
|
||||||
(let ((lump (make-array 0 :adjustable t
|
(let ((lump (make-array 0 :adjustable t
|
||||||
:fill-pointer t
|
:fill-pointer t
|
||||||
:element-type 'char)))
|
:element-type 'character)))
|
||||||
(macrolet ((write-to-vector (char)
|
(macrolet ((write-to-vector (char)
|
||||||
`(vector-push-extend
|
`(vector-push-extend
|
||||||
(char-code ,char) lump)))
|
(char-code ,char) lump)))
|
||||||
|
@ -229,7 +229,7 @@
|
||||||
(if (equalp ut :now)
|
(if (equalp ut :now)
|
||||||
#(0 0 0 0 0 0 0 1)
|
#(0 0 0 0 0 0 0 1)
|
||||||
(cat (encode-int32 (+ ut +unix-epoch+))
|
(cat (encode-int32 (+ ut +unix-epoch+))
|
||||||
(encode-int32 (subseconds)))))
|
(encode-int32 subseconds))))
|
||||||
|
|
||||||
(defun decode-timetag (timetag)
|
(defun decode-timetag (timetag)
|
||||||
"decomposes a timetag into ut and a subsecond,. . ."
|
"decomposes a timetag into ut and a subsecond,. . ."
|
||||||
|
@ -268,7 +268,7 @@
|
||||||
|
|
||||||
(defun encode-int32 (i)
|
(defun encode-int32 (i)
|
||||||
"convert integer into a sequence of 4 bytes in network byte order."
|
"convert integer into a sequence of 4 bytes in network byte order."
|
||||||
(declare (type integer i n))
|
(declare (type integer i))
|
||||||
(let ((buf (make-sequence
|
(let ((buf (make-sequence
|
||||||
'(vector (unsigned-byte 8)) 4)))
|
'(vector (unsigned-byte 8)) 4)))
|
||||||
(macrolet ((set-byte (n)
|
(macrolet ((set-byte (n)
|
||||||
|
@ -323,7 +323,7 @@
|
||||||
(+ s (- 4 (mod s 4))))
|
(+ s (- 4 (mod s 4))))
|
||||||
|
|
||||||
(defun string-padding (string)
|
(defun string-padding (string)
|
||||||
q "returns the padding required for a given osc string"
|
"returns the padding required for a given osc string"
|
||||||
(declare (type simple-string string))
|
(declare (type simple-string string))
|
||||||
(pad (- 4 (mod (length string) 4))))
|
(pad (- 4 (mod (length string) 4))))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue