Jump to content

AM

Members
  • Posts

    816
  • Joined

  • Last visited

Everything posted by AM

  1. 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)
  2. (loop for i from 100 to 900 by 100 collect i)
  3. janusz's work and support, bravo!!
  4. 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)
  5. 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
  6. 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)
  7. 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...
  8. 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é
  9. test/evaluate it again... my output is => (-15/16 15/32 1/32 1/32 1/32 61/32 1/32 1/2 1/32 -5/32 -1/32 13/16 -17/32 3/2 9/16 -7/16) so it's correct
  10. (setf alist '(1/4 1/4 1/8 1/8 1/4 1/4)) (setf n 3) (length-invert '(1/4 1/4 1/8 1/8 1/4 1/4) :section (rnd-sample n (gen-integer 0 (1- (length alist))) :norep t))
  11. it's very lispian yes, it works also by (mapcar...)
  12. i checked it quickly: when you replace the 3h - for example - by h => then i get NO ERRORS
  13. 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))
  14. i would like to use the FULL possibilites of OSC, the basic-structure to send data
  15. 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
  16. 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)...
  17. 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
  18. 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
  19. 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é
  20. 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!!)
  21. 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")
  22. great, i will test it today!!
  23. dear ldbeth thanks for the solution - that's great! all the best andré
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy