View difference between Paste ID: i0f9uuYh and 8nv99LpE
SHOW: | | - or go back to the newest paste.
1-
l-data (:left data)
1+
(defn update-spectrum [mesh]
2-
r-data (:right data)
2+
  (s/>->> [:p] [:spectrum-data]
3-
vertices (mapv (fn [x] [(spec-x x (nth l-data x)) (spec-y x (nth r-data x)) 0]) (range 360))
3+
       #(if (and (:updated %2) (minim/playing? %1))
4
          (let
5
            [data (:data %2); (minim/get-realtime-data % 800) ;
6
             l-data (:left data)
7
             r-data (:right data)
8
             ; [ VARIANT-1 ]
9
             vertices (mapv (fn [x]
10
                             ; (println "r = " x " len =" (count l-data))
11
                             [(spec-x x (nth l-data x)) (spec-y x (nth r-data x)) 0]) (range 360)
12
                           ;[(spec-x x x) (spec-y x (nth r-data x)) (/ (- x) 5)]) (range 1000)
13
                           )
14
             ; [ VARIANT-2 ]
15
;             f (fn [x]  [(spec-x x (nth l-data x)) (spec-y x (nth r-data x)) 0])
16
;             vertices (reduce (fn [c d] (into c [(spec-x d (nth l-data d)) (spec-y d (nth r-data d)) 0])) [] (range 360))
17
            ; _ (println vertices)
18
             ; [ VARIANT-3 ]
19
;            max-x 360
20
;            vertices (doall (loop [acc [] x 0]
21
;                       (if (< max-x x) acc
22
;                         (let
23
;                           [v [(spec-x x (nth l-data x)) (spec-y x (nth r-data x)) 0]]
24
;                           (recur (concat acc v) (+ x 1))))))
25
        ;;   position-buffer (vb-position vertices)
26
27
             ]
28
        ;;    (vertex-buffer! mesh position-buffer)
29
          (update-vertex-buffer! mesh vb-type-position vertices)
30
            (s/ag!! :spectrum-data (fn [_] {:updated false}))
31
            (start-spectrum-data-gatherer %1)))))
32
33
34
(defn update-vertex-buffer! [mesh|geom vb-type lazy-data]
35
  (let [data (apply concat lazy-data)
36
        ;_ (println "data =" lazy-data)
37
        vb (vertex-buffer?? mesh|geom vb-type)
38
        nio-buffer (.getData vb)]
39
    (if (> (count data) (.capacity nio-buffer))
40
      ; if the existing buffer length is shorter than data length, re-create the buffer
41
      (let
42
        [mesh (resolve-mesh mesh|geom)
43
         new-buffer (create-float-buffer data)]
44
        (vertex-buffer! mesh vb-type 3 new-buffer))
45
      ; if the existing buffer length is enough for data, re-use the buffer
46
      (do
47
        (.rewind nio-buffer)
48
        (.updateData vb (create-float-buffer data)))))