Posts posted by AM
-
-
-
-
-
-
-
-
-
just tried in 3min. ouput correct or perhaps some BUGs in thinking? 😁
greetings
andré
(defun get-all-intervals (alist) (let ((alist (sort-asc (flatten (pitch-to-midi (if (chordp alist) (melodize alist) alist)))))) (rest (sort-asc (remove-duplicates (loop repeat (length alist) for cnt = 0 then (incf cnt) append (x-b (filter-last (- (length alist) cnt) alist) (nth cnt alist)))))))) (get-all-intervals '(c4 d4 e4)) => (2 4) (get-all-intervals '(c4d4e4f6)) => (2 4 25 27 29)
-
-
-
here is the solution to send any data by OSC!
a big thanks to janusz who made it for me/us!! now a wide variety of externals can be controlled via OSC, in any format... (not only reaktor)
(defun osc-send (&rest args) (let* ((host #(127 0 0 1)) ;; host (port 7500) ;; port (s (usocket:socket-connect host port :protocol :datagram :element-type '(unsigned-byte 8))) (b (apply' osc:encode-message args))) (format t "sending to ~a on port ~A~%~%" host port) (unwind-protect (usocket:socket-send s b (length b)) (when s (usocket:socket-close s))))) (osc-send "/player" "120" 1 1 1) (osc-send "/beat" "defer" 0 "duration" 1 "pattern" 12)
-
-
that's the code
(defun filterbank (&key cc value-range (time-range '(1 127)) (port 7) (channel 16)) (let ((values (loop for i in (rnd-sample 100 (gen-integer (first value-range) (second value-range))) for j in (gen-length (gen-integer (first time-range) (second time-range)) 1/128) collect (list i j)))) (live-coding-midi (compile-score (def-score cc-seq (:title "cc-seq" :key-signature 'chromatic :time-signature '(4 4) :tempo 60) (seq :length '(3) :pitch '(c4) :velocity '(ff) :port port :channel channel :controllers (1 values))))))) (filterbank :cc 1 :value-range '(40 99) :port 1)
-
it's not a problem with live-coding - cc-messages are sended perfectly, but...
but, when i try to evaluate a few times, the error comes up - it seems to me to be a problem with "controllers" inside a new function => when i evaluate for the second time it's always:
Error: Controllers must be alternating names/numbers and values.
i have no idea, why this is a problem when doing more the 1 eval...
-
dear all
i want to code a simple function for sending midi-cc in an "all-in-one"-function (to external devices like filterbank or microcosm)
it works more or less.... but there are two bugs i can't fix.
the function:
(defun filterbank (&key cc value-range (time-range '(1 127)) (port 7) (channel 16)) (let ((values (loop for i in (rnd-sample 100 (gen-integer (first value-range) (second value-range))) for j in (gen-length (gen-integer (first time-range) (second time-range)) 1/128) collect (list i j)))) (live-coding-midi (compile-score (def-score cc-seq (:title "cc-seq" :key-signature 'chromatic :time-signature '(4 4) :tempo 60) (seq :length '(3) :pitch '(c4) :velocity '(ff) :port port :channel channel :controllers (1 values))))))) (filterbank :cc 1 :value-range '(40 99) :port 1)
problem 1: when i evaluate the function and run it ONCE - everything okay. when i like to RUN it a second time there is an error, i don't know why. then i have to evaluate the FUNCTION again... why?
problem 2: i would like to "replace" :controllers (1 values) by :controllers (cc values)
-> so that i can choose the cc-number by a variable "cc". but it don't work - any hints?
thanx for some help
andré
-
-
-
-
-
-
like that?
;; as lisp-code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setf alist '((s -s s== -s -s== s== -s s -s s -s s -s==) (s== -s s -s s== -s s -s== s== -s s -s s -s==) (s -s== s -s s -s s== -s s -s==))) (loop for i in alist collect (append i (list 'q))) => ((s -s s== -s -s== s== -s s -s s -s s -s== q) (s== -s s -s s== -s s -s== s== -s s -s s -s== q) (s -s== s -s s -s s== -s s -s== q)) ;; as lisp-function ;;;;;;;;;;;;;;;;;;;;;;;;;; (defun append-value (lists value) (loop for i in lists collect (append i (list value)))) (append-value alist 'q) => ((s -s s== -s -s== s== -s s -s s -s s -s== q) (s== -s s -s s== -s s -s== s== -s s -s s -s== q) (s -s== s -s s -s s== -s s -s== q))
-
-
with send-osc-data it don't work, of course... the code before was exactly this ...
#| 1. you need Nik Gaffney's osc package 2. load it |# (load (merge-pathnames "osc.lisp" *load-truename*)) #| 3. define global variable to hold socket, ip-address and port-no |# (defparameter *out-socket* (make-socket :type :datagram)) (defparameter *remote-host* "127.0.0.1") (defparameter *remote-port* 47522) #| 4. define a send function |# (defun udpsend (&rest args) (let ((message (apply' osc::encode-message args))) (send-to *out-socket* message (length message) :remote-host *remote-host* :remote-port *remote-port*))) ;; send (progn (udpsend "/beat" "defer" 0 "duration" 1 "pattern" 12) (udpsend "/beat" "defer" 1 "duration" 1 "pattern" 22) (udpsend "/beat" "defer" 2 "duration" 1 "pattern" 22) (udpsend "/beat" "defer" 3 "duration" 1 "pattern" 21))
The Event System — Polytempo Documentation
POLYTEMPO.ZHDK.CHensembles performed several concerts with it, so it worked 🙂
-
Can i retrieve midi from the notation viewer and save as midi from it ?
in Support & Troubleshooting
if i understand you correctly....
you could COMPILE the score - and with :next-index t - you can keep all the versions
(compile-score 'myscore :file "My Score" :new-index t)
"If :new-index is including as an argument the composer is able to collect as saved named incremented files compilation after compilation. This can be invaluable if the score has lots of randomised possibilities that need to be explored and compared to find the 'best version'."