Jump to content


  • Content Count

  • Joined

  • Last visited


About AM

  • Rank
    Senior Member

Profile Information

  • Gender

Recent Profile Visitors

2,253 profile views
  1. a sketch... ;;; EXPAND/COMPRESS the intervals of a melody inside a pitchfield or tonality ;;; please evaluate the example and have a look to the contours ;;; subfunction (defun position-items (items alist) (loop for item in items append (position-item item alist))) ;;; function (defun compr/expand-melody (melody field &key (type 'add) (n 1)) (let* ((ints (loop for i in (difference (position-items (pitch-to-midi melody) (pitch-to-midi field))) collect (cond ((equal type 'add) (cond ((<= i -1) (- i n)) ((>= i 1) (+ i n)) (t i))) ((equal type 'factor) (cond ((or (< i -1) (> i 1)) (* i n)) (t i))))))) (position-filter (interval-to-integer ints :start (car (position-items melody field))) field))) ;;; expand 1 (progn (setf seed (random 100)) (pitch-list-plot (list (compr/expand-melody (rnd-sample 6 (gen-sieve '(c4 c6) '(2 1) :type :pitch) :seed seed) (gen-sieve '(c2 c9) '(2 1) :type :pitch) :type 'add :n 2) (compr/expand-melody (rnd-sample 6 (gen-sieve '(c4 c6) '(2 1) :type :pitch) :seed seed) (gen-sieve '(c2 c9) '(2 1) :type :pitch) :type 'add :n 5) (rnd-sample 6 (gen-sieve '(c4 c6) '(2 1) :type :pitch) :seed seed)) :join-points t)) ;;; compress (progn (setf seed (random 100)) (pitch-list-plot (list (compr/expand-melody (rnd-sample 6 (gen-sieve '(c4 c6) '(2 1) :type :pitch) :seed seed) (gen-sieve '(c2 c9) '(2 1) :type :pitch) :type 'add :n -2) (compr/expand-melody (rnd-sample 6 (gen-sieve '(c4 c6) '(2 1) :type :pitch) :seed seed) (gen-sieve '(c2 c9) '(2 1) :type :pitch) :type 'add :n -1) (rnd-sample 6 (gen-sieve '(c4 c6) '(2 1) :type :pitch) :seed seed)) :join-points t)) ;;; expand 2 (progn (setf seed (random 100)) (pitch-list-plot (list (compr/expand-melody (rnd-sample 6 (gen-sieve '(c5 c6) '(2 1) :type :pitch) :seed seed) (gen-sieve '(c1 c9) '(2 1) :type :pitch) :type 'factor :n 2) (rnd-sample 6 (gen-sieve '(c5 c6) '(2 1) :type :pitch) :seed seed)) :join-points t)) ;;; expand 3 (progn (setf seed (random 100)) (pitch-list-plot (list (compr/expand-melody (rnd-sample 11 (gen-sieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gen-sieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 2) (compr/expand-melody (rnd-sample 11 (gen-sieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gen-sieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 3) (compr/expand-melody (rnd-sample 11 (gen-sieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gen-sieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 5) (compr/expand-melody (rnd-sample 11 (gen-sieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gen-sieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 7) (rnd-sample 11 (gen-sieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed)) :join-points t)) some evaluations -> different melodic contours (rnd / in a sieve) and its expansions Bildschirmaufnahme 2019-05-25 um 22.49.52.mov Bildschirmaufnahme 2019-05-25 um 23.14.57.mov
  2. AM

    maxmsp and lisp?

    yesterday we tried to implement/start maxlispj on MAX 8 http://sites.music.columbia.edu/brad/maxlispj/ maxlispj is from 2011, it works more or less in MAX 8 / MOJAVE, but not stable enough. perhaps there will a be some better solutiuons in the future... greetings andré
  3. AM

    maxmsp and lisp?

    Clozure CL => the new COMMON LISP version works with MOJAVE now have a look at apple's appstore
  4. dear all conTimbre-library works (in the next update) perfect with TUNING (midi-pitchbend) and PAN now. thanx to thomas hummel and janusz! here are some simple sound examples... ct-micro+pan2.aiff ct-micro+pan3.aiff ct-micro+pan.aiff ct-micro+pan4.aiff
  5. "then there is a bug in conTimbre midi listener"... okay i will tell thomas hummel thanks
  6. dear all is there a possibility to change the PAN in every EVENT? 1) like '((q c4 mp pan-30) (e c3 pp pan100)) would be interesting for LIVE-CODING is there something predifined? like it will come up with microtonality/tuning 2) and why does it work with simple-midi-sound (a list in :pan) and not with a player like conTimbre (there is something i don't understand with midi/players/etc)? thanx for a hint andré an example: (setf omn '((5q c4 5q 5q 5q 5q 5q 5q 5q) (-q) (e e e e e) (-q) (7q 7q) (3q 3q) (-q) (5q 5q 5q) (7q 7q) (3q 3q 3q 3q) (e e) (-q) (3q 3q 3q 3q 3q) (e e e e e))) ;;; (def-score signature (:title "signature" :key-signature 'atonal :time-signature '(4 4) :tempo 60) (instr ;:port 0 :omn (omn-replace :velocity (pick-norepeat 100 '(pppp ppppp ppp ppp pp p)) (length-diminution 4 (gen-repeat 10 omn))) :tuning (gen-white-noise 100 :scale 0.1) :pan '(1 1 1 1 1 1 1 1 10 30 1 1 1 100 100 80 77 15 100 100 100) :channel 1 :sound 'gm-trumpet))
  7. I got a trial version of the new conTimbre-player-maxpatch (from thomas hummel), now the opusmodus-tuning also works well in conTimbre. I think it will be in the next update ... ...i like it more in cents then in float... (defun cents-to-tuning (centlist) (a*x 0.01 centlist)) (cents-to-tuning '(-14 +50 5)) => (-0.14 0.5 0.049999997)
  8. (ambitus-octaves 'c3 2 (closest-path '(b3eb5g3 cs6e7gs3 b4f5g6 f7e5c2 d4f7e4 gs7e2a8))) => (g3b3eb4 gs3cs4e4 b3g3f4 c4f3e4 d4e4f3 e4gs3a3) or you could put this two FUNCTIONS into ONE => (closest-path*... just take all the values/arguments from the basic version and add the octave-thing? greetings andré
  9. i already did that (defun add-rnd-dust (omnseq &key (span '(0.1)) (seed nil) (quantize '(1 2 3 4 5 6 7 8 9)) (scale 1.0) (tolerance 0.05)) (let ((rhy (omn :length omnseq)) (sp)) (progn (setf rhy (loop with cnt = 0 for i in rhy do (setf sp (nth cnt span)) when (not (null seed)) do (incf seed) when (> i 0) collect (+ i (car (rnd-number 1 0.0 (* i sp) :seed seed))) else collect (- i (car (rnd-number 1 0.0 (* i sp) :seed seed))) when (< cnt (1- (length span))) do (incf cnt))) (make-omn :length (quantize (float-to-ratio rhy :ratio 1/1) quantize :scale scale :tolerance tolerance) :pitch (omn :pitch omnseq) :velocity (omn :velocity omnseq) :articulation (omn :articulation omnseq)))))
  10. an example: this is the BASIC-version (without "dust"): all mapped in 1/32 - retrograde sorting processes (with GEN-SORT): pitch-process from chromatic to 12tone-row (by sort) and from sorted length-values (all 1/32, then all 1/16 etc... to more complex/mixed pattern (by sort)) with this setup: the result with some "dust": if you you have a look to the span-list above (compare with the new score) you will see: no change at the beginning, then more and more randomized (or made flexible).
  11. @janusz: if you try the function a few times (without seed) , you will see (by cmd1), that sometimes the last TIE isn't there. i think QUANTIZE is doing this little bug... (but perhaps only a xml-display-thing?)
  12. ;;; ADD-RND-DUST TO LENGTHS ;;; this function adding RANDOMLY some "dust" to the LENGTHS, so it will be like a little rubato, ;;; or "humanizing"-effect. the ADD-SPAN is in percent (0.1 = 10%) on each length-value. (defun add-rnd-dust (omnseq &key (span '(0.1)) (seed nil) (quantize '(1 2 3 4 5 6 7 8 9))) (let ((rhy (omn :length omnseq)) (sp)) (progn (setf rhy (loop with cnt = 0 for i in rhy do (setf sp (nth cnt span)) when (not (null seed)) do (incf seed) when (> i 0) collect (+ i (car (rnd-number 1 0.0 (* i sp) :seed seed))) else collect (- i (car (rnd-number 1 0.0 (* i sp) :seed seed))) when (< cnt (1- (length span))) do (incf cnt))) (make-omn :length (quantize (float-to-ratio rhy :ratio 1/1) quantize) :pitch (omn :pitch omnseq) :velocity (omn :velocity omnseq) :articulation (omn :articulation omnseq))))) ;;; EXAMPLE (add-rnd-dust '(h c3 h. d3 -h q. f3 q g3) :span '(0.5 0.3 0.2 0.1) :quantize '(1 2 3 4 8) :seed 123) => (ht c3 h.s. d3 -e -q -t e.._3h f3 3q_q g3) (add-rnd-dust '(q c3 q d3 q e3 q f3 q g3) ;;possible add-span per value (1 = 100% of the value, 0.5 = 50% etc.) ;;if it's a list, it will stay on the last value of the span-list :span '(0.4 0.3 0 0 2) ;;how to quantize new lengths :quantize '(1 2 4 8) :seed 123) => (q c3 qt d3 q e3 f3 hs. g3) (add-rnd-dust '(h c3 h. d3 h e3 q. f3 q g3) :span '(0.5) ;; = every value max-add 50% :quantize '(1 2 3 4 8) :seed 2999) => (hs. c3 wt d3 3w.e e3 3wq. f3 q g3) (add-rnd-dust '(q c3 q d3 q e3 q f3 q g3) :span '(0.4 0.3 0 0 2) :quantize '(1 2 4 8) :seed 1111) => (qt c3 qs d3 q e3 f3 q... g3) (add-rnd-dust '(h c3 h d3 h e3 h f3 h g3) :span '(0.3 0.2 0.1 0 0.2) :quantize '(1 2 4 3 5) :seed 2999) => (5dh. c3 5dhq. d3 h e3 f3 he g3)
  13. AM

    maxmsp and lisp?

    the only problem seems to be, that it only works with CCL 1.12 on mojave... but this is not the official actual version in apple's appstore. so it don't work with 1.11.... does anyone know how to fix this problem?
  14. AM

    maxmsp and lisp?

    dear all does anyone have experience with an implementation of LISP in maxmsp? i'm looking for: "Max handling real time input, output, timing and control, letting Lisp handle variable handling and of course the processing of large amounts of data" does anyone tested this? https://github.com/thealexgraham/lisper/blob/master/README.md https://cycling74.com thanx for a hint andré
  15. "My focus is on the ever-changing relationship that composers have with rules and procedures." some ideas/names...? => MOZART https://en.wikipedia.org/wiki/Musikalisches_Würfelspiel => the LIGETI-analysis of BOULEZ's STRUCTURES ? => MESSIAEN in general: https://monoskop.org/File:Messiaen_Olivier_The_Technique_of_My_Musical_Language.pdf, or specific "MODE DE VALEURS ET D'INTENSITÉS" => GOTTFRIED MICHAEL KöNIG => XENAKIS (the "ST"-pieces?) => HAUER https://de.wikipedia.org/wiki/Zwölftonspiel
  • Create New...