#!r6rs (library (rsc3 supercollider score) (export encode-score) (import (rnrs) (only (rsc3 collection tree) flatten) (rsc3 osc encode) (rsc3 u8 encode) (rsc3 u8 u8t)) ;; A score is a list of OSC bundles. The timestamps are given in ;; seconds where zero is the start of the score. An OSC file is a ;; binary file format understood by the SC3 synthesis server, and ;; consists of a sequence of length prefixed OSC bundles. ;; Generate the for the score `data'. (define (score->u8t bundles) (map (lambda (bundle) (let ((v (encode-bundle-ntp bundle))) (list (encode-i32 (bytevector-length v)) v))) bundles)) (define (encode-score s) (u8t->bytevector (score->u8t s))) )