-
Posts
816 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything 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)
-
(loop for i from 100 to 900 by 100 collect i)
-
janusz's work and support, bravo!!
-
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)
-
i know. but the question is/was, how it could work without eval each time. i would like to put my function in my library, so "EVAL again" is not a solution - that's the idea of DEFUN
-
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é
-
welcome
- 3 replies
-
- gen-fragment
- orchestra
-
(and 3 more)
Tagged with:
-
it's very lispian yes, it works also by (mapcar...)
-
i checked it quickly: when you replace the 3h - for example - by h => then i get NO ERRORS
- 3 replies
-
- gen-fragment
- orchestra
-
(and 3 more)
Tagged with:
-
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))
-
i would like to use the FULL possibilites of OSC, the basic-structure to send data
-
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.CH ensembles performed several concerts with it, so it worked
-
A good idea, actually But first I ask my colleague at the ICST-ZHDK (Zurich). He programmed me the last OSC setup, maybe he will find a solution without (make-socket)...
-
but: some other "receiver" then REAKTOR need other DATA-formats, that's the thing, i think... and with (send-osc-data) i didn't find a solution for that.... see post... or... and with (MAKE-SOCKET... ) it was possible
-
it's seems so, at the moment all my OSC projects are not workiing with 3.0 (polytempo/max-player)... the (make-socket) seems to be the problem in lispworks
-
thx for your work - but the ports are always changed to "internal" - but you don't have to try any further, the (score player)-function (OPMO) has the same problem, will certainly be "repaired" sometime... greetings andré
-
thanx, that's great!!!.... there is only one problem (but you don't have to solve it for me): the port/channel-settings are deleted so only the internal midiplayer is playing, and no other midi-destinations via preseted port/channels (in the midi-file) are possible...? (i'm working on a generative-live-scoring project (open forms) and with OPMO i can generate/simulate different generative-grammars of my "musical material" (organzied/read as/from an array). so your solution would be very practical to develop and test the "form-grammar" of the work - THANX!!)
-
this works fine, very useful for me! do you know how to read/play thus from an existing midi-library - with a path, like, perhaps (push-to-list "/Users/..../Opusmodus/Media/MIDI/Meier/50.mid")
-
great, i will test it today!!
-
dear ldbeth thanks for the solution - that's great! all the best andré