chicken scheme bindings for libola
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Basic bindings for libola, Open Lighting Architecture. Classes covered so far are DmxBuffer and StreamingClient.

For bug reports, feature requests, and development versions, visit the github project page.


  • John J Foerch


Chicken Eggs

  • r7rs
  • srfi-99
  • foreigners
  • list-utils
  • matchable

C Headers

  • ola (libola-dev)



  • (ola-version) => (major minor revision)

Return ola's version as a list.

  • (ola-version-string) => string

Return ola's version as a string.


  • (init-logging [level] [output]) => bool

    Level may be one of the following symbols:

    • log-level/none
    • log-level/fatal
    • log-level/warn
    • log-level/info
    • log-level/debug
    • log-level/max

    Output may be one of the following symbols:

    • log-output/stderr
    • log-output/syslog
    • log-output/null


  • (dmxbuffer) => dmxbuffer

    Construct a new empty dmxbuffer.

  • (dmxbuffer other-dmxbuffer) => dmxbuffer

    Construct a new dmxbuffer with the same contents as other-dmxbuffer.

  • (dmxbuffer bytevector) => dmxbuffer

    Constructs a new dmxbuffer with the same contents as bytevector.

  • (dmxbuffer? dmxbuffer) => bool

    Dmxbuffer predicate.

  • (dmxbuffer=? dmxbuffer-a dmxbuffer-b) => bool

    Test whether dmxbuffer-a and dmxbuffer-b have equal contents.

  • (dmxbuffer-size dmxbuffer) => size

    Size of dmxbuffer.

  • (dmxbuffer-get dmxbuffer) => bytevector

    Return contents of dmxbuffer as a bytevector.

  • (dmxbuffer-get-channel dmxbuffer channel) => value

    Return the value of the given channel in dmxbuffer.

  • (dmxbuffer-get-range dmxbuffer offset length) => bytevector

    Return a bytevector of the requested range in dmxbuffer.

  • (dmxbuffer-set! dmxbuffer bytevector offset size) => bool

    Set the contents of dmxbuffer to contents of bytevector at given offset and size.

  • (dmxbuffer-set! dmxbuffer bytevector) => bool

    Set the contents of dmxbuffer to contents of bytevector.

  • (dmxbuffer-set! dmxbuffer dmxbuffer-other) => bool

    Set the contents of dmxbuffer to contents of dmxbuffer-other.

  • (dmxbuffer-set-channel! dmxbuffer channel value) => undefined

    Set dmxbuffer channel to value.

  • (dmxbuffer-set-from-string! dmxbuffer str) => bool

    Complement of dmxbuffer->string. Sets the contents of dmxbuffer according to the specially formatted string str. The format of the string is integers separated by commas, where 0's may be omitted, e.g. "1,2,,255"

  • (dmxbuffer-set-range! dmxbuffer dst-offset bytevector) => bool

    Set contents of dmxbuffer from dst-offset to contents of bytevector.

  • (dmxbuffer-set-range! dmxbuffer dst-offset bytevector src-offset src-length) => bool

    Set contents of dmxbuffer from dst-offset to contents of bytevector, from src-offset, src-length bytes.

  • (dmxbuffer-set-range-to-value! dmxbuffer offset value length) => bool

    Set contents of dmxbuffer from offset for length to value.

  • (dmxbuffer-htp-merge! dmxbuffer other-dmxbuffer) => bool

    Perform an HTP merge (high value merge) with other-dmxbuffer into dmxbuffer.

  • (dmxbuffer-blackout! dmxbuffer) => bool

    Set all channels to 0 in dmxbuffer.

  • (dmxbuffer-reset! dmxbuffer) => undefined

    Reset dmxbuffer size to 0.

  • (dmxbuffer->string dmxbuffer) => string

    Complement of 'dmxbuffer-set-from-string!'. Returns a human-readable string representing the contents of dmxbuffer - comma separated decimal values.


  • (streamingclient [auto-start: bool] [server-port: port]) => streamingclient

    Constructs a client and attempts to establish a connection to the ola daemon. Auto-start is whether to start olad if it is not already running, default true. Server-port is the port to use, default 9010. Signals an '(exn ola)' condition if it fails to connect to the ola daemon.

  • (streamingclient-stop streamingclient) => undefined

    Stops a streamingclient.

  • (streamingclient-send-dmx streamingclient universe dmxbuffer) => bool

    Sends contents of dmxbuffer to the given universe on streamingclient.


(use ola r7rs)
(let ((client (streamingclient auto-start: #f)))
  (streamingclient-send-dmx client 0 (dmxbuffer (string->utf8 "AeIoUaEiO"))))



Version History

  • 0.1 (2016-03-12) initial release
  • 0.2 (2016-03-13) meta and documentation
  • 0.3 (2016-03-13) streamingclient-setup removed, ola-version added
  • 0.4 (2016-09-05) use bytevectors instead of blobs