aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2023-06-15 21:25:48 +0200
committerThomas White <taw@physics.org>2023-06-15 21:25:48 +0200
commit7c567cdaad77de03f005bbda45b208ea1acaeec1 (patch)
tree0d307f1caa3315e36b205d5e2df1f49fd541756e
parent9e9e2bb303dbb08fcf93eee9bd1a6133d07950c9 (diff)
Use higher-level OSC interface
-rw-r--r--examples/demo-show.scm34
-rw-r--r--guile/starlet/open-sound-control/utils.scm85
2 files changed, 61 insertions, 58 deletions
diff --git a/examples/demo-show.scm b/examples/demo-show.scm
index 42c9d45..c4f03cf 100644
--- a/examples/demo-show.scm
+++ b/examples/demo-show.scm
@@ -99,34 +99,30 @@
(send-selection-updates-to (make-osc-address "osc.udp://localhost:7772"))
-(osc-send x1k2 "/x1k2/leds/*" 'off)
-
-(osc-playback-indicators pb x1k2 "/x1k2/leds/101" "/x1k2/leds/29" "/x1k2/leds/25")
-(osc-playback-controls pb osc-server "/x1k2/buttons/101" "/x1k2/buttons/29" "/x1k2/buttons/25")
-(osc-playback-indicators pb x1k2 "/x1k2/leds/102" "/x1k2/leds/32" "/x1k2/leds/28")
-(osc-playback-controls pb osc-server "/x1k2/buttons/102" "/x1k2/buttons/32" "/x1k2/buttons/28")
+(osc-playback-controls pb osc-server x1k2 "/x1k2/buttons/101" "/x1k2/buttons/29" "/x1k2/buttons/25")
+(osc-playback-controls pb osc-server x1k2 "/x1k2/buttons/102" "/x1k2/buttons/32" "/x1k2/buttons/28")
(add-osc-method osc-server "/x1k2/buttons/30" "" (lambda ()
(reload-cue-list! pb)
(reassert-current-cue! pb)))
-(osc-send x1k2 "/x1k2/leds/30" 'green)
+(osc-send x1k2 "/x1k2/leds/30/set-led" 'green)
(add-osc-method osc-server "/x1k2/buttons/31" "" sel)
-(osc-send x1k2 "/x1k2/leds/31" 'green)
+(osc-send x1k2 "/x1k2/buttons/31/set-led" 'green)
-(osc-select-button front-leds osc-server "/x1k2/buttons/17" x1k2 "/x1k2/leds/17")
-(osc-select-button front-wash osc-server "/x1k2/buttons/18" x1k2 "/x1k2/leds/18")
-(osc-select-button mhLL osc-server "/x1k2/buttons/21" x1k2 "/x1k2/leds/21")
-(osc-select-button mhL osc-server "/x1k2/buttons/22" x1k2 "/x1k2/leds/22")
-(osc-select-button mhR osc-server "/x1k2/buttons/23" x1k2 "/x1k2/leds/23")
-(osc-select-button mhRR osc-server "/x1k2/buttons/24" x1k2 "/x1k2/leds/24")
+(osc-select-button front-leds osc-server x1k2 "/x1k2/buttons/17")
+(osc-select-button front-wash osc-server x1k2 "/x1k2/buttons/18")
+(osc-select-button mhLL osc-server x1k2 "/x1k2/buttons/21")
+(osc-select-button mhL osc-server x1k2 "/x1k2/buttons/22")
+(osc-select-button mhR osc-server x1k2 "/x1k2/buttons/23")
+(osc-select-button mhRR osc-server x1k2 "/x1k2/buttons/24")
-(osc-parameter-encoder pan osc-server "/x1k2/encoders/1" x1k2 "/x1k2/leds/1")
-(osc-parameter-encoder tilt osc-server "/x1k2/encoders/2" x1k2 "/x1k2/leds/2")
-(osc-parameter-encoder gobo osc-server "/x1k2/encoders/3" x1k2 "/x1k2/leds/3")
-(osc-parameter-encoder intensity osc-server "/x1k2/encoders/102" x1k2 "/x1k2/nothing")
+(osc-parameter-encoder pan osc-server x1k2 "/x1k2/encoders/1")
+(osc-parameter-encoder tilt osc-server x1k2 "/x1k2/encoders/2")
+(osc-parameter-encoder gobo osc-server x1k2 "/x1k2/encoders/3")
+(osc-parameter-encoder intensity osc-server x1k2 "/x1k2/encoders/102")
-(osc-state-fader osc-server "/x1k2/faders/4"
+(osc-state-fader osc-server x1k2 "/x1k2/faders/4"
(lighting-state
(at mhL mhR colour (rgb 40 20 70))
(at mhL mhR 100)
diff --git a/guile/starlet/open-sound-control/utils.scm b/guile/starlet/open-sound-control/utils.scm
index 2b9bba5..0ad5d88 100644
--- a/guile/starlet/open-sound-control/utils.scm
+++ b/guile/starlet/open-sound-control/utils.scm
@@ -29,66 +29,71 @@
#:use-module (open-sound-control client)
#:use-module (open-sound-control server-thread)
#:use-module (srfi srfi-1)
- #:export (osc-playback-indicators
- osc-playback-controls
+ #:use-module (srfi srfi-26)
+ #:export (osc-playback-controls
osc-select-button
osc-parameter-encoder
osc-state-fader
send-selection-updates-to))
-(define* (osc-playback-controls pb server go-method stop-method back-method
+(define* (osc-playback-controls pb server addr go-button stop-button back-button
#:key (min-time-between-presses 0.2))
(let ((time-last-press 0))
- (add-osc-method server go-method ""
- (lambda ()
- (let ((time-this-press (hirestime)))
- (if (> time-this-press (+ time-last-press min-time-between-presses))
- (go! pb)
- (display "Too soon after last press!\n"))
- (set! time-last-press time-this-press)))))
-
- (add-osc-method server stop-method "" (lambda () (stop! pb)))
- (add-osc-method server back-method "" (lambda () (back! pb))))
-
-
-(define (osc-playback-indicators pb addr go-led stop-led back-led)
+ (add-osc-method
+ server
+ (string-append go-button "/press")
+ ""
+ (lambda ()
+ (let ((time-this-press (hirestime)))
+ (if (> time-this-press (+ time-last-press min-time-between-presses))
+ (go! pb)
+ (display "Too soon after last press!\n"))
+ (set! time-last-press time-this-press)))))
+
+ (add-osc-method server (string-append stop-button "/press") "" (lambda () (stop! pb)))
+ (add-osc-method server (string-append back-button "/press") "" (lambda () (back! pb)))
+
+ ;; LEDs
+ (osc-send addr (string-append back-button "/set-led") 'green)
(add-and-run-hook!
(state-change-hook pb)
(lambda (new-state)
(if (eq? new-state 'running)
- (osc-send addr stop-led 'green)
- (osc-send addr stop-led 'off))
+ (osc-send addr (string-append stop-button "/set-led") 'green)
+ (osc-send addr (string-append stop-button "/set-led") 'off))
(cond
((eq? new-state 'pause)
- (osc-send addr go-led 'orange))
+ (osc-send addr (string-append go-button "/set-led") 'orange))
((eq? new-state 'ready)
- (osc-send addr go-led 'green))
+ (osc-send addr (string-append go-button "/set-led") 'green))
((eq? new-state 'running)
- (osc-send addr go-led 'green))
+ (osc-send addr (string-append go-button "/set-led") 'green))
(else
- (osc-send addr go-led 'off))))
-
- (playback-state pb))
+ (osc-send addr (string-append go-button "/set-led") 'off))))
- (osc-send addr back-led 'green))
+ (playback-state pb)))
-(define (osc-select-button fix server button-method addr led)
+(define (osc-select-button fix server addr button)
- (add-osc-method server button-method ""
- (lambda () (toggle-sel fix)))
+ (add-osc-method
+ server
+ (string-append button "/press")
+ ""
+ (lambda ()
+ (toggle-sel fix)))
(add-and-run-hook!
selection-hook
(lambda (sel)
(if (selected? fix)
- (osc-send addr led 'orange)
- (osc-send addr led 'red)))
+ (osc-send addr (string-append button "/set-led") 'orange)
+ (osc-send addr (string-append button "/set-led") 'red)))
(get-selection)))
@@ -107,18 +112,18 @@
(get-selection)))
-(define (osc-parameter-encoder attr server encoder-method addr led)
+(define (osc-parameter-encoder attr server addr encoder)
- (add-osc-method server (string-append encoder-method "/inc") ""
+ (add-osc-method server (string-append encoder "/inc") ""
(lambda () (encoder-inc attr 3)))
- (add-osc-method server (string-append encoder-method "/dec") ""
+ (add-osc-method server (string-append encoder "/dec") ""
(lambda () (encoder-inc attr -3)))
- (add-osc-method server (string-append encoder-method "/inc-fine") ""
+ (add-osc-method server (string-append encoder "/inc-fine") ""
(lambda () (encoder-inc attr 1)))
- (add-osc-method server (string-append encoder-method "/dec-fine") ""
+ (add-osc-method server (string-append encoder "/dec-fine") ""
(lambda () (encoder-inc attr -1)))
(add-and-run-hook!
@@ -128,8 +133,8 @@
(lambda (fix)
(fixture-has-attr? fix attr))
(get-selection))
- (osc-send addr led 'green)
- (osc-send addr led 'off)))
+ (osc-send addr (string-append encoder "/set-led") 'green)
+ (osc-send addr (string-append encoder "/set-led") 'off)))
(get-selection)))
@@ -137,7 +142,7 @@
(/ (* n 100) 127))
-(define (osc-state-fader server fader state)
+(define (osc-state-fader server addr fader state)
(let ((fader-val 0))
(register-state!
(lighting-state
@@ -158,7 +163,9 @@
'no-value)))))
state)))
- (add-osc-method server fader "i"
+ (osc-send addr (string-append fader "/enable"))
+ (osc-send addr (string-append fader "/set-pickup") 0)
+ (add-osc-method server (string-append fader "/value-change") "i"
(lambda (v) (set! fader-val v)))))