aboutsummaryrefslogtreecommitdiff
path: root/examples/demo.scm
blob: de25680e13a24000336557be5cdf597c61009d3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
;; Example invokation, from top level project folder:
;; $ guile -L guile -l examples/demo.scm

(use-modules
  (starlet base)
  (starlet playback)
  (starlet effects)
  (venues demo-venue)
  (guile-midi control))

(start-ola-output)
(start-midi-control "/dev/snd/midiC1D0")


;; Light up some LEDs on the MIDI controller
(define led1
  (make-midi-led #:channel 14
                 #:note-number 23))

(define led2
  (make-midi-led #:channel 14
                 #:note-number 20))

(set-midi-led! led1 #t)
(set-midi-led! led2 #t)


;; Set up working lights on a MIDI fader
(define working-light-fader
  (make-midi-controller #:channel 14
                        #:cc-number 19))

(define (worklight)
  (let ((state (make-empty-state))
        (fader-pos (get-controller-value working-light-fader)))
    (set-attr! state dim11 'intensity fader-pos)
    (set-attr! state dim12 'intensity fader-pos)
    (set-attr! state dim13 'intensity fader-pos)
    state))

(register-state! worklight)


(define pot1
  (make-midi-controller #:channel 14
                        #:cc-number 7))

(define (example-state-1)

  (let ((state (make-empty-state)))

    ;; Front wash
    (set-attr! state dim11 'intensity 50)
    (set-attr! state dim12 'intensity 50)
    (set-attr! state dim13 'intensity 50)

    ;; Sidelight
    (set-attr! state dim7 'intensity (flash 2))
    (set-attr! state dim8 'intensity 50)

    (set-attr! state dim48 'intensity
               (lambda (a)
                 (get-controller-value pot1)))

    state))


(define (example-state-2)

  (let ((state (make-empty-state)))

    ;; Front wash
    (set-attr! state dim1 'intensity 10)
    (set-attr! state dim2 'intensity 10)
    (set-attr! state dim3 'intensity 10)

    ;; Sidelight
    (set-attr! state dim7 'intensity (flash 5))

    state))


(define cue-list
  (list (cue 0 (make-empty-state)
             #:fade-up 1
             #:fade-down 1)

        (cue 1 example-state-1
             #:fade-up 3
             #:fade-down 5)

        (cue 2 example-state-2
             #:fade-up 3
             #:fade-down 5)))


;; Create a playback for the cue list, and register it for output
(define pb
  (make-playback cue-list))
(register-state! pb)

;; Jump to zero (blackout) cue