Skip to content

Commit

Permalink
push out number work
Browse files Browse the repository at this point in the history
  • Loading branch information
josephwilk committed Mar 7, 2018
1 parent cbe7534 commit 1487fcf
Show file tree
Hide file tree
Showing 2 changed files with 188 additions and 186 deletions.
187 changes: 1 addition & 186 deletions init.el
Original file line number Diff line number Diff line change
Expand Up @@ -323,189 +323,4 @@ middle"
;;(global-set-key [M-up] 'move-region-up)
;;(global-set-key [M-down] 'move-region-down)

(defconst MAX-LENGTH 100)

(require 'osc)
(require 'cl-lib)

(defvar re-osc-client nil "Connection to send OSC->Midi")
(defvar rk-osc-client nil "Connection to send Midi->Reaktor")

(defun osc-make-client (host port)
(make-network-process
:name "OSC client"
:host host
:service port
:type 'datagram
:family 'ipv4))

(defun re-osc-connect ()
(if re-osc-client (delete-process re-osc-client))
(setq re-osc-client (osc-make-client "localhost" 4561)))

(defun rk-osc-connect ()
(if rk-osc-client (delete-process rk-osc-client))
(setq rk-osc-client (osc-make-client "localhost" 10000)))

(defun vst-connect ()
(interactive)
(re-osc-connect)
(rk-osc-connect))

(defun push-msg (param-name num)
(when param-name
(let ((vel (round (* 127.0 num)))
(host "/IAC Bus 1/control_change"))
(cond
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 100 vel))
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 101 vel))
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 102 vel))
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 103 vel))
((string-match param-name "eq/lo") (osc-send-message re-osc-client host 1 7 vel))
((string-match param-name "eq/mi") (osc-send-message re-osc-client host 1 8 vel))
((string-match param-name "eq/hi") (osc-send-message re-osc-client host 1 9 vel))
((string-match param-name "bitsea/lo") (osc-send-message re-osc-client host 10 103 vel))
((string-match param-name "bitsea/mi") (osc-send-message re-osc-client host 10 104 vel))
((string-match param-name "bitsea/hi") (osc-send-message re-osc-client host 10 105 vel))
(t (osc-send-message rk-osc-client (format "/%s" param-name) num))))))

(defun code->pots (beg end)
(interactive "r")
(save-excursion
(let ((inhibit-read-only t))
(remove-text-properties beg end '(read-only t))
(goto-char end)
(setq i 0)
(while (re-search-backward "_cc .+:\s*\\([0-9]*.[0-9]+\\)\s*\n" beg t)
(setq i (+ 1 i))
(let ((full (round (* MAX-LENGTH (string-to-number (match-string 1))))))
(let ((empty (- MAX-LENGTH full)))
(goto-char (match-beginning 0))
(end-of-line)
(let ((start-pnt (point))
(pad (if (>= empty 0)
(make-string empty ?╌)
"")))
(insert (concat " #╟"
(make-string full ?▓)
"▒░"
pad
""))
(put-text-property start-pnt (point) 'read-only t)))))
(align-regexp beg (+ (* i 106) end) "\\(\\s-*\\)#"))))

(defun pots-update (new-number old-number)
(interactive)
(if (not (= new-number old-number))
(let ((old-full (round (* 100.0 old-number)))
(full (round (* 100.0 new-number))))
(let ((empty (- MAX-LENGTH full))
(movement (- full old-full))
(bmovement (- old-full full)))
(save-excursion
(when (re-search-forward "#╟" (line-end-position) t)
(goto-char (match-end 0))
(let ((inhibit-read-only t)
(start-pnt (point)))
(if (> new-number old-number)
(progn ;;forwards
(forward-char old-full)
(insert (make-string movement ?▓))
(forward-char 2)
(delete-char movement)
)
(progn ;;backwards
(forward-char (- old-full bmovement))
(delete-char bmovement)
(forward-char 2)
(insert (make-string bmovement ?╌))))
(put-text-property start-pnt (point) 'read-only t))))))))



(require 'thingatpt)
(put 'float 'end-op (lambda () (re-search-forward "[0-9-]*\.[0-9-]*" nil t)))
(put 'float 'beginning-op (lambda () (if (re-search-backward "[^0-9-\.]" nil t) (forward-char))))

(defun change-number-at-point (func)
(let* ((bounds (bounds-of-thing-at-point 'float))
(number (buffer-substring (car bounds) (cdr bounds)))
(point (point)))
(goto-char (car bounds))
(re-search-backward "^\\([^\n]+\\): " (line-beginning-position) t)
(let ((m (match-string 1 nil)))
(if m
(let* ((parts (split-string (string-trim m) " "))
(caller (concat (first parts) "/" (first (reverse parts)))))
(goto-char (car bounds))
(delete-char (length number))
(insert (format "%.2f" (funcall func (string-to-number number) caller)))
(hlt-highlight-regexp-region (car bounds) (point) ".+" 'eval-sonic-pi-flash nil))
(progn
(goto-char (car bounds))
(delete-char (length number))
(insert (format "%.2f" (funcall func (string-to-number number) nil))))))
(goto-char point)))

(defun inc-float-at-point ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (min 1.00 (+ number 0.01))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))

(defun dec-float-at-point ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (max 0.00 (- number 0.01))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))

(defun inc-float-at-point-big ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (min 1.00 (+ number 0.1))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))
(defun dec-float-at-point-big ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (max 0.00 (- number 0.1))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))

(global-set-key [(meta up)] 'inc-float-at-point)
(global-set-key [(meta down)] 'dec-float-at-point)
(global-set-key [M-shift-up ] 'inc-float-at-point-big)
(global-set-key [M-shift-down] 'dec-float-at-point-big)


(defun re-no-block (BEG END)
(interactive "r")
(save-excursion
(goto-char BEG)
(if (re-search-forward "yes{" END t 1)
(progn
(delete-char -4)
(insert "no{"))
(progn
(insert "no{\n")
(goto-char (+ END 4))
(insert "}")))))

(defun re-yes-block (BEG END)
(interactive "r")
(save-excursion
(goto-char BEG)
(if (re-search-forward "no{" END t 1)
(progn
(delete-char -3)
(insert "yes{"))
(progn
(insert "yes{\n")
(goto-char (+ END 4))
(insert "}")))))
(load "~/.live-packs/josephwilk-pack/lib/live-numbers.el")
187 changes: 187 additions & 0 deletions lib/live-numbers.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
(defconst MAX-LENGTH 100)

(require 'osc)
(require 'cl-lib)

(defvar re-osc-client nil "Connection to send OSC->Midi")
(defvar rk-osc-client nil "Connection to send Midi->Reaktor")

(defun osc-make-client (host port)
(make-network-process
:name "OSC client"
:host host
:service port
:type 'datagram
:family 'ipv4))

(defun re-osc-connect ()
(if re-osc-client (delete-process re-osc-client))
(setq re-osc-client (osc-make-client "localhost" 4561)))

(defun rk-osc-connect ()
(if rk-osc-client (delete-process rk-osc-client))
(setq rk-osc-client (osc-make-client "localhost" 10000)))

(defun vst-connect ()
(interactive)
(re-osc-connect)
(rk-osc-connect))

(defun push-msg (param-name num)
(when param-name
(let ((vel (round (* 127.0 num)))
(host "/IAC Bus 1/control_change"))
(cond
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 100 vel))
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 101 vel))
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 102 vel))
((string-match param-name "zero_cc/pulse") (osc-send-message re-osc-client host 9 103 vel))
((string-match param-name "eq/lo") (osc-send-message re-osc-client host 1 7 vel))
((string-match param-name "eq/mi") (osc-send-message re-osc-client host 1 8 vel))
((string-match param-name "eq/hi") (osc-send-message re-osc-client host 1 9 vel))
((string-match param-name "bitsea/lo") (osc-send-message re-osc-client host 10 103 vel))
((string-match param-name "bitsea/mi") (osc-send-message re-osc-client host 10 104 vel))
((string-match param-name "bitsea/hi") (osc-send-message re-osc-client host 10 105 vel))
((string-match param-name "bitsea_cc/motion") (osc-send-message re-osc-client host 10 1 vel))
(t (osc-send-message rk-osc-client (format "/%s" param-name) num))))))

(defun code->pots (beg end)
(interactive "r")
(save-excursion
(let ((inhibit-read-only t))
(remove-text-properties beg end '(read-only t))
(goto-char end)
(setq i 0)
(while (re-search-backward "_cc .+:\s*\\([0-9]*.[0-9]+\\)\s*\n" beg t)
(setq i (+ 1 i))
(let ((full (round (* MAX-LENGTH (string-to-number (match-string 1))))))
(let ((empty (- MAX-LENGTH full)))
(goto-char (match-beginning 0))
(end-of-line)
(let ((start-pnt (point))
(pad (if (>= empty 0)
(make-string empty ?╌)
"")))
(insert (concat " #╟"
(make-string full ?▓)
"▒░"
pad
""))
(put-text-property start-pnt (point) 'read-only t)))))
(align-regexp beg (+ (* i 106) end) "\\(\\s-*\\)#"))))

(defun pots-update (new-number old-number)
(interactive)
(if (not (= new-number old-number))
(let ((old-full (round (* 100.0 old-number)))
(full (round (* 100.0 new-number))))
(let ((empty (- MAX-LENGTH full))
(movement (- full old-full))
(bmovement (- old-full full)))
(save-excursion
(when (re-search-forward "#╟" (line-end-position) t)
(goto-char (match-end 0))
(let ((inhibit-read-only t)
(start-pnt (point)))
(if (> new-number old-number)
(progn ;;forwards
(forward-char old-full)
(insert (make-string movement ?▓))
(forward-char 2)
(delete-char movement)
)
(progn ;;backwards
(forward-char (- old-full bmovement))
(delete-char bmovement)
(forward-char 2)
(insert (make-string bmovement ?╌))))
(put-text-property start-pnt (point) 'read-only t))))))))



(require 'thingatpt)
(put 'float 'end-op (lambda () (re-search-forward "[0-9-]*\.[0-9-]*" nil t)))
(put 'float 'beginning-op (lambda () (if (re-search-backward "[^0-9-\.]" nil t) (forward-char))))

(defun change-number-at-point (func)
(let* ((bounds (bounds-of-thing-at-point 'float))
(number (buffer-substring (car bounds) (cdr bounds)))
(point (point)))
(goto-char (car bounds))
(re-search-backward "^\\([^\n]+\\): " (line-beginning-position) t)
(let ((m (match-string 1 nil)))
(if m
(let* ((parts (split-string (string-trim m) " "))
(caller (concat (first parts) "/" (first (reverse parts)))))
(goto-char (car bounds))
(delete-char (length number))
(insert (format "%.2f" (funcall func (string-to-number number) caller)))
(hlt-highlight-regexp-region (car bounds) (point) ".+" 'eval-sonic-pi-flash nil))
(progn
(goto-char (car bounds))
(delete-char (length number))
(insert (format "%.2f" (funcall func (string-to-number number) nil))))))
(goto-char point)))

(defun inc-float-at-point ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (min 1.00 (+ number 0.01))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))

(defun dec-float-at-point ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (max 0.00 (- number 0.01))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))

(defun inc-float-at-point-big ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (min 1.00 (+ number 0.1))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))
(defun dec-float-at-point-big ()
(interactive)
(change-number-at-point (lambda (number param-name)
(let ((new-number (max 0.00 (- number 0.1))))
(pots-update new-number number)
(push-msg param-name new-number)
new-number))))

(global-set-key [(meta up)] 'inc-float-at-point)
(global-set-key [(meta down)] 'dec-float-at-point)
(global-set-key [M-shift-up ] 'inc-float-at-point-big)
(global-set-key [M-shift-down] 'dec-float-at-point-big)


(defun re-no-block (BEG END)
(interactive "r")
(save-excursion
(goto-char BEG)
(if (re-search-forward "yes{" END t 1)
(progn
(delete-char -4)
(insert "no{"))
(progn
(insert "no{\n")
(goto-char (+ END 4))
(insert "}")))))

(defun re-yes-block (BEG END)
(interactive "r")
(save-excursion
(goto-char BEG)
(if (re-search-forward "no{" END t 1)
(progn
(delete-char -3)
(insert "yes{"))
(progn
(insert "yes{\n")
(goto-char (+ END 4))
(insert "}")))))

0 comments on commit 1487fcf

Please sign in to comment.